我需要一些帮助来设计一个单子数据类型,我似乎很难理解这个想法,但我非常清楚我想要什么。在这方面,只有类型检查器似乎需要一些说服力。

我想要的是某种数据类型 Primitive 那可以是一个单子。其功能基本上是绘制基元,我希望能够将它们组合起来,并且组合也是基元,就像 Parser 在库中输入 parsec. 。但实际绘图必须用 IO 单子。

顺便说一句,我也有课 Drawable a 像这样:

class Drawable a where
    draw :: (MonadIO m) => Pos -> a -> m ()

当然,我希望每个 Primitive 都是可绘制的。感谢您的任何意见。

有帮助吗?

解决方案

我不明白为什么你认为这应该是一个单子。它有什么一元的?

你应该先设计你想要的API,然后逐步思考如何抽象它。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top