모나드 데이터 타입을 디자인하는 데 약간의 도움이 필요할 것입니다. 아이디어에 머리를 감싸는 데 어려움이있는 것 같지만, 원하는 것을 확실히 알고 있습니다. 그 유형 검사관 만이 그 문제에 대해 어떤 설득을 요구합니다.모나 딕 (monadic) 타입 디자인하기
내가 원하는 것은 모나드가 될 수있는 데이터 유형 Primitive
입니다. 그 함수는 기본적으로 드로잉 프리미티브이며, parsec
라이브러리의 Parser
유형과 마찬가지로 프리미티브가되는 조합과 조합을 결합 할 수 있기를 원합니다. 그러나 실제 드로잉은 IO
모나드로 수행되어야합니다.
는 덧붙여, 나는 또한이 같은 클래스 Drawable a
있습니다
class Drawable a where
draw :: (MonadIO m) => Pos -> a -> m()
그리고 당김 수 물론 모든 원시를 원한다. 모든 입력에 감사드립니다.
http://lukepalmer.wordpress.com/2008/07/18/semantic-design/ 주소이 :
덧붙여, 브렌트의 다이어그램 라이브러리는 좋은 아이디어를 제공 할 수있는 아주 좋은 작곡 API가 있습니다. – Peaker
+1 Peaker. 최고 기사. – identity
'draw' 메소드는 실제로 나에게 의미가 없습니다. 대신이 형식 시그니처 인'draw :: Pos -> a -> IO()'를 선택하겠습니다. 왜 유닛을 제외한 모든 것을 반환 할 것인가 ... 그냥 출력 함수가 아닌가? –