2004-05-23 [長年日記]
λ. "Restricted Datatypes in Haskell", John Hughes (Chalmers University, Sweden)
を読んだ。ここで提案している拡張では、「datatype Eq a => Set a = ...
」という型があったときに、「member :: wft (Set a) => a -> Set a -> Bool
」のようにwft(well-formed type)を文脈に書くことによって、Set a
が制約を満たして構成された型であること(この場合 Eq a
であることを意味する)を書く。直感的にはこのwftは不要なように思えるが、確かに無くせないんだよなぁ。うーむ。
それと、ここで書かれている constructor-polymorphic がどういうものなのか良くわからなかった。
【2006-03-26 追記】 constructor-polymorphic は単に型構築子に関して多相的ってだけで、特別な意味はないか。何でこんなのが理解できなかったのか不思議。それはそうと、restricted data types は haskell-prime でも議論されていた(1,2,3)。その中に出てきた Restricted Data Types Now が技巧的でちょっと面白かった。