以下代碼顯示b在打開A後由A.b覆蓋。但是,A.b和B.b具有差異簽名,A.b取整數參數,而B.b取一個浮點參數。他們不應該互相重疊,是嗎?OCaml函數名稱collison在兩個模塊之間
# module A=struct let b x = x*10 end;;
module A : sig val b : int -> int end
# module B=struct let b x =x*. 3.14159 end ;;
module B : sig val b : float -> float end
# open B;;
# open A;;
# b 10;;
- : int = 100
# b 10.;;
Error: This expression has type float but an expression was expected of type
int
#
是什麼讓你覺得它不是「正確的」? – ygrek