设计monadic类型

Lan*_*nbo 2 monads haskell combinators

我需要一些帮助来设计一个monadic数据类型,我似乎无法绕过这个想法,但我肯定知道我想要什么.只有类型检查器似乎需要一些说服力.

我想要的是一些Primitive可以是monad的数据类型.它的功能基本上是绘制图元,我希望能够将它们和组合组合成基元,就像Parser库中的类型一样parsec.但实际绘图必须用IOmonad 完成.

顺便说一句,我也有这样一个类Drawable a:

class Drawable a where
    draw :: (MonadIO m) => Pos -> a -> m ()
Run Code Online (Sandbox Code Playgroud)

我希望每个原始人都可以绘制.感谢任何意见.

scl*_*clv 5

我不明白为什么你认为这应该是一个单子.什么是monadic呢?

您应该首先设计您想要的API,并逐步考虑如何抽象它.

顺便提一下,Brent的图表库有一个非常好的组合API,可以提供一些好的想法:http://byorgey.wordpress.com/2008/04/30/new-haskell-diagrams-library/