2017-06-05 7 views
0

Real World OCamlという本からいくつかのコードを実行するのに問題があります。コードスニペットはgithubです。特に、私は、ライン6上のタイプのエラーを取得しています:OCaml Core List.Assoc.find

List.Assoc.find counts line

私はOCamlの4.04.1を使用していますとutopによれば、List.Assoc.findの型シグネチャがある:

('a, 'b) List.Assoc.t -> equal:('a -> 'a -> bool) -> 'a -> 'b option = <fun

上のコードスニペットにない省略可能なパラメータequalに注目してください。しかし、List.Assoc.findの最新の(2017年6月現在)documentationによれば、equalのパラメータはオプションです。

equalパラメータの目的は何ですか?

答えて

3

この関数は、最初の要素が指定した値と等しいペアを検索します。等しい要素が見つからない場合はSome (snd pair)またはNoneを返します。 equalパラメータを使用すると、組み込みの=が必要ない場合のために、等価の定義を指定できます。

私は現在、OCaml 4.03.0を使用しており、OPAMでコアをインストールしました。 equalパラメータは私のためのオプションです:

# List.Assoc.find;; 
- : ('a, 'b) Core.Std.List.Assoc.t -> 
    ?equal:('a -> 'a -> bool) -> 'a -> 'b option 
+1

このコードは、私の作品: は '聞かせASSOC = [( "1"、1); ( "two"、2); ( "three"、3)] ;; ' 'List.Assoc.find assoc" two "〜equal:(=);;' –