如何在不帶參數的簽名中聲明函數?不帶參數的函數聲明
我只看到函數簽名與參數如下:leq:item*item->bool
,我期待創造這樣的函數簽名:
initBTree = E (* where empty is of type tree *)
這不起作用:val initBTree:->tree
如何在不帶參數的簽名中聲明函數?不帶參數的函數聲明
我只看到函數簽名與參數如下:leq:item*item->bool
,我期待創造這樣的函數簽名:
initBTree = E (* where empty is of type tree *)
這不起作用:val initBTree:->tree
你可以讓一個函數,單位作爲它的參數,如:
fun initBTree() = E
,並調用它是這樣的:
initBTree()
它鍵入
fn : unit -> tree
如果E
有tree
。
雖然這沒什麼意義。你還不如干脆說E
,或者如果你真的希望它被稱爲initBTree:
val initBTree = E
由於你可能知道SML中的所有函數都只有一個參數。因此,創建一個不需要參數的函數是不可能的,因爲這樣的「事物」實際上只是一個值。
您的代碼
val initBTree : -> tree
使得完全沒有意義的。如果你說你有一個值爲空構造的值構造函數E
,爲什麼你不想創建一個初始化函數,它不會用任何東西來初始化樹?在這種情況下initBTree
將是E
的代名詞,你可以做
val initBTree = E
然而,這仍然是毫無意義的。
你可能wan't闡述你的問題有點。它沒有任何意義。可能添加一些真實的代碼。 –