1
1
mirror of https://github.com/sdiehl/wiwinwlh.git synced 2024-08-17 07:50:22 +03:00

Write more

This commit is contained in:
sdiehl 2020-02-05 08:28:55 +00:00
parent f1edf132d4
commit d4cefde9c7
3 changed files with 54 additions and 57 deletions

View File

@ -6,8 +6,8 @@
\color{black}
\begin{flushright}
\Huge\textbf{What I Wish I Knew When Learning Haskell}\\
\line(1,0){450} \\ \\
\Huge\textbf{What I Wish I Knew When Learning Haskell}
\line(1,0){450} \\
\Large{Stephen Diehl}
\end{flushright}

View File

@ -22,10 +22,22 @@
\usepackage{tikz}
\usepackage{hyperref}
\hypersetup{%
colorlinks=false, % hyperlinks will be black
colorlinks=true, % hyperlinks will be black
linkcolor=black,
linkbordercolor=red, % hyperlink borders will be red
pdfborderstyle={/S/U/W 1} % border style will be underline of width 1pt
}
\newif\ifprint
\printtrue
\ifprint
\let\oldhref\href
\renewcommand\href[2]{%
\oldhref{#1}{#2}%
\footnote{\url{#1}}%
}
\fi
\usepackage{amssymb,amsmath}
\usepackage{framed}
\usepackage{fancyvrb}
@ -173,9 +185,6 @@ $include-before$
$endfor$
$if(toc)$
{
$if(colorlinks)$
\hypersetup{linkcolor=$if(toccolor)$$toccolor$$else$black$endif$}
$endif$
\setcounter{tocdepth}{$toc-depth$}
\tableofcontents

View File

@ -4958,14 +4958,6 @@ the collective programmer consciousness and can often be non-intuitive to the
novice. Some time is often needed to fully grok how lazy evaluation works and
how to wield it's great power and when to force strictness.
See:
* [Oh My Laziness!](http://alpmestan.com/posts/2013-10-02-oh-my-laziness.html)
* [Reasoning about Laziness](http://www.slideshare.net/tibbe/reasoning-about-laziness)
* [Lazy Evaluation of Haskell](http://www.vex.net/~trebla/haskell/lazy.xhtml)
* [More Points For Lazy Evaluation](http://augustss.blogspot.hu/2011/05/more-points-for-lazy-evaluation-in.html)
* [How Lazy Evaluation Works in Haskell](https://hackhands.com/lazy-evaluation-works-haskell/)
Strictness
----------
@ -5290,6 +5282,15 @@ bottom, we fail at the usage site instead of the outer pattern match.
~~~~ {.haskell include="src/05-laziness/lazy_patterns.hs"}
~~~~
External Resources
------------------
* [Oh My Laziness!](http://alpmestan.com/posts/2013-10-02-oh-my-laziness.html)
* [Reasoning about Laziness](http://www.slideshare.net/tibbe/reasoning-about-laziness)
* [Lazy Evaluation of Haskell](http://www.vex.net/~trebla/haskell/lazy.xhtml)
* [More Points For Lazy Evaluation](http://augustss.blogspot.hu/2011/05/more-points-for-lazy-evaluation-in.html)
* [How Lazy Evaluation Works in Haskell](https://hackhands.com/lazy-evaluation-works-haskell/)
<hr/>
Prelude
@ -5811,27 +5812,8 @@ Variant Module
<b>strict bytestring</b> Data.ByteString
<b>lazy bytestring</b> Data.ByteString.Lazy
Escaping Text
--------------
Haskell uses C-style single-character escape codes
Escape Unicode Character
------ ------- ----------------------
\\n U+000A newline
\\0 U+0000 null character
\\& n/a empty string
\\' U+0027 single quote
\\\\ U+005C backslash
\\a U+0007 alert
\\b U+0008 backspace
\\f U+000C form feed
\\r U+000D carriage return
\\t U+0009 horizontal tab
\\v U+000B vertical tab
\\" U+0022 double quote
#### Conversions
String Conversions
------------------
Conversions between strings types ( from : left column, to : top row ) are done
with several functions across the bytestring and text libraries. The mapping
@ -6018,6 +6000,27 @@ to write well-typed regex expressions as strings.
~~~~ {.haskell include="src/07-text-bytestring/regex.hs"}
~~~~
Escaping Text
--------------
Haskell uses C-style single-character escape codes
Escape Unicode Character
------ ------- ----------------------
\\n U+000A newline
\\0 U+0000 null character
\\& n/a empty string
\\' U+0027 single quote
\\\\ U+005C backslash
\\a U+0007 alert
\\b U+0008 backspace
\\f U+000C form feed
\\r U+000D carriage return
\\t U+0009 horizontal tab
\\v U+000B vertical tab
\\" U+0022 double quote
<hr/>
Applicatives
@ -6424,7 +6427,7 @@ See:
* [Control.Monad.Except](https://hackage.haskell.org/package/mtl-2.2.1/docs/Control-Monad-Except.html)
spoon
Spoon
-----
Sometimes you'll be forced to deal with seemingly pure functions that can throw
@ -6445,12 +6448,13 @@ See:
* [Spoon](https://hackage.haskell.org/package/spoon)
<hr/>
Advanced Monads
===============
TODO
Function Monad
--------------
@ -7543,7 +7547,7 @@ scoping dictionary.
~~~~ {.haskell include="src/14-interpreters/initial_interpreter.hs"}
~~~~
What's especially nice about this approach is how naturally catamorphisms
What is especially elegant about this approach is how naturally catamorphisms
compose into efficient composite transformations.
```haskell
@ -7949,7 +7953,7 @@ Unit tests
11 tests completed
```
silently
Silently
--------
Often in the process of testing IO heavy code we'll need to redirect stdout to
@ -9975,8 +9979,6 @@ iterateN :: Int -> (a -> a) -> a -> Vector a
~~~~ {.haskell include="src/20-data-structures/vector.hs"}
~~~~
See: [Numerical Haskell: A Vector Tutorial](http://wiki.haskell.org/Numeric_Haskell:_A_Vector_Tutorial)
Mutable Vectors
---------------
@ -10594,8 +10596,6 @@ pure and can always be rolled back if a commit fails.
~~~~ {.haskell include="src/22-concurrency/stm.hs"}
~~~~
See: [Beautiful Concurrency](https://www.fpcomplete.com/school/advanced-haskell/beautiful-concurrency)
Monad Par
---------
@ -10806,8 +10806,6 @@ network protocol:
~~~~ {.haskell include="src/24-parsing/attoparsec.hs"}
~~~~
See: [Text Parsing Tutorial](https://www.fpcomplete.com/school/starting-with-haskell/libraries-and-frameworks/text-manipulation/attoparsec)
Configurator
------------
@ -11074,8 +11072,6 @@ operator (``=$``) for combining Sources and Sink and a Conduit and a Sink respec
~~~~ {.haskell include="src/25-streaming/conduit.hs"}
~~~~
See: [Conduit Overview](https://www.fpcomplete.com/user/snoyberg/library-documentation/conduit-overview)
</hr>
Cryptography
@ -13280,11 +13276,6 @@ or ST.
~~~~ {.haskell include="src/29-ghc/monad_prim.hs"}
~~~~
See:
* [Evaluation order and state tokens](https://www.fpcomplete.com/user/snoyberg/general-haskell/advanced/evaluation-order-and-state-tokens)
ghc-heap-view
-------------
@ -14114,6 +14105,8 @@ primop IntSubOp "-#" Dyadic Int# -> Int# -> Int#
Runtime System
---------------
TODO
The GHC runtime system is a massive part of the compiler. It comes in at around
70,000 lines of C and Cmm. There is simply no way to explain most of what occurs
in the runtime succinctly. There is more than two decades worth of work that has
@ -15662,11 +15655,6 @@ Commutative Diagrams
TODO
String Diagrams
---------------
TODO
Kleisli Category
----------------