Function 如何在SML'中编写多条指令;函数的定义

Function 如何在SML'中编写多条指令;函数的定义,function,sml,towers-of-hanoi,Function,Sml,Towers Of Hanoi,我想通过SML运行Hanoi算法,因此我使用了以下类似C的代码: fun Hanoi 1 source dest by = print ("Move the plate from"^source^"to"^dest^"/n") | n source dest by = Hanoi n-1 source by dest print ("Move the plate from"^^source^^"to"^^dest^^"/n") Hanoi n-1 by dest source

我想通过SML运行Hanoi算法,因此我使用了以下类似C的代码:

fun Hanoi 1 source dest by = print ("Move the plate from"^source^"to"^dest^"/n")
| n source dest by = Hanoi n-1 source by dest 
    print ("Move the plate from"^^source^^"to"^^dest^^"/n")
    Hanoi n-1 by dest source
这个代码有点问题。我的猜测是,我没有正确地编写算法的n个案例,因为它有多个指令。 无论如何,我非常感谢你的帮助。 如果可以的话,请理解我是一个完全业余的ML编码器,这意味着我对它的工作原理知之甚少。

ML中没有“指令”,只有表达式。分号运算符允许按顺序计算多个表达式。这应包括:

fun hanoi 1 source dest by =
    print ("Move the plate from"^source^"to"^dest^"/n")
  | hanoi n source dest by =
    (hanoi (n-1) source by dest;
     print ("Move the plate from"^source^"to"^dest^"/n");
     hanoi (n-1) by dest source)
请注意,您需要在括号中插入分号的用法。您还需要在
n-1
周围使用paren,因为中缀运算符的优先级低于函数应用程序