2017-10-22 6 views
0

空のリストではないList.max_eltの結果をアンラッピングしようとしていましたが、これは常に存在するはずですから、Option.value_exnが正しいツールだと思いました。しかし、それは奇妙なエラーで失敗します:Option.value_exnを使用しているエラー

# List.range 0 10 |> List.max_elt ~cmp:compare;; 
- : int option = Some 9 

# Option.value_exn (Some 9);; 
- : int = 9 

# List.range 0 10 |> List.max_elt ~cmp:compare |> Option.value_exn;; 
Error: This expression has type 
     ?here:Lexing.position -> 
     ?error:Base.Error.t -> ?message:string -> 'a Base.option -> 'a 
     but an expression was expected of type int option -> 'b 

誰にでも私にこのエラーを説明できますか?

私はOCaml 4.05.0と最新のCoreライブラリを使用しています。

答えて

1

ここでの問題は、何か(私はOption.value_exnと推測しています)がオプションの引数をとることです。 Option.value_exn xと書くと、OCamlはオプションの引数が使われていないことを知っていますが、それをx |> Option.value_exnと書くと、それはありません。

関連する問題