A categorical programming language
修订版 | fe2f84322834bf8e93345beeea67413e9c37df8a (tree) |
---|---|
时间 | 2021-08-26 06:03:08 |
作者 | Corbin <cds@corb...> |
Commiter | Corbin |
jelly: Cite Elliott by last name.
Pedantic consistency with other documentation.
@@ -9,7 +9,7 @@ fn load_tree(handle :&mut Read) -> std::io::Result<RecExpr<SymbolLang>> { | ||
9 | 9 | } |
10 | 10 | |
11 | 11 | // Wadler 1989: https://www2.cs.sfu.ca/CourseCentral/831/burton/Notes/July14/free.pdf |
12 | -// Conal 2013: http://conal.net/blog/posts/optimizing-cccs | |
12 | +// Elliott 2013: http://conal.net/blog/posts/optimizing-cccs | |
13 | 13 | |
14 | 14 | // Rules with names ending in "-desugar" are directly transcribed from the underlying equality. |
15 | 15 |
@@ -34,7 +34,7 @@ fn main() -> std::io::Result<()> { | ||
34 | 34 | // free for snd |
35 | 35 | rw!("snd-elim-pair"; "(comp (pair ?f ?g) snd)" => "?g"), |
36 | 36 | rw!("pair-fst-snd"; "(pair fst snd)" => "id"), |
37 | - // Conal 2013 | |
37 | + // Elliott 2013 | |
38 | 38 | rw!("pair-precompose"; "(pair (comp ?r ?f) (comp ?r ?g))" => "(comp ?r (pair ?f ?g))"), |
39 | 39 | |
40 | 40 | // free for left |
@@ -59,7 +59,7 @@ fn main() -> std::io::Result<()> { | ||
59 | 59 | rw!("uncurry-curry-cancel"; "(curry (uncurry ?f))" => "?f"), |
60 | 60 | |
61 | 61 | rw!("app-desugar"; "app" => "(uncurry id)"), |
62 | - // Conal 2013 | |
62 | + // Elliott 2013 | |
63 | 63 | rw!("app-desugar-generalized"; "(comp (pair (comp ?f ?h) ?g) app)" => "(comp (pair ?f ?g) (uncurry ?h))"), |
64 | 64 | rw!("app-curry"; "(comp (pair (curry ?h) ?g) app)" => "(comp (pair id ?g) ?h)"), |
65 | 65 | rw!("app-curry-generalized"; "(comp (pair (comp ?f (curry ?h)) ?g) app)" => "(comp (pair ?f ?g) ?h)"), |