projects
/
lambda.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
edits
[lambda.git]
/
reader_monad.mdwn
diff --git
a/reader_monad.mdwn
b/reader_monad.mdwn
index
ef049d5
..
b0f6486
100644
(file)
--- a/
reader_monad.mdwn
+++ b/
reader_monad.mdwn
@@
-244,7
+244,7
@@
That is, it takes as arguments a clause-type reader-monad `u`, and an entity-typ
You can trace through what happens then if we apply \[[who(i)]] to (\[[spurned]] applied to \[[Alice]] and \[[i]]):
You can trace through what happens then if we apply \[[who(i)]] to (\[[spurned]] applied to \[[Alice]] and \[[i]]):
-
[[Alice spurned i]] = [[spurned]] [[Alice]]
[[i]]
+
\[[Alice spurned i]] = \[[spurned]] \[[Alice]] \
[[i]]
= (lift2 S) (unit Alice) (lookup i)
= bind (unit Alice) (fun x -> bind (lookup i) (fun y -> unit (S x y)))
= (lift2 S) (unit Alice) (lookup i)
= bind (unit Alice) (fun x -> bind (lookup i) (fun y -> unit (S x y)))
@@
-263,7
+263,7
@@
Substituting in the definition of `unit`, this is:
And now supplying \[[Alice spurned i]] as an argument to \[[who(i)]], we get:
And now supplying \[[Alice spurned i]] as an argument to \[[who(i)]], we get:
-
[[who(i): Alice spurned i]] = [[who(i)]]
[[Alice spurned i]]
+
\[[who(i): Alice spurned i]] = \[[who(i)]] \
[[Alice spurned i]]
= (fun u v -> shift i v u) (fun e -> S Alice (lookup i e))
= fun v -> shift i v (fun e -> S Alice (lookup i e))
= (fun u v -> shift i v u) (fun e -> S Alice (lookup i e))
= fun v -> shift i v (fun e -> S Alice (lookup i e))