2013-02-14 57 views
0

對於我的任務,我必須做的兩個功能與類型:(sml/nj)正確的類型?

wt: trie -> (char list list -> ’a)-> ’a 
aw: trie list -> (char list list -> ’a)-> ’a 

但我已經是這一點,不知道是否是同樣的事情:

wt: 'a trie -> ('a list list -> ’a list list)-> ’a list list 
aw: 'a trie list -> ('a list list -> ’a list list)-> ’a list list 

這是我的功能:

datatype ’a trie = Node of ’a * (’a trie) list | Empty 

fun words_in_trie Empty cont = cont [[]] 
    | words_in_trie (Node (c, lis)) cont = all_words lis (fn j => map (fn y => [c]@y) j) 

回答

1

不,這些不一樣。對於他們每個人,看看第二個參數,即函數。你的任務說:

char list list -> 'a 

您的版本說:

'a list list -> ’a list list 

好了,讓我們假設你的功能,'achar。這意味着我們可以將其重寫爲

char list list -> char list list 

這與作業所說的不同。當然,作業中的'a理論上可以是,但是當它被指定爲'a時,這可能意味着您的教師希望它是通用的。