2

引数を取らないシグニチャで関数を宣言するにはどうすればよいですか?

私は次のような引数を持つ関数シグネチャを見ただけです:leq:item*item->bool そして私は次のような関数のシグネチャを作成しようとしています:

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

これは機能しません:val initBTree:->tree

4

2 に答える 2

7

次のように、パラメータとして単位をとる関数を作成できます。

fun initBTree () = E

そしてそれをこのように呼んでください:

initBTree ()

タイプがあります

fn : unit -> tree

Eタイプがある場合tree

しかし、それはちょっと無意味です。と言うEか、本当にinitBTreeと呼ばれるようにしたい場合は次のようにします。

val initBTree = E
于 2013-02-05T16:19:29.817 に答える
1

ご存知かもしれませんが、SMLのすべての関数は正確に1つの引数を取ります。したがって、引数をとらない関数を作成することは不可能です。そのような「もの」は実際には単なる値であるためです。

あなたのコード

val initBTree : -> tree

まったく意味がありません。空のツリーである値コンストラクターがあると言う場合E、ツリーを初期化しないinit関数を作成しないのはなぜですか?その場合initBTree、の同義語にEなり、あなたはすることができます

val initBTree = E

しかし、これはまだ無意味です。

于 2013-02-05T12:43:55.457 に答える