smlで辞書を作成する必要がありますが、挿入機能に非常に苦労しています。
type dict = string -> int option
例として、空の辞書を次に示します。
val empty : dict = fn key => NONE
挿入関数の実装は次のとおりです。
fun insert (key,value) d = fn d => fn key => value
しかし、これは間違ったタイプです。必要なのは挿入です:(string * int)->dict->dict。怠惰な関数から辞書の実装まで、あらゆるものを検索しました。どんな助けや指示も大歓迎です!
私が実装しようとしていることについてまだ混乱している場合は、単純なルックアップ関数を呼び出すときに何が得られるかを作成しました。
fun lookup k d = d k
- val d = insert ("foo",2) (insert ("bar",3) empty);
val d = fn : string -> int option
- lookup2 "foo" d;
val it = SOME 2 : int option
- lookup2 "bar" d;
val it = SOME 3 : int option
- lookup2 "baz" d;
val it = NONE : int option