我需要一些帮助来设计一个monadic数据类型,我似乎无法绕过这个想法,但我肯定知道我想要什么。只有类型检查器似乎需要一些说服力。
我想要的是一些可以是monad的数据类型Primitive
。它的功能基本上是绘制图元,我希望能够将它们和组合组合成基元,就像库Parser
中的parsec
类型一样。但实际绘图必须使用IO
monad。
顺便说一句,我还有一个类Drawable a
,如下所示:
class Drawable a where
draw :: (MonadIO m) => Pos -> a -> m ()
我希望每个原始人都可以画画。感谢任何意见。
答案 0 :(得分:5)
我不明白为什么你认为这应该是一个单子。什么是monadic呢?
您应首先设计所需的API,并逐步考虑如何抽象它。
顺便提一下,Brent的图表库有一个非常好的组合API,可以提供一些好主意:http://byorgey.wordpress.com/2008/04/30/new-haskell-diagrams-library/