Types (sml/nj)正确的类型?
对于我的作业,我必须对类型执行两个功能:Types (sml/nj)正确的类型?,types,functional-programming,sml,Types,Functional Programming,Sml,对于我的作业,我必须对类型执行两个功能: 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 l
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)
不,那些不一样。对于它们中的每一个,请查看第二个参数,即函数。你的任务是:
char list list -> 'a
你的说法是:
'a list list -> ’a list list
好的,让我们假设在函数中,'a
是char
。这意味着我们可以把它改写成
char list list -> char list list
这和作业上说的不一样。当然,作业中的'a
理论上可以是字符列表
,但当它被指定为'a
时,这可能意味着您的老师希望它是通用的