packages feed

impl-0.2.0.0: example/Monad/Foo.hs

module Monad.Foo where
import Monad.Impl

data Foo a = Foo a

impl @Monad [t|Foo|]
  $$ #return [|Foo|]
  $$ #bind   [|\(Foo a) f -> f a|]
  $$ #fmap   [|\f (Foo a) -> Foo (f a)|]
  $$ defaults