0

私の割り当てでは、次のタイプで2つの機能を実行する必要があります。

 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

いいえ、それらは同じではありません。それぞれについて、2番目のパラメーターである関数を見てください。あなたの割り当ては言う:

char list list -> 'a

あなたのバージョンは言う:

'a list list -> ’a list list

'aさて、あなたの関数で、がであると仮定しましょうchar。つまり、次のように書き直すことができます

char list list -> char list list

これは、割り当ての内容とは異なります。もちろん、'a割り当ての理論的にはである可能性がありますchar list listが、それがとして指定されている場合'a、それはおそらく教師がそれを一般的なものにしたいと思っていることを意味します。

于 2013-02-14T22:43:46.663 に答える