Identity is a monad. Here is a demonstration that the laws hold:
- mcomp mid k == (\fgx.f(gx)) (\p.p) k
- ~~> \x.(\p.p)(kx)
- ~~> \x.kx
- ~~> k
- mcomp k mid == (\fgx.f(gx)) k (\p.p)
- ~~> \x.k((\p.p)x)
- ~~> \x.kx
- ~~> k
- mcomp (mcomp j k) l == mcomp ((\fgx.f(gx)) j k) l
- ~~> mcomp (\x.j(kx)) l
- == (\fgx.f(gx)) (\x.j(kx)) l
- ~~> \x.(\x.j(kx))(lx)
- ~~> \x.j(k(lx))
- mcomp j (mcomp k l) == mcomp j ((\fgx.f(gx)) k l)
- ~~> mcomp j (\x.k(lx))
- == (\fgx.f(gx)) j (\x.k(lx))
- ~~> \x.j((\x.k(lx)) x)
- ~~> \x.j(k(lx))
+ mcomp mid k ≡ (\fgx.f(gx)) (\p.p) k
+ ~~> \x.(\p.p)(kx)
+ ~~> \x.kx
+ ~~> k
+ mcomp k mid ≡ (\fgx.f(gx)) k (\p.p)
+ ~~> \x.k((\p.p)x)
+ ~~> \x.kx
+ ~~> k
+ mcomp (mcomp j k) l ≡ mcomp ((\fgx.f(gx)) j k) l
+ ~~> mcomp (\x.j(kx)) l
+ ≡ (\fgx.f(gx)) (\x.j(kx)) l
+ ~~> \x.(\x.j(kx))(lx)
+ ~~> \x.j(k(lx))
+ mcomp j (mcomp k l) ≡ mcomp j ((\fgx.f(gx)) k l)
+ ~~> mcomp j (\x.k(lx))
+ ≡ (\fgx.f(gx)) j (\x.k(lx))
+ ~~> \x.j((\x.k(lx)) x)
+ ~~> \x.j(k(lx))
The Identity Monad is favored by mimes.
material within the sentence can satisfy presuppositions for other
material that otherwise would trigger a presupposition violation; but,
not surprisingly, these refinements will require some more
-sophisticated techniques than the super-simple Option monad.)
+sophisticated techniques than the super-simple Option/Maybe monad.)