如何在签名中声明一个不带参数的函数?
我只看到过这样的参数的函数签名:leq:item*item->bool
我希望为这样的函数创建一个签名:
initBTree = E (* where empty is of type tree *)
这不起作用:val initBTree:->tree
答案 0 :(得分:5)
你可以创建一个以unit为参数的函数,如下所示:
fun initBTree () = E
并称之为:
initBTree ()
它有类型
fn : unit -> tree
如果E
的类型为tree
。
E
,或者如果您真的希望它被称为initBTree:
val initBTree = E
答案 1 :(得分:1)
您可能知道SML中的所有函数只需要一个参数。因此创建一个不带参数的函数是不可能的,因为这样的“事物”实际上只是一个值。
您的代码
val initBTree : -> tree
绝对没有意义。如果你说你有一个值构造函数E
这是空树,为什么你不想创建一个不用任何东西初始化树的init函数?在这种情况下,initBTree
将是E
的同义词,您可以
val initBTree = E
然而,这仍然毫无意义。