Проектирование монадического типа - PullRequest
2 голосов
/ 18 февраля 2011

Мне нужна помощь в разработке монадического типа данных, мне кажется, что мне сложно обдумать эту идею, но я довольно точно знаю, чего хочу.Похоже, что только проверка типов требует некоторого убеждения.

Мне нужен какой-то тип данных Primitive, который может быть монадой.Функции этого - в основном рисование примитивов, и я хочу иметь возможность комбинировать их и комбинации, являющиеся примитивами, так же, как тип Parser в библиотеке parsec.Но фактический рисунок должен быть сделан с IO монадой.

Кстати, у меня также есть класс Drawable a, подобный этому:

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

И я хочу, чтобы каждый Примитив конечнобыть нарисованным.Я благодарен за любой вклад.

1 Ответ

5 голосов
/ 18 февраля 2011

Я не понимаю, почему вы думаете, что это должна быть монада. Что в этом монадического?

Сначала вы должны разработать API-интерфейс, который вам нужен, и постепенно придумывать, как его абстрагировать.

Кстати, библиотека диаграмм Брента имеет очень хороший композиционный API, который может дать несколько хороших идей: http://byorgey.wordpress.com/2008/04/30/new-haskell-diagrams-library/

...