Мне нужна помощь в разработке монадического типа данных, мне кажется, что мне сложно обдумать эту идею, но я довольно точно знаю, чего хочу.Похоже, что только проверка типов требует некоторого убеждения.
Мне нужен какой-то тип данных Primitive
, который может быть монадой.Функции этого - в основном рисование примитивов, и я хочу иметь возможность комбинировать их и комбинации, являющиеся примитивами, так же, как тип Parser
в библиотеке parsec
.Но фактический рисунок должен быть сделан с IO
монадой.
Кстати, у меня также есть класс Drawable a
, подобный этому:
class Drawable a where
draw :: (MonadIO m) => Pos -> a -> m ()
И я хочу, чтобы каждый Примитив конечнобыть нарисованным.Я благодарен за любой вклад.