0

对于我的任务,我必须使用以下类型执行两个功能:

 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)
4

1 回答 1

1

不,那些不一样。对于它们中的每一个,请查看第二个参数,即函数。你的任务说:

char list list -> 'a

你的版本说:

'a list list -> ’a list list

好的,让我们假设在您的函数中,'achar. 这意味着我们可以将其重写为

char list list -> char list list

这与作业所说的不同。当然,'a作业的 理论上可以是 a char list list,但是当它被指定为 时'a,这可能意味着你的老师希望它是通用的。

于 2013-02-14T22:43:46.663 回答