module Wumpus.Basic.Monads.Drawing
(
MGraphicF
, traceG
, node
, at
) where
import Wumpus.Basic.Graphic
import Wumpus.Basic.Monads.TraceClass
import Wumpus.Basic.Monads.TurtleClass
import Wumpus.Core
type MGraphicF m u a = Point2 u -> m a
traceG :: (Monad m, TraceM m (Primitive u)) => GraphicF u -> MGraphicF m u ()
traceG fn = \pt -> trace (fn pt)
node :: (TraceM m (Primitive u), TurtleScaleM m u, Num u)
=> MGraphicF m u a -> m a
node mgF = getPos >>= \pt -> mgF pt
infixr 6 `at`
at :: (Num u, TraceM m (Primitive u), TurtleScaleM m u)
=> MGraphicF m u a -> (Int,Int) -> m a
at mgF coord = scaleCoord coord >>= \pt -> mgF pt