∀(s : Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : s → { state : s, val : a → b })
→ ∀(fa : s → { state : s, val : a })
→ ∀(new : s)
→ { state : s, val : b }
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : s → { state : s, val : a })
→ ∀(k : a → s → { state : s, val : b })
→ ∀(new : s)
→ { state : s, val : b }
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(fa : s → { state : s, val : a })
→ ∀(new : s)
→ { state : s, val : b }
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : s) → { state : s, val : a }
}
∀(s : Type) → ∀(f : s → s) → ∀(new : s) → { state : s, val : {} }
∀(s : Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : s → { state : s, val : a → b })
→ ∀(fa : s → { state : s, val : a })
→ ∀(new : s)
→ { state : s, val : b }
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(fa : s → { state : s, val : a })
→ ∀(new : s)
→ { state : s, val : b }
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : s) → { state : s, val : a }
}
∀(s : Type)
→ ∀(a : Type)
→ ∀(state : s → { state : s, val : a })
→ ∀(env : s)
→ a
∀(s : Type)
→ ∀(a : Type)
→ ∀(state : s → { state : s, val : a })
→ ∀(env : s)
→ s
∀(s : Type) → ∀(a : Type) → Type
λ(s : Type) → λ(a : Type) → s → { state : s, val : a }
∀(s : Type) → ∀(env : s) → { state : s, val : s }
∀(s : Type) → ∀(new : s) → ∀(env : s) → { state : s, val : {} }
∀(s : Type)
→ ∀(a : Type)
→ ∀(f : s → s)
→ ∀(state : s → { state : s, val : a })
→ ∀(new : s)
→ { state : s, val : a }
∀(s : Type) → ∀(a : Type) → ∀(f : s → a) → ∀(new : s) → { state : s, val : a }
∀(s : Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : s → { state : s, val : a → b })
→ ∀(fa : s → { state : s, val : a })
→ ∀(new : s)
→ { state : s, val : b }
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : s → { state : s, val : a })
→ ∀(k : a → s → { state : s, val : b })
→ ∀(new : s)
→ { state : s, val : b }
, eval :
∀(a : Type) → ∀(state : s → { state : s, val : a }) → ∀(env : s) → a
, exec :
∀(a : Type) → ∀(state : s → { state : s, val : a }) → ∀(env : s) → s
, get :
∀(a : Type) → ∀(env : s) → { state : s, val : s }
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(fa : s → { state : s, val : a })
→ ∀(new : s)
→ { state : s, val : b }
, modify :
∀(f : s → s) → ∀(new : s) → { state : s, val : {} }
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : s) → { state : s, val : a }
, put :
∀(new : s) → ∀(env : s) → { state : s, val : {} }
, withState :
∀(a : Type)
→ ∀(f : s → s)
→ ∀(state : s → { state : s, val : a })
→ ∀(new : s)
→ { state : s, val : a }
}
∀(s : Type)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(fa : s → { state : s, val : a })
→ ∀(new : s)
→ { state : s, val : b }
}
∀(f : Type → Type)
→ ∀(g : Type → Type)
→ ∀ ( fApplicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀ ( gApplicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : g (a → b)) → ∀(fa : g@1 a) → g@1 b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : g@1 a) → g@1 b
, pure :
∀(a : Type) → a → g a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : f (g (a → b)))
→ ∀(fa : f (g a))
→ f (g b)
, map :
∀(a : Type) → ∀(b : Type) → ∀(k : a → b) → ∀(fa : f (g a)) → f (g b)
, pure :
∀(a : Type) → ∀(x : a) → f (g a)
}
∀(f : Type → Type)
→ ∀(g : Type → Type)
→ ∀ ( fTraversable
: { fold :
∀(a : Type)
→ ∀(ts : f a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : f (a → b))
→ ∀(fa : f a)
→ f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ (a → f b)
→ f@1 a
→ f (f@1 b)
}
)
→ ∀ ( gTraversable
: { fold :
∀(a : Type)
→ ∀(ts : g a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : g@1 a) → g@1 b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : f (a → b))
→ ∀(fa : f a)
→ f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ (a → f b)
→ g a
→ f (g b)
}
)
→ { fold :
∀(a : Type)
→ ∀(compose : f (g a))
→ ∀(b : Type)
→ ∀(k : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type) → ∀(b : Type) → ∀(k : a → b) → ∀(fa : f (g a)) → f (g b)
, traverse :
∀(fA : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : fA (a → b))
→ ∀(fa : fA a)
→ fA b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : fA a) → fA b
, pure :
∀(a : Type) → a → fA a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → fA b)
→ f (g a)
→ fA (f (g b))
}
∀(f : Type → Type) → ∀(g : Type → Type) → ∀(a : Type) → Type
λ(f : Type → Type) → λ(g : Type → Type) → λ(a : Type) → f (g a)
∀(f : Type → Type)
→ ∀(g : Type → Type)
→ ∀ ( fFunctor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
)
→ ∀ ( gFunctor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : g@1 a) → g@1 b }
)
→ { map : ∀(a : Type) → ∀(b : Type) → ∀(k : a → b) → ∀(fa : f (g a)) → f (g b) }
∀(f : Type → Type)
→ ∀(g : Type → Type)
→ ∀ ( fFoldable
: { fold :
∀(a : Type)
→ ∀(ts : f a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
}
)
→ ∀ ( gFoldable
: { fold :
∀(a : Type)
→ ∀(ts : g a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
}
)
→ { fold :
∀(a : Type)
→ ∀(compose : f (g a))
→ ∀(b : Type)
→ ∀(k : a → b → b)
→ ∀(z : b)
→ b
}
∀(h : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : h a) → h b }
)
→ ∀(f : Type → Type)
→ ∀(g : Type → Type)
→ ∀(join : ∀(b : Type) → h (f b) → g b)
→ ∀(a : Type)
→ ∀(x : h a)
→ ∀(b : Type)
→ ∀(k : a → f b)
→ g b
∀(f : Type → Type) → ∀(g : Type → Type) → ∀(a : Type) → Type
λ(f : Type → Type) → λ(g : Type → Type) → λ(a : Type) → ∀(b : Type) → (a → f b) → g b
∀(f : Type → Type)
→ ∀(g : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(ran : ∀(b : Type) → (a → f b) → g b)
→ g a
∀(f : Type → Type)
→ ∀(g : Type → Type)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(ran : ∀(b : Type) → (a → f b) → g b)
→ ∀(c : Type)
→ ∀(k : b → f c)
→ g c
}
∀(f : Type → Type → Type)
→ ∀ ( dimap
: ∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → b)
→ (c → d)
→ f b c
→ f a d
)
→ { dimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → b)
→ (c → d)
→ f b c
→ f a d
, lmap :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → ∀(fn : a → b) → f b c → f a c
, rmap :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → (b → c) → f a b → f a c
}
∀(f : Type → Type → Type) → Type
λ(f : Type → Type → Type)
→ { dimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → b)
→ (c → d)
→ f b c
→ f a d
, lmap :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → (a → b) → f b c → f a c
, rmap :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → (b → c) → f a b → f a c
}
∀(m : Type) → Type
λ(m : Type) → { op : ∀(x : m) → ∀(y : m) → m }
∀(p : Type → Type → Type)
→ ∀ ( bifunctor
: { bimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → c)
→ (b → d)
→ p a b
→ p c d
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(f : a → c)
→ p a b
→ p c b
∀(p : Type → Type → Type)
→ ∀ ( bifunctor
: { bimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → c)
→ (b → d)
→ p a b
→ p c d
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(d : Type)
→ (b → d)
→ p a b
→ p a d
∀(p : Type → Type → Type) → Type
λ(p : Type → Type → Type)
→ { bimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → c)
→ (b → d)
→ p a b
→ p c d
}
∀(p : Type → Type → Type)
→ ∀ ( bifunctor
: { bimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → c)
→ (b → d)
→ p a b
→ p c d
}
)
→ { bimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → c)
→ (b → d)
→ p a b
→ p c d
, first :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → ∀(f : a → c) → p a b → p c b
, second :
∀(a : Type) → ∀(b : Type) → ∀(d : Type) → (b → d) → p a b → p a d
}
∀(t : (Type → Type) → Type → Type) → Type
λ(t : (Type → Type) → Type → Type)
→ { lift :
∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(a : Type)
→ m a
→ t m a
}
{ ap :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → a → b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : a) → ∀(k : a → b) → b
, map :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → a → b
, pure :
∀(a : Type) → ∀(x : a) → a
}
{ ap :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → a → b
, map :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → a → b
, pure :
∀(a : Type) → ∀(x : a) → a
}
∀(a : Type) → Type
λ(a : Type) → a
{ duplicate :
∀(a : Type) → ∀(x : a) → a
, extend :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → ∀(x : a) → b
, extract :
∀(a : Type) → ∀(x : a) → a
, map :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → ∀(x : a) → b
}
{ map : ∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → a → b }
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : s → m { state : s, val : a → b })
→ ∀(fa : s → m { state : s, val : a })
→ ∀(new : s)
→ m { state : s, val : b }
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : s → m { state : s, val : a })
→ ∀(k : a → s → m { state : s, val : b })
→ ∀(new : s)
→ m { state : s, val : b }
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(fa : s → m { state : s, val : a })
→ ∀(new : s)
→ m { state : s, val : b }
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : s) → m { state : s, val : a }
}
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(f : s → s)
→ ∀(new : s)
→ m { state : s, val : {} }
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : s → m { state : s, val : a → b })
→ ∀(fa : s → m { state : s, val : a })
→ ∀(new : s)
→ m { state : s, val : b }
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(fa : s → m { state : s, val : a })
→ ∀(new : s)
→ m { state : s, val : b }
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : s) → m { state : s, val : a }
}
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(a : Type)
→ ∀(state : s → m { state : s, val : a })
→ ∀(env : s)
→ m a
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(a : Type)
→ ∀(state : s → m { state : s, val : a })
→ ∀(env : s)
→ m s
∀(s : Type) → ∀(m : Type → Type) → ∀(a : Type) → Type
λ(s : Type) → λ(m : Type → Type) → λ(a : Type) → s → m { state : s, val : a }
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(env : s)
→ m { state : s, val : s }
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(new : s)
→ ∀(env : s)
→ m { state : s, val : {} }
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀(a : Type)
→ ∀(f : s → s)
→ ∀(state : s → m { state : s, val : a })
→ ∀(new : s)
→ m { state : s, val : a }
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(a : Type)
→ ∀(f : s → a)
→ ∀(new : s)
→ m { state : s, val : a }
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : s → m { state : s, val : a → b })
→ ∀(fa : s → m { state : s, val : a })
→ ∀(new : s)
→ m { state : s, val : b }
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : s → m { state : s, val : a })
→ ∀(k : a → s → m { state : s, val : b })
→ ∀(new : s)
→ m { state : s, val : b }
, eval :
∀(a : Type) → ∀(state : s → m { state : s, val : a }) → ∀(env : s) → m a
, exec :
∀(a : Type) → ∀(state : s → m { state : s, val : a }) → ∀(env : s) → m s
, get :
∀(env : s) → m { state : s, val : s }
, gets :
∀(a : Type) → ∀(f : s → a) → ∀(new : s) → m { state : s, val : a }
, lift :
∀(a : Type) → ∀(ma : m a) → ∀(env : s) → m { state : s, val : a }
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(fa : s → m { state : s, val : a })
→ ∀(new : s)
→ m { state : s, val : b }
, modify :
∀(a : Type) → ∀(f : s → s) → ∀(new : s) → m { state : s, val : {} }
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : s) → m { state : s, val : a }
, put :
∀(a : Type) → ∀(new : s) → ∀(env : s) → m { state : s, val : {} }
}
∀(s : Type)
→ ∀(m : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b }
)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(fa : s → m { state : s, val : a })
→ ∀(new : s)
→ m { state : s, val : b }
}
∀(s : Type)
→ { lift :
∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(a : Type)
→ ∀(ma : m a)
→ ∀(env : s)
→ m { state : s, val : a }
}
∀(f : Type → Type)
→ ∀ ( t
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
∀(f : Type → Type)
→ ∀ ( app
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(g : a → b → c)
→ ∀(fa : f a)
→ ∀(fb : f b)
→ f c
∀(f : Type → Type)
→ ∀ ( app
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : f a)
→ ∀(fb : f b)
→ f b
∀(f : Type → Type) → Type
λ(f : Type → Type)
→ { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
∀(f : Type → Type)
→ ∀ ( app
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : f a)
→ ∀(fb : f b)
→ f a
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, leftApConst :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(fb : f b) → f a
, liftA2 :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(g : a → b → c)
→ ∀(fa : f a)
→ ∀(fb : f b)
→ f c
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
, rightApConst :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(fb : f b) → f b
}
∀(a : Type)
→ ∀(b : Type)
→ ∀(eithers : List < Left : a | Right : b >)
→ { lefts : List a, rights : List b }
∀(a : Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : < Left : a@1 | Right : a → b >)
→ ∀(fa : < Left : a@1 | Right : a >)
→ < Left : a@1 | Right : b >
, bind :
∀(b : Type)
→ ∀(c : Type)
→ ∀(fa : < Left : a | Right : b >)
→ ∀(k : b → < Left : a | Right : c >)
→ < Left : a | Right : c >
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(fa : < Left : a@1 | Right : a >)
→ < Left : a@1 | Right : b >
, pure :
∀(b : Type) → ∀(x : b) → < Left : a | Right : b >
}
∀(a : Type) → ∀(b : Type) → ∀(e : < Left : a | Right : b >) → Bool
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → ∀(d : Type) → ∀(f : a → c) → ∀(g : b → d) → ∀(e : < Left : a | Right : b >) → < Left : c | Right : d >
{ bimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ ∀(f : a → c)
→ ∀(g : b → d)
→ ∀(e : < Left : a | Right : b >)
→ < Left : c | Right : d >
}
∀(a : Type)
→ ∀(semi : { op : ∀(x : a) → ∀(y : a) → a })
→ { ap :
∀(b : Type)
→ ∀(c : Type)
→ ∀(g : < Left : a | Right : b → c >)
→ ∀(fa : < Left : a | Right : b >)
→ < Left : a | Right : c >
, map :
∀(b : Type)
→ ∀(c : Type)
→ ∀(f : b → c)
→ ∀(either : < Left : a | Right : b >)
→ < Left : a | Right : c >
, pure :
∀(b : Type) → ∀(x : b) → < Left : a | Right : b >
}
∀(a : Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : < Left : a@1 | Right : a → b >)
→ ∀(fa : < Left : a@1 | Right : a >)
→ < Left : a@1 | Right : b >
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(fa : < Left : a@1 | Right : a >)
→ < Left : a@1 | Right : b >
, pure :
∀(b : Type) → ∀(x : b) → < Left : a | Right : b >
}
∀(a : Type) → ∀(b : Type) → ∀(eithers : List < Left : a | Right : b >) → List a
∀(a : Type) → ∀(b : Type) → ∀(def : a) → ∀(e : < Left : a | Right : b >) → a
∀(a : Type)
→ { fold :
∀(b : Type)
→ ∀(either : < Left : a | Right : b >)
→ ∀(c : Type)
→ ∀(f : b → c → c)
→ ∀(z : c)
→ c
, map :
∀(b : Type)
→ ∀(c : Type)
→ ∀(f : b → c)
→ ∀(either : < Left : a | Right : b >)
→ < Left : a | Right : c >
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(g : b → f c)
→ ∀(ts : < Left : a | Right : b >)
→ f < Left : a | Right : c >
}
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → ∀(f : a → c) → ∀(e : < Left : a | Right : b >) → < Left : c | Right : b >
∀(a : Type) → ∀(b : Type) → Type
λ(a : Type) → λ(b : Type) → < Left : a | Right : b >
∀(a : Type) → ∀(b : Type) → ∀(d : Type) → ∀(f : b → d) → ∀(e : < Left : a | Right : b >) → < Left : a | Right : d >
∀(a : Type) → ∀(b : Type) → ∀(e : < Left : a | Right : b >) → Bool
∀(a : Type) → ∀(b : Type) → ∀(eithers : List < Left : a | Right : b >) → List b
∀(a : Type)
→ ∀(b : Type)
→ { Left :
∀(Left : a) → < Left : a | Right : b >
, Right :
∀(Right : b) → < Left : a | Right : b >
, ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : < Left : a@1 | Right : a → b >)
→ ∀(fa : < Left : a@1 | Right : a >)
→ < Left : a@1 | Right : b >
, bimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ ∀(f : a → c)
→ ∀(g : b → d)
→ ∀(e : < Left : a | Right : b >)
→ < Left : c | Right : d >
, bind :
∀(b : Type)
→ ∀(c : Type)
→ ∀(fa : < Left : a | Right : b >)
→ ∀(k : b → < Left : a | Right : c >)
→ < Left : a | Right : c >
, fold :
∀(b : Type)
→ ∀(either : < Left : a | Right : b >)
→ ∀(c : Type)
→ ∀(f : b → c → c)
→ ∀(z : c)
→ c
, fromLeft :
∀(def : a) → ∀(e : < Left : a | Right : b >) → a
, fromRight :
∀(def : b) → ∀(e : < Left : a | Right : b >) → b
, isLeft :
∀(e : < Left : a | Right : b >) → Bool
, isRight :
∀(e : < Left : a | Right : b >) → Bool
, lefts :
∀(eithers : List < Left : a | Right : b >) → List a
, map :
∀(b : Type)
→ ∀(c : Type)
→ ∀(f : b → c)
→ ∀(either : < Left : a | Right : b >)
→ < Left : a | Right : c >
, mapBoth :
∀(c : Type)
→ ∀(d : Type)
→ ∀(f : a → c)
→ ∀(g : b → d)
→ ∀(e : < Left : a | Right : b >)
→ < Left : c | Right : d >
, mapLeft :
∀(c : Type)
→ ∀(f : a → c)
→ ∀(e : < Left : a | Right : b >)
→ < Left : c | Right : b >
, mapRight :
∀(d : Type)
→ ∀(f : b → d)
→ ∀(e : < Left : a | Right : b >)
→ < Left : a | Right : d >
, partition :
∀(eithers : List < Left : a | Right : b >)
→ { lefts : List a, rights : List b }
, pure :
∀(b : Type) → ∀(x : b) → < Left : a | Right : b >
, rights :
∀(eithers : List < Left : a | Right : b >) → List b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(g : b → f c)
→ ∀(ts : < Left : a | Right : b >)
→ f < Left : a | Right : c >
}
∀(a : Type)
→ { map :
∀(b : Type)
→ ∀(c : Type)
→ ∀(f : b → c)
→ ∀(either : < Left : a | Right : b >)
→ < Left : a | Right : c >
}
∀(a : Type)
→ { fold :
∀(b : Type)
→ ∀(either : < Left : a | Right : b >)
→ ∀(c : Type)
→ ∀(f : b → c → c)
→ ∀(z : c)
→ c
}
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → ∀(f : a → c) → ∀(g : b → c) → ∀(e : < Left : a | Right : b >) → c
∀(a : Type) → ∀(b : Type) → ∀(def : b) → ∀(e : < Left : a | Right : b >) → b
∀(f : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(k : a → f b) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(m : ∀(b : Type) → ((a → b@1) → b) → f b)
→ ∀(n : ∀(b : Type) → (a → b) → f b)
→ ∀(c : Type)
→ ∀(k : b → c)
→ f c
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(yoneda : ∀(b : Type) → (a → b) → f b)
→ ∀(k : a → ∀(b : Type) → (b@1 → b) → f b)
→ ∀(c : Type)
→ ∀(l : b → c)
→ f c
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(ran : ∀(b : Type) → (a → b) → f b)
→ ∀(c : Type)
→ ∀(k : b → c)
→ f c
, pure :
∀(a : Type) → ∀(x : a) → ∀(b : Type) → ∀(f : a → b) → f@1 b
}
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(m : ∀(b : Type) → ((a → b@1) → b) → f b)
→ ∀(n : ∀(b : Type) → (a → b) → f b)
→ ∀(c : Type)
→ ∀(k : b → c)
→ f c
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(ran : ∀(b : Type) → (a → b) → f b)
→ ∀(c : Type)
→ ∀(k : b → c)
→ f c
, pure :
∀(a : Type) → ∀(x : a) → ∀(b : Type) → ∀(f : a → b) → f@1 b
}
∀(f : Type → Type)
→ ∀ ( traversable
: { fold :
∀(a : Type)
→ ∀(ts : f a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : f (a → b))
→ ∀(fa : f a)
→ f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ (a → f b)
→ f@1 a
→ f (f@1 b)
}
)
→ { fold :
∀(a : Type)
→ ∀(yoneda : ∀(b : Type) → (a → b) → f b)
→ ∀(b : Type)
→ ∀(k : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(ran : ∀(b : Type) → (a → b) → f b)
→ ∀(c : Type)
→ ∀(k : b → c)
→ f c
, traverse :
∀(g : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : g (a → b))
→ ∀(fa : g@1 a)
→ g@1 b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : g@1 a) → g@1 b
, pure :
∀(a : Type) → a → g a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → g b)
→ ∀(yoneda : ∀(b : Type) → (a → b) → f b)
→ g (∀(b : Type) → (b@1 → b) → f b)
}
∀(f : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
)
→ ∀(a : Type)
→ ∀(x : f a)
→ ∀(b : Type)
→ ∀(k : a → b)
→ f b
∀(g : Type → Type) → ∀(a : Type) → Type
λ(g : Type → Type) → λ(a : Type) → ∀(b : Type) → (a → b) → g b
∀(f : Type → Type) → ∀(a : Type) → ∀(ran : ∀(b : Type) → (a → b) → f b) → f a
∀(f : Type → Type)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(ran : ∀(b : Type) → (a → b) → f b)
→ ∀(c : Type)
→ ∀(k : b → c)
→ f c
}
∀(f : Type → Type)
→ ∀ ( foldable
: { fold :
∀(a : Type)
→ ∀(ts : f a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
}
)
→ { fold :
∀(a : Type)
→ ∀(yoneda : ∀(b : Type) → (a → b) → f b)
→ ∀(b : Type)
→ ∀(k : a → b → b)
→ ∀(z : b)
→ b
}
{ ap :
∀(a : Type) → ∀(b : Type) → ∀(g : List (a → b)) → ∀(fa : List a) → List b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : List a) → ∀(k : a → List b) → List b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(list : List a) → List b
, pure :
∀(a : Type) → ∀(x : a) → List a
}
{ ap :
∀(a : Type) → ∀(b : Type) → ∀(g : List (a → b)) → ∀(fa : List a) → List b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(list : List a) → List b
, pure :
∀(a : Type) → ∀(x : a) → List a
}
∀(a : Type) → { op : ∀(xs : List a) → ∀(ys : List a) → List a }
{ fold :
∀(a : Type)
→ List a
→ ∀(list : Type)
→ ∀(cons : a → list → list)
→ ∀(nil : list)
→ list
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(list : List a) → List b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(g : a → f b)
→ ∀(ts : List a)
→ f (List b)
}
∀(a : Type) → { op : ∀(xs : List a) → ∀(ys : List a) → List a, unit : List a }
{ map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(list : List a) → List b }
{ fold :
∀(a : Type)
→ List a
→ ∀(list : Type)
→ ∀(cons : a → list → list)
→ ∀(nil : list)
→ list
}
{ ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(nelF : { head : a → b, tail : List (a → b) })
→ ∀(nel : { head : a, tail : List a })
→ { head : b, tail : List b }
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(nel : { head : a, tail : List a })
→ { head : b, tail : List b }
, pure :
∀(a : Type) → ∀(x : a) → { head : a, tail : List a }
}
∀(a : Type)
→ { op :
∀(x : { head : a, tail : List a })
→ ∀(y : { head : a, tail : List a })
→ { head : a, tail : List a }
}
{ fold :
∀(a : Type)
→ ∀(ts : { head : a, tail : List a })
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(nel : { head : a, tail : List a })
→ { head : b, tail : List b }
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → f b)
→ ∀(nel : { head : a, tail : List a })
→ f { head : b, tail : List b }
}
∀(a : Type) → Type
λ(a : Type) → { head : a, tail : List a }
{ duplicate :
∀(a : Type)
→ ∀(nel : { head : a, tail : List a })
→ { head :
{ head : a, tail : List a }
, tail :
List { head : a, tail : List a }
}
, extend :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : { head : a, tail : List a } → b)
→ ∀(nel : { head : a, tail : List a })
→ { head : b, tail : List b }
, extract :
∀(a : Type) → ∀(nel : { head : a, tail : List a }) → a
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(nel : { head : a, tail : List a })
→ { head : b, tail : List b }
}
{ map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(nel : { head : a, tail : List a })
→ { head : b, tail : List b }
}
{ fold :
∀(a : Type)
→ ∀(ts : { head : a, tail : List a })
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
}
∀(a : Type) → ∀(nel : { head : a, tail : List a }) → List a
∀(f : Type → Type)
→ ∀ ( comonad
: { duplicate :
∀(a : Type) → f a → f (f a)
, extend :
∀(a : Type) → ∀(b : Type) → ∀(f : f a → b) → f@1 a → f@1 b
, extract :
∀(a : Type) → f a → a
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
}
)
→ ∀(g : Type → Type)
→ ∀(a : Type)
→ ∀(x : g a)
→ ∀(r : Type)
→ ∀(k : ∀(b : Type) → (f b → a) → g b → r)
→ r
∀(f : Type → Type) → ∀(g : Type → Type) → ∀(a : Type) → Type
λ(f : Type → Type) → λ(g : Type → Type) → λ(a : Type) → ∀(r : Type) → (∀(b : Type) → (f b → a) → g b → r) → r
∀(h : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : h a) → h b }
)
→ ∀(f : Type → Type)
→ ∀(g : Type → Type)
→ ∀(duplicate : ∀(b : Type) → g b → h (f b))
→ ∀(a : Type)
→ ∀(lan : ∀(r : Type) → (∀(b : Type) → (f b → a) → g b → r) → r)
→ h a
∀(f : Type → Type)
→ ∀(g : Type → Type)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(lan : ∀(r : Type) → (∀(b : Type) → (f b → a) → g b → r) → r)
→ ∀(r : Type)
→ ∀(k : ∀(c : Type) → (f c → b) → g c → r)
→ r
}
∀(r : Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : r → a → b)
→ ∀(fa : r → a)
→ ∀(env : r)
→ b
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : r → a)
→ ∀(k : a → r → b)
→ ∀(env : r)
→ b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(reader : r → a)
→ ∀(rr : r)
→ b
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : r) → a
}
∀(r : Type) → ∀(a : Type) → ∀(rPrime : Type) → ∀(f : rPrime → r) → ∀(reader : r → a) → ∀(newR : rPrime) → a
∀(r : Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : r → a → b)
→ ∀(fa : r → a)
→ ∀(env : r)
→ b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : a → b)
→ ∀(reader : r → a)
→ ∀(rr : r)
→ b
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : r) → a
}
∀(r : Type) → ∀(a : Type) → ∀(f : r → r) → ∀(reader : r → a) → ∀(env : r) → a
∀(r : Type) → ∀(a : Type) → Type
λ(r : Type) → λ(a : Type) → r → a
∀(r : Type) → ∀(a : Type) → ∀(f : r → a) → ∀(env : r) → a
∀(r : Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : r → a → b)
→ ∀(fa : r → a)
→ ∀(env : r)
→ b
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : r → a)
→ ∀(k : a → r → b)
→ ∀(env : r)
→ b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(reader : r → a)
→ ∀(rr : r)
→ b
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : r) → a
, withReader :
∀(a : Type)
→ ∀(rPrime : Type)
→ ∀(f : rPrime → r)
→ ∀(reader : r → a)
→ ∀(newR : rPrime)
→ a
}
∀(r : Type) → ∀(env : r) → r
∀(r : Type)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : a → b)
→ ∀(reader : r → a)
→ ∀(rr : r)
→ b
}
∀(w : Type → Type)
→ ∀ ( comonad
: { duplicate :
∀(a : Type) → w a → w (w a)
, extend :
∀(a : Type) → ∀(b : Type) → ∀(f : w a → b) → w a → w b
, extract :
∀(a : Type) → w a → a
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : w a) → w b
}
)
→ { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : w a) → w b }
∀(w : Type → Type) → Type
λ(w : Type → Type)
→ { duplicate :
∀(a : Type) → w a → w (w a)
, extend :
∀(a : Type) → ∀(b : Type) → ∀(f : w a → b) → w a → w b
, extract :
∀(a : Type) → w a → a
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : w a) → w b
}
∀(w : Type → Type)
→ ∀(extract : ∀(a : Type) → w a → a)
→ ∀(extend : ∀(a : Type) → ∀(b : Type) → ∀(f : w a → b) → w a → w b)
→ { duplicate :
∀(a : Type) → w a → w (w a)
, extend :
∀(a : Type) → ∀(b : Type) → ∀(f : w a → b) → w a → w b
, extract :
∀(a : Type) → w a → a
, map :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → w a → w b
}
∀(f : Type → Type)
→ ∀ ( t
: { fold :
∀(a : Type)
→ ∀(ts : f a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : f (a → b))
→ ∀(fa : f a)
→ f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ (a → f b)
→ f@1 a
→ f (f@1 b)
}
)
→ { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
∀(t : Type → Type)
→ ∀ ( traverse
: ∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(g : a → f b)
→ ∀(ts : t a)
→ f (t b)
)
→ { fold :
∀(a : Type) → ∀(ts : t a) → ∀(b : Type) → ∀(f : a → b → b) → ∀(z : b) → b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(ts : t a) → t b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(g : a → f b)
→ ∀(ts : t a)
→ f (t b)
}
∀(t : Type → Type) → Type
λ(t : Type → Type)
→ { fold :
∀(a : Type) → ∀(ts : t a) → ∀(b : Type) → ∀(f : a → b → b) → ∀(z : b) → b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : t a) → t b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ (a → f b)
→ t a
→ f (t b)
}
∀(t : Type → Type)
→ ∀ ( traversable
: { fold :
∀(a : Type)
→ ∀(ts : t a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : t a) → t b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : f (a → b))
→ ∀(fa : f a)
→ f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ (a → f b)
→ t a
→ f (t b)
}
)
→ ∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(ts : t (f a))
→ f (t a)
∀(f : Type → Type)
→ ∀ ( t
: { fold :
∀(a : Type)
→ ∀(ts : f a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : f (a → b))
→ ∀(fa : f a)
→ f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ (a → f b)
→ f@1 a
→ f (f@1 b)
}
)
→ { fold :
∀(a : Type) → ∀(ts : f a) → ∀(b : Type) → ∀(f : a → b → b) → ∀(z : b) → b
}
∀(m : Type) → Type
λ(m : Type) → { op : ∀(x : m) → ∀(y : m) → m, unit : m }
∀(m : Type)
→ ∀(t : { op : ∀(x : m) → ∀(y : m) → m, unit : m })
→ { op : ∀(x : m) → ∀(y : m) → m }
∀(f : Type → Type → Type)
→ ∀ ( category
: { compose :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → f b c → f a b → f a c
, identity :
∀(a : Type) → f a a
}
)
→ { compose : ∀(a : Type) → ∀(b : Type) → ∀(c : Type) → f b c → f a b → f a c }
∀(f : Type → Type → Type) → Type
λ(f : Type → Type → Type)
→ { compose :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → f b c → f a b → f a c
, identity :
∀(a : Type) → f a a
}
{ ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : List (a → b) → List (a → b))
→ ∀(fa : List a → List a)
→ List b
→ List b
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : List a → List a)
→ ∀(k : a → List b → List b)
→ List b
→ List b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(fa : List a → List a)
→ List b
→ List b
, pure :
∀(a : Type) → ∀(x : a) → ∀(l : List a) → List a
}
{ ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : List (a → b) → List (a → b))
→ ∀(fa : List a → List a)
→ List b
→ List b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(fa : List a → List a)
→ List b
→ List b
, pure :
∀(a : Type) → ∀(x : a) → ∀(l : List a) → List a
}
∀(a : Type)
→ { op :
∀(f : List a → List a) → ∀(g : List a → List a) → ∀(x : List a) → List a
}
∀(a : Type)
→ { op :
∀(f : List a → List a) → ∀(g : List a → List a) → ∀(x : List a) → List a
, unit :
∀(x : List a) → List a
}
∀(a : Type) → Type
λ(a : Type) → List a → List a
∀(a : Type) → ∀(f : List a → List a) → ∀(g : List a → List a) → ∀(x : List a) → List a
∀(a : Type) → ∀(xs : List a → List a) → ∀(y : a) → ∀(x : List a) → List a
∀(a : Type) → ∀(y : a) → ∀(xs : List a → List a) → ∀(x : List a) → List a
∀(a : Type) → ∀(x : List a) → List a
∀(a : Type) → ∀(x : a) → ∀(l : List a) → List a
{ map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(fa : List a → List a)
→ List b
→ List b
}
{ fold :
∀(a : Type)
→ ∀(ts : List a → List a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
}
∀(a : Type) → ∀(xs : List a → List a) → List a
∀(f : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : f a)
→ ∀(val : b)
→ f b
∀(f : Type → Type) → Type
λ(f : Type → Type)
→ { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
∀(f : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(val : a)
→ ∀(fb : f b)
→ f a
∀(f : Type → Type)
→ ∀ ( t
: { fold :
∀(a : Type)
→ ∀(ts : f a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : f (a → b))
→ ∀(fa : f a)
→ f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ (a → f b)
→ f@1 a
→ f (f@1 b)
}
)
→ { map : ∀(a : Type) → ∀(b : Type) → (a → b) → f a → f b }
∀(f : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
)
→ { leftConst :
∀(a : Type) → ∀(b : Type) → ∀(val : a) → ∀(fb : f b) → f a
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, rightConst :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(val : b) → f b
, void :
∀(a : Type) → ∀(fa : f a) → f {}
}
∀(f : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
)
→ ∀(a : Type)
→ ∀(fa : f a)
→ f {}
∀(f : Type → Type → Type) → Type
λ(f : Type → Type → Type)
→ { arr :
∀(a : Type) → ∀(b : Type) → (a → b) → f a b
, compose :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → f b c → f a b → f a c
, dimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → b)
→ (c → d)
→ f b c
→ f a d
, fanout :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ f a b
→ f a c
→ f a { _1 : b, _2 : c }
, first :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ f a b
→ f { _1 : a, _2 : c } { _1 : b, _2 : c }
, identity :
∀(a : Type) → f a a
, lmap :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → (a → b) → f b c → f a c
, rmap :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → (b → c) → f a b → f a c
, second :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ f b c
→ f { _1 : a, _2 : b } { _1 : a, _2 : c }
, split :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ f a b
→ f c d
→ f { _1 : a, _2 : c } { _1 : b, _2 : d }
}
∀(g : Type → Type) → ∀(a : Type) → ∀(x : g a) → ∀(r : Type) → ∀(k : ∀(b : Type) → (b → a) → g b → r) → r
∀(g : Type → Type) → ∀(a : Type) → Type
λ(g : Type → Type) → λ(a : Type) → ∀(r : Type) → (∀(b : Type) → (b → a) → g b → r) → r
∀(f : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
)
→ ∀(a : Type)
→ ∀(lan : ∀(r : Type) → (∀(b : Type) → (b → a) → f b → r) → r)
→ f a
∀(g : Type → Type)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(lan : ∀(r : Type) → (∀(b : Type) → (b → a) → g b → r) → r)
→ ∀(r : Type)
→ ∀(k : ∀(c : Type) → (c → b) → g c → r)
→ r
}
∀(f : Type → Type)
→ ∀ ( comonad
: { duplicate :
∀(a : Type) → f a → f (f a)
, extend :
∀(a : Type) → ∀(b : Type) → ∀(f : f a → b) → f@1 a → f@1 b
, extract :
∀(a : Type) → f a → a
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
}
)
→ ∀(a : Type)
→ ∀(x : f a)
→ ∀(r : Type)
→ ∀(k : ∀(b : Type) → (f b → a) → f b → r)
→ r
∀(f : Type → Type) → ∀(a : Type) → Type
λ(f : Type → Type) → λ(a : Type) → ∀(r : Type) → (∀(b : Type) → (f b → a) → f b → r) → r
∀(f : Type → Type)
→ ∀ ( comonad
: { duplicate :
∀(a : Type) → f a → f (f a)
, extend :
∀(a : Type) → ∀(b : Type) → ∀(f : f a → b) → f@1 a → f@1 b
, extract :
∀(a : Type) → f a → a
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
}
)
→ ∀(a : Type)
→ ∀(lan : ∀(r : Type) → (∀(b : Type) → (f b → a) → f b → r) → r)
→ f a
∀(f : Type → Type)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(lan : ∀(r : Type) → (∀(b : Type) → (f b → a) → f b → r) → r)
→ ∀(r : Type)
→ ∀(k : ∀(c : Type) → (f c → b) → f c → r)
→ r
}
∀(f : Type → Type → Type) → Type
λ(f : Type → Type → Type)
→ { dimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ (a → b)
→ (c → d)
→ f b c
→ f a d
, first :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ f a b
→ f { _1 : a, _2 : c } { _1 : b, _2 : c }
, lmap :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → (a → b) → f b c → f a c
, rmap :
∀(a : Type) → ∀(b : Type) → ∀(c : Type) → (b → c) → f a b → f a c
, second :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ f b c
→ f { _1 : a, _2 : b } { _1 : a, _2 : c }
}
∀(f : Type → Type)
→ ∀ ( t
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(k : a → f b) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b }
∀(f : Type → Type) → Type
λ(f : Type → Type)
→ { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(k : a → f b) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
∀(f : Type → Type)
→ ∀ ( t
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(k : a → f b) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
∀(f : Type → Type)
→ ∀(pure : ∀(a : Type) → a → f a)
→ ∀(bind : ∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(k : a → f b) → f b)
→ { ap :
∀(a : Type) → ∀(b : Type) → ∀(k : f (a → b)) → ∀(fa : f a) → f b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(k : a → f b) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(k : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
∀(f : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(k : a → f b) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(k : a → f b) → f b
, join :
∀(a : Type) → ∀(ffa : f (f a)) → f a
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { compose :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(g : b → m c)
→ ∀(f : a → m b)
→ ∀(x : a)
→ m c
}
∀(m : Type → Type) → ∀(a : Type) → ∀(b : Type) → Type
λ(m : Type → Type) → λ(a : Type) → λ(b : Type) → a → m b
∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { compose :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(g : b → m c)
→ ∀(f : a → m b)
→ ∀(x : a)
→ m c
, identity :
∀(a : Type) → a → m a
}
∀(r : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : r → m (a → b))
→ ∀(fa : r → m a)
→ ∀(env : r)
→ m b
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : r → m a)
→ ∀(k : a → r → m b)
→ ∀(env : r)
→ m b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(reader : r → m a)
→ ∀(rr : r)
→ m b
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : r) → m a
}
∀(r : Type) → ∀(m : Type → Type) → ∀(a : Type) → ∀(rPrime : Type) → ∀(f : rPrime → r) → ∀(reader : r → m a) → ∀(newR : rPrime) → m a
∀(r : Type)
→ ∀(m : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : r → m (a → b))
→ ∀(fa : r → m a)
→ ∀(env : r)
→ m b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(reader : r → m a)
→ ∀(rr : r)
→ m b
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : r) → m a
}
∀(r : Type) → ∀(m : Type → Type) → ∀(a : Type) → ∀(f : r → r) → ∀(reader : r → m a) → ∀(env : r) → m a
∀(r : Type) → ∀(m : Type → Type) → ∀(a : Type) → Type
λ(r : Type) → λ(m : Type → Type) → λ(a : Type) → r → m a
∀(r : Type)
→ ∀(m : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(a : Type)
→ ∀(f : r → a)
→ ∀(env : r)
→ m a
∀(r : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : r → m (a → b))
→ ∀(fa : r → m a)
→ ∀(env : r)
→ m b
, ask :
∀(env : r) → m r
, asks :
∀(a : Type) → ∀(f : r → a) → ∀(env : r) → m a
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : r → m a)
→ ∀(k : a → r → m b)
→ ∀(env : r)
→ m b
, lift :
∀(a : Type) → ∀(ma : m a) → ∀(env : r) → m a
, local :
∀(a : Type) → ∀(f : r → r) → ∀(reader : r → m a) → ∀(env : r) → m a
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(reader : r → m a)
→ ∀(rr : r)
→ m b
, pure :
∀(a : Type) → ∀(x : a) → ∀(env : r) → m a
}
∀(r : Type)
→ ∀(m : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(env : r)
→ m r
∀(r : Type)
→ ∀(m : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b }
)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(reader : r → m a)
→ ∀(rr : r)
→ m b
}
∀(r : Type)
→ { lift :
∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(a : Type)
→ ∀(ma : m a)
→ ∀(env : r)
→ m a
}
∀(t : Type → Type) → Type
λ(t : Type → Type)
→ { fold :
∀(a : Type) → ∀(ts : t a) → ∀(b : Type) → ∀(f : a → b → b) → ∀(z : b) → b
}
∀(m : Type)
→ ∀(monoid : { op : ∀(x : m) → ∀(y : m) → m, unit : m })
→ ∀(t : Type → Type)
→ ∀ ( foldable
: { fold :
∀(a : Type)
→ ∀(ts : t a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
}
)
→ ∀(a : Type)
→ ∀(f : a → m)
→ ∀(ts : t a)
→ m
∀(a : Type)
→ ∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : m < Left : a@1 | Right : a → b >)
→ ∀(fa : m < Left : a@1 | Right : a >)
→ m < Left : a@1 | Right : b >
, bind :
∀(b : Type)
→ ∀(c : Type)
→ ∀(fa : m < Left : a | Right : b >)
→ ∀(k : b → m < Left : a | Right : c >)
→ m < Left : a | Right : c >
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(fa : m < Left : a@1 | Right : a >)
→ m < Left : a@1 | Right : b >
, pure :
∀(a : Type) → ∀(x : a) → m < Left : a@1 | Right : a >
}
∀(a : Type)
→ ∀(semi : { op : ∀(x : a) → ∀(y : a) → a })
→ ∀(m : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : m < Left : a@1 | Right : a → b >)
→ ∀(fa : m < Left : a@1 | Right : a >)
→ m < Left : a@1 | Right : b >
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(fa : m < Left : a@1 | Right : a >)
→ m < Left : a@1 | Right : b >
, pure :
∀(a : Type) → ∀(x : a) → m < Left : a@1 | Right : a >
}
∀(a : Type)
→ ∀(m : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : m < Left : a@1 | Right : a → b >)
→ ∀(fa : m < Left : a@1 | Right : a >)
→ m < Left : a@1 | Right : b >
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(fa : m < Left : a@1 | Right : a >)
→ m < Left : a@1 | Right : b >
, pure :
∀(a : Type) → ∀(x : a) → m < Left : a@1 | Right : a >
}
∀(a : Type) → ∀(m : Type → Type) → ∀(b : Type) → Type
λ(a : Type) → λ(m : Type → Type) → λ(b : Type) → m < Left : a | Right : b >
∀(a : Type)
→ ∀(m : Type → Type)
→ ∀ ( functor
: { map : ∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b }
)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(k : a → b)
→ ∀(fa : m < Left : a@1 | Right : a >)
→ m < Left : a@1 | Right : b >
}
∀(a : Type)
→ { lift :
∀(m : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : m a) → ∀(k : a → m b) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(b : Type)
→ ∀(ma : m b)
→ m < Left : a | Right : b >
}
∀(f : Type → Type → Type) → Type
λ(f : Type → Type → Type)
→ { compose : ∀(a : Type) → ∀(b : Type) → ∀(c : Type) → f b c → f a b → f a c }
{ compose :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(f : b → c)
→ ∀(g : a → b)
→ ∀(x : a)
→ c
}
{ dimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ ∀(f : a → b)
→ ∀(g : c → d)
→ ∀(fn : b → c)
→ ∀(x : a)
→ d
, first :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(f : a → b)
→ ∀(p : { _1 : a, _2 : c })
→ { _1 : b, _2 : c }
, lmap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(fn : a → b)
→ ∀(fn : b → c)
→ ∀(x : a)
→ c
, rmap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(g : b → c)
→ ∀(fn : a → b)
→ ∀(x : a)
→ c
, second :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(f : b → c)
→ ∀(p : { _1 : a, _2 : b })
→ { _1 : a, _2 : c }
}
∀(a : Type) → ∀(b : Type) → Type
λ(a : Type) → λ(b : Type) → a → b
{ arr :
∀(a : Type) → ∀(b : Type) → ∀(x : a → b) → a → b
, compose :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(f : b → c)
→ ∀(g : a → b)
→ ∀(x : a)
→ c
, dimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ ∀(f : a → b)
→ ∀(g : c → d)
→ ∀(fn : b → c)
→ ∀(x : a)
→ d
, fanout :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(f : a → b)
→ ∀(g : a → c)
→ ∀(x : a)
→ { _1 : b, _2 : c }
, first :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(f : a → b)
→ ∀(p : { _1 : a, _2 : c })
→ { _1 : b, _2 : c }
, identity :
∀(a : Type) → ∀(x : a) → a
, lmap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(fn : a → b)
→ ∀(fn : b → c)
→ ∀(x : a)
→ c
, rmap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(g : b → c)
→ ∀(fn : a → b)
→ ∀(x : a)
→ c
, second :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(f : b → c)
→ ∀(p : { _1 : a, _2 : b })
→ { _1 : a, _2 : c }
, split :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ ∀(f : a → b)
→ ∀(g : c → d)
→ ∀(p : { _1 : a, _2 : c })
→ { _1 : b, _2 : d }
}
{ dimap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(d : Type)
→ ∀(f : a → b)
→ ∀(g : c → d)
→ ∀(fn : b → c)
→ ∀(x : a)
→ d
, lmap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(fn : a → b)
→ ∀(fn : b → c)
→ ∀(x : a)
→ c
, rmap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(g : b → c)
→ ∀(fn : a → b)
→ ∀(x : a)
→ c
}
{ compose :
∀(a : Type)
→ ∀(b : Type)
→ ∀(c : Type)
→ ∀(f : b → c)
→ ∀(g : a → b)
→ ∀(x : a)
→ c
, identity :
∀(a : Type) → ∀(x : a) → a
}
{ ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : Optional (a → b))
→ ∀(fa : Optional a)
→ Optional b
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(fa : Optional a)
→ ∀(k : a → Optional b)
→ Optional b
, map :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → ∀(o : Optional a) → Optional b
, pure :
∀(a : Type) → ∀(x : a) → Optional a
}
{ ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : Optional (a → b))
→ ∀(fa : Optional a)
→ Optional b
, map :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → ∀(o : Optional a) → Optional b
, pure :
∀(a : Type) → ∀(x : a) → Optional a
}
{ fold :
∀(a : Type)
→ ∀(ts : Optional a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
, map :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → ∀(o : Optional a) → Optional b
, traverse :
∀(f : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(b : Type)
→ ∀(g : a → f b)
→ ∀(ts : Optional a)
→ f (Optional b)
}
{ map :
∀(a : Type) → ∀(b : Type) → ∀(f : a → b) → ∀(o : Optional a) → Optional b
}
{ fold :
∀(a : Type)
→ ∀(ts : Optional a)
→ ∀(b : Type)
→ ∀(f : a → b → b)
→ ∀(z : b)
→ b
}
∀(a : Type) → ∀(b : Type) → Type
λ(a : Type) → λ(b : Type) → { _1 : a, _2 : b }
∀(a : Type)
→ { duplicate :
∀(a : Type)
→ ∀(tup : { _1 : a@1, _2 : a })
→ { _1 : a@1, _2 : { _1 : a@1, _2 : a } }
, extend :
∀(b : Type)
→ ∀(c : Type)
→ ∀(f : { _1 : a, _2 : b } → c)
→ ∀(tup : { _1 : a, _2 : b })
→ { _1 : a, _2 : c }
, extract :
∀(b : Type) → ∀(tup : { _1 : a, _2 : b }) → b
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : a → b)
→ ∀(tup : { _1 : a@1, _2 : a })
→ { _1 : a@1, _2 : b }
}
∀(a : Type)
→ ∀ ( comonad
: { duplicate :
∀(a : Type)
→ { _1 : a@1, _2 : a }
→ { _1 : a@1, _2 : { _1 : a@1, _2 : a } }
, extend :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : { _1 : a@1, _2 : a } → b)
→ { _1 : a@1, _2 : a }
→ { _1 : a@1, _2 : b }
, extract :
∀(a : Type) → { _1 : a@1, _2 : a } → a
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : a → b)
→ ∀(fa : { _1 : a@1, _2 : a })
→ { _1 : a@1, _2 : b }
}
)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(g : a → b)
→ ∀(fa : { _1 : a@1, _2 : a })
→ { _1 : a@1, _2 : b }
}
∀(m : Type → Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : ∀(b : Type) → ((a → b@1) → m b) → m b)
→ ∀(g : ∀(b : Type) → (a → m b) → m b)
→ ∀(c : Type)
→ ∀(k : b → m c)
→ m c
, bind :
∀(a : Type)
→ ∀(b : Type)
→ ∀(codensity : ∀(b : Type) → (a → m b) → m b)
→ ∀(k : a → ∀(b : Type) → (b@1 → m b) → m b)
→ ∀(c : Type)
→ ∀(l : b → m c)
→ m c
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(ran : ∀(b : Type) → (a → m b) → m b)
→ ∀(c : Type)
→ ∀(k : b → m c)
→ m c
, pure :
∀(a : Type) → ∀(x : a) → ∀(b : Type) → ∀(k : a → m b) → m b
}
∀(m : Type → Type)
→ { ap :
∀(a : Type)
→ ∀(b : Type)
→ ∀(f : ∀(b : Type) → ((a → b@1) → m b) → m b)
→ ∀(g : ∀(b : Type) → (a → m b) → m b)
→ ∀(c : Type)
→ ∀(k : b → m c)
→ m c
, map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(ran : ∀(b : Type) → (a → m b) → m b)
→ ∀(c : Type)
→ ∀(k : b → m c)
→ m c
, pure :
∀(a : Type) → ∀(x : a) → ∀(b : Type) → ∀(k : a → m b) → m b
}
∀(f : Type → Type)
→ ∀ ( monad
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : f (a → b)) → ∀(fa : f a) → f b
, bind :
∀(a : Type) → ∀(b : Type) → ∀(fa : f a) → ∀(k : a → f b) → f b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : f a) → f b
, pure :
∀(a : Type) → a → f a
}
)
→ ∀(a : Type)
→ ∀(x : f a)
→ ∀(b : Type)
→ ∀(k : a → f b)
→ f b
∀(m : Type → Type) → ∀(a : Type) → Type
λ(m : Type → Type) → λ(a : Type) → ∀(b : Type) → (a → m b) → m b
∀(m : Type → Type)
→ ∀ ( applicative
: { ap :
∀(a : Type) → ∀(b : Type) → ∀(g : m (a → b)) → ∀(fa : m a) → m b
, map :
∀(a : Type) → ∀(b : Type) → ∀(g : a → b) → ∀(fa : m a) → m b
, pure :
∀(a : Type) → a → m a
}
)
→ ∀(a : Type)
→ ∀(ran : ∀(b : Type) → (a → m b) → m b)
→ m a
∀(m : Type → Type)
→ { map :
∀(a : Type)
→ ∀(b : Type)
→ ∀(h : a → b)
→ ∀(ran : ∀(b : Type) → (a → m b) → m b)
→ ∀(c : Type)
→ ∀(k : b → m c)
→ m c
}