Concurrent Clean : サブタイピング
Cleanには、レコード型のサブタイピングがない。というか、サブタイピングそのものがないんだっけ?型クラスのサブタイピングはある。
下のような、直感的には書けて欲しいプログラムがコンパイルエラーになる。
::A = {a :: Int ,b :: String} ::B = {a :: Int ,c :: Real} Start = (f {a = 1, b = "abc"} ,f {a = 2, c = 2.3}) f {a} = a
サブタイピングがないので、fの型を推論できないのだ。
時々不便に思うのだけれど。