-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathhaskell.html
121 lines (114 loc) · 5.63 KB
/
haskell.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<html>
<head>
<title>Haskell — The™ Reading Consortium</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h2>Haskell</h2>
<nav><a href=".">home</a></nav>
</header>
<p>
We are primarily following <a href="http://haskellbook.com/">Haskell Programming from First Principles</a> with some ancillary reading added in here and there.
</p>
<h3>Schedule</h3>
<p>
We covered the first half of the book (§1-19 & §23) as part of a university special topics course.
The reading schedule and exercises can be seen on the <a href="https://web.mst.edu/~nmjxv3/cs4000/">course website</a>.
</p>
<table>
<tr>
<th width="20%">Meeting date</th>
<th width="80%">Reading</th>
</tr>
<tr>
<td>Feb. 16, 2019</td>
<td>
<ul>
<li>HPFP §20: Foldable</li>
<li>
Consider writing <code>Foldable</code> for <code>data Tree a = Leaf | Node (Tree a) a (Tree a)</code>.
What happens if you change the order the elements are <code>mappend</code>ed in?
</li>
</ul>
</td>
</tr>
<tr>
<td>Mar. 2, 2019</td>
<td>
<ul>
<li>HPFP §21: Traversable</li>
<li><a href="https://blog.jakuba.net/2014/07/30/Foldable-and-Traversable/">Arnold, <i>Foldable and Traversable</i></a></li>
<li><a href="https://arxiv.org/abs/1202.2919">Jaskelioff, <i>An Investigation of the Laws of Traversals</i></a></li>
</ul>
</td>
</tr>
<tr>
<td>Mar. 30, 2019</td>
<td>
<ul>
<li>HPFP §22: Reader</li>
<li><a href="http://book.realworldhaskell.org/read/programming-with-monads.html">O'Sullivan et. al., <i>Real World Haskell: Programming With Monads</i></a></li>
<li><a href="http://www.staff.city.ac.uk/~ross/papers/Applicative.html">McBride and Patterson, <i>Applicative Programming with Effects</i></a></li>
<li><a href="https://www.microsoft.com/en-us/research/wp-content/uploads/2016/08/desugaring-haskell-haskell16.pdf">Marlow et. al., <i>Desugaring Haskell's do-Notation into Applicative Operations</i></a>, particularly §1, 2, 5, & 6</li>
</ul>
</td>
</tr>
<tr>
<td>Apr. 13, 2019</td>
<td>
<ul>
<li>HPFP §24: Parser Combinators</li>
<li><a href="https://brhoades.github.io/presentations/20190413_parser_combinators/">Billy Rhoades, <i>Parser Combinators</i></a> (Slides detailing practical examples of using parser combniators)</li>
<li><a href="https://wiki.haskell.org/Typeclassopedia#Failure_and_choice:_Alternative.2C_MonadPlus.2C_ArrowPlus">Yorgey et. al., <i>Typeclassopedia: Failure and choice: Alternative, MonadPlus, ArrowPlus</i></a></li>
<li><a href="https://stackoverflow.com/questions/13080606/confused-by-the-meaning-of-the-alternative-type-class-and-its-relationship-to">Fenwick et. al., <i>Confused by the meaning of the 'Alternative' type class and its relationship to other type classes - Stack Overflow</i></a></li>
<li><a href="http://gelisam.blogspot.com/2015/09/two-kinds-of-backtracking.html">Geli, <i>Two kinds of backtracking</i></a></li>
</ul>
</td>
</tr>
<tr>
<td>Apr. 27, 2019</td>
<td>
<ul>
<li>HPFP §25: Composing Types</li>
<li>HPFP §26: Monad Transformers</li>
</ul>
</td>
</tr>
<tr>
<td>May 11, 2019</td>
<td>
<h4>Lenses:</h4>
<ul>
<li><a href="http://www.haskellforall.com/2013/05/program-imperatively-using-haskell.html">Gabriel Gonzales, <i>Program Imperatively using Haskell Lenses</i></a></li>
<li><a href="http://adit.io/posts/2013-07-22-lenses-in-pictures.html">Aditya Bhargava, <i>Lenses in Pictures</i></a></li>
<li><a href="https://medium.com/@russmatney/haskell-lens-operator-onboarding-a235481e8fac">Russell Matney, <i>Haskell Lens Operator Onboarding</i></a></li>
<li><a href="https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/a-little-lens-starter-tutorial">Joseph Abrahamson, <i>A Little Lens Starter Tutorial</i></a></li>
<li><a href="https://artyom.me/lens-over-tea-1">Artyom Kazak, <i>lens over tea #1: lenses 101, traversals 101, and some implementation details</i></a></li>
<li><a href="https://www.youtube.com/watch?v=cefnmjtAolY">Edward Kmett, <i>Lenses, Folds, and Traversals</i></a></li>
</ul>
<h4>Codata:</h4>
<ul>
<li><a href="https://www.tac-tics.net/blog/data-vs-codata">Michael Maloney, <i>Data vs. Codata</i></a></li>
<li><a href="https://www.researchgate.net/publication/332248372_Codata_in_Action">Downen et. al., <i>Codata in Action</i></a>, §1 & 2</li>
</ul>
<h4>Lists:</h4> (oddly, related to codata!)
<ul>
<li><a href="https://arxiv.org/abs/1808.08329v1">Johannes Waldmann, <i>When You Should Use Lists in Haskell (Mostly, You Should Not)</i></a></li>
</ul>
<h4>The <code>amb</code> Operator:</h4>
<ul>
<li><a href="http://www.randomhacks.net.s3-website-us-east-1.amazonaws.com/2005/10/11/amb-operator/">Erik Kidd, <i>McCarthy's Ambiguous Operator</i></a></li>
<li><a href="https://wiki.haskell.org/Amb">(Haskell Wiki), <i>Amb</i></a></li>
<li><a href="http://www-formal.stanford.edu/jmc/basis1/basis1.html">John McCarthy, <i>A Basis For A Mathematical Theory of Computation</i></a> (see section on "Ambiguous Functions")</li>
<li><a href="http://www.randomhacks.net/probability-monads/">Erik Kidd, <i>Build Your Own Probability Monads</i></a></li>
</ul>
<h4>Halloween:</h4> (very optional)
<ul>
<li><a href="http://kataskeue.com/gdp.pdf">Matt Noonan, <i>Ghosts of Departed Proofs</i></a></li>
</ul>
</td>
</tr>
</table>
</body>
</html>