ocamlプロジェクトに取り組んでいるときに、よくわからないものを見つけました。
OCaml 標準ライブラリのArrayとモジュールの両方を使用しているとします。Listどちらも関数を実装していますlengthが、型が異なります。Listモジュールでは、これはそのタイプです:
length: a' list -> int
Arrayモジュールでは、次のタイプがあります。
length: a' array -> int
openしかし、キーワードを使用して、実装していた同じモジュールで両方のモジュールを使用したかったのです。
open List
open Array
リストで関数を使用しようとすると、lengthコンパイル中に型エラーが発生しました。
OCaml は強力な静的型付け言語であるため、両方を使用していると宣言したのに、リスト モジュールの長さ関数が必要であることをコンパイラが認識しなかったのはなぜでしょうか。