2013-02-05 168 views
1

如何在不帶參數的簽名中聲明函數?不帶參數的函數聲明

我只看到函數簽名與參數如下:leq:item*item->bool ,我期待創造這樣的函數簽名:

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

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

+0

你可能wan't闡述你的問題有點。它沒有任何意義。可能添加一些真實的代碼。 –

回答

5

你可以讓一個函數,單位作爲它的參數,如:

fun initBTree() = E 

,並調用它是這樣的:

initBTree() 

它鍵入

fn : unit -> tree 

如果Etree

雖然這沒什麼意義。你還不如干脆說E,或者如果你真的希望它被稱爲initBTree:

val initBTree = E 
1

由於你可能知道SML中的所有函數都只有一個參數。因此,創建一個不需要參數的函數是不可能的,因爲這樣的「事物」實際上只是一個值。

您的代碼

val initBTree : -> tree 

使得完全沒有意義的。如果你說你有一個值爲空構造的值構造函數E,爲什麼你不想創建一個初始化函數,它不會用任何東西來初始化樹?在這種情況下initBTree將是E的代名詞,你可以做

val initBTree = E 

然而,這仍然是毫無意義的。