没有参数的函数声明

时间:2013-02-05 04:30:27

标签: sml

如何在签名中声明一个不带参数的函数?

我只看到过这样的参数的函数签名:leq:item*item->bool 我希望为这样的函数创建一个签名:

initBTree = E   (* where empty is of type tree *)

这不起作用:val initBTree:->tree

2 个答案:

答案 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

然而,这仍然毫无意义。