Progettare un tipo monadico
-
15-11-2019 - |
Domanda
Avrei bisogno di aiuto per progettare un tipo di dati monadi, mi sembra di avere difficoltà a avvolgermi la testa intorno all'idea, ma ho sicuramente sicuramente sapere cosa voglio.Solo il tipo di controllo sembra richiedere un po 'di persuasione in quella materia.
Quello che voglio è un po 'di datatipo Primitive
che può essere una monaca.Le funzioni di ciò sono fondamentalmente disegnando primitivi, e voglio essere in grado di combinarli e anche le combinazioni sono anche i primitivi, proprio come il tipo di Parser
in Libreria parsec
.Ma il disegno effettivo deve essere fatto con una monada IO
.
Per inciso, ho anche un Drawable a
di classe come questo:
class Drawable a where
draw :: (MonadIO m) => Pos -> a -> m ()
.
E voglio che ogni primitivo naturalmente sia disegnabile.Sono grato per qualsiasi input.
Soluzione
I don't understand why you think this should be a monad. What's monadic about it?
You should design the API you want first, and incrementally think about how to abstract it.
Incidentally, Brent's diagrams library has a very nice compositional API that could provide some good ideas: http://byorgey.wordpress.com/2008/04/30/new-haskell-diagrams-library/