내가 그런목록
data A = A { a:: String } deriving (Show)
data B = B { b:: String } deriving (Show)
어떤 종류의 클래스로, 레코드 집합을 말해봐
class Foo a where
foo :: a -> IO()
instance Foo A where
foo c = ...
그리고 나는 또한
bar = do
push (A {a="x"})
push (B {b="y"})
그런 짓을 할
그리고 이런 일들이 나중에 실행될 수있는 어딘가에있는 목록으로 끝나도록
map foo l
래퍼 유형을 생성하고 인스턴스가 파생되도록 템플릿 haskell을 작성해야 목록이 래퍼 유형이 될 수 있습니까? 이것에 대해 더 지혜로운 방법이 있습니까? 나는 솔직히 haskell 타입 시스템에 의해 꽤 고정되어 있다고 느끼고 있고, 이것을하기위한 더 좋은 방법이 있어야한다는 것을 알고있다.
도 참조 [자주 묻는 질문 항목 (http://www.haskell.org/haskellwiki/FAQ#I.27m_making_an_RPG._Should_I_define_a_type_for_each_kind_of_monster.2C_and_a_type_class_for_them.3F)이에, 그리고 [이에 링크 기사 (http://lukepalmer.wordpress.com/2010/01/24/haskell-antipattern-existential-typeclass/). – shachaf
그래서'stuffToDo = [foo A, foo B]'또는'stuffToDo = foo A >> foo B'로'stuffToDo :: IO()'에 의해 정의 된'thingsToDo :: [IO()]' – AndrewC