07/04/06 21:45:35
>>323
存在量化(existential quantification)を使わない方法。
data Animal = Animal { animalCall :: String }
dog :: Animal
dog = Animal { animalCall = "bowwow" }
sparrow :: Animal
sparrow = Animal { animalCall = "cheep" }
animals :: [Animal]
animals = [sparrow, dog, sparrow]
main = mapM_ (putStrLn . animalCall) animals
クラス階層が必要ないなら、こっちが扱いやすいと思う。