Skip to content

Commit 5ead80f

Browse files
committed
Sort outline a bit better
1 parent 5aa3d50 commit 5ead80f

File tree

2 files changed

+57
-45
lines changed

2 files changed

+57
-45
lines changed

content/all-about-exceptions.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ Should cover:
2121
* Exceptions problems. Can't wrap. Can't have two exceptions. No idea how exception was thrown.
2222
* [Wrap exceptions to provide context](http://stackoverflow.com/questions/27346380/how-to-wrap-exceptions-to-provide-context)
2323
* [General dislike of exceptions](http://www.reddit.com/r/haskell/comments/2ety9f/new_blog_post_dealing_with_asynchronous/ck3fkbp)
24+
* enclosed-exceptions

outline/intermediate-haskell.md

Lines changed: 56 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -31,47 +31,59 @@ follow the rest of this outline in particular.
3131
* [All About Exceptions](../content/all-about-exceptions.md)
3232
* Basics of lazy evaluation
3333

34-
## General patterns
35-
36-
This section demonstrates some common Haskell coding patterns, how they work,
37-
when they're useful, and possible pitfalls.
38-
39-
* [Monad Transformers](../content/monad-transformers.md)
40-
* Continuation Passing Style
41-
4234
## Data structures
4335

4436
Covers some of the most commonly used data structures in Haskell, and the
4537
libraries providing them.
4638

47-
* vector
39+
* vector (cover vector-algorithms)
4840
* containers
4941
* unordered-containers
50-
* text
42+
* text (cover text-icu)
5143
* bytestring
5244

53-
## Standard programming needs
54-
55-
* Calling external processes (can include [Data.Conduit.Process](https://www.fpcomplete.com/user/snoyberg/library-documentation/data-conduit-process))
56-
* Builders and difference lists
57-
58-
## Concurrency and parallelism
45+
## General patterns
5946

60-
Simon Marlow's book [Parallel and Concurrent Programming in
61-
Haskell](http://chimera.labs.oreilly.com/books/1230000000929/index.html) is a
62-
highly recommended read on the subject. In addition, we have the following
63-
topics:
47+
This section demonstrates some common Haskell coding patterns, how they work,
48+
when they're useful, and possible pitfalls.
6449

65-
* The async package
66-
* Common concurrency patterns (e.g., the auto-update package)
67-
* Concurrency patterns: worker threads, signals, blocking on TVars
68-
* STM: blocking semantics around mutable variables
50+
* [Monad Transformers](../content/monad-transformers.md)
51+
* Continuation Passing Style
52+
* Builders and difference lists
6953

7054
## Testing
7155

7256
* QuickCheck
7357
* hspec, tasty, others?
7458

59+
## Serialization
60+
61+
* binary/cereal
62+
* blaze-builder/bytestring-builder
63+
* blaze-html
64+
* attoparsec
65+
* aeson
66+
* yaml
67+
* xml-conduit/html-conduit
68+
* base16-bytestring/base64-bytestring
69+
70+
## Standard programming needs
71+
72+
* Calling external processes (can include [Data.Conduit.Process](https://www.fpcomplete.com/user/snoyberg/library-documentation/data-conduit-process))
73+
* HTTP client library
74+
* Command line argument parsing optparse-applicative
75+
* cryptohash
76+
* time
77+
* Random number generation (mwc-random)
78+
* Possibly others from: https://www.fpcomplete.com/school/using-fphc/recommended-libraries
79+
80+
## Best practices
81+
82+
* [Exceptions best practices](../content/exceptions-best-practices.md)
83+
* Typeclasses versus records
84+
* "Good" use of typeclass extensions
85+
* Proper error reporting (Either, Maybe, ErrorT, exceptions package and using MonadThrow)
86+
7587
## Streaming data
7688

7789
Streaming data libraries allow you to process large amounts of input with
@@ -88,6 +100,20 @@ the following provides an overview of the different options.
88100
* https://www.fpcomplete.com/user/snoyberg/library-documentation/resourcet
89101
* http://www.yesodweb.com/blog/2014/03/network-conduit-async
90102
* https://www.fpcomplete.com/user/snoyberg/library-documentation/vectorbuilder
103+
* conduit-combinators
104+
105+
## Concurrency and parallelism
106+
107+
Simon Marlow's book [Parallel and Concurrent Programming in
108+
Haskell](http://chimera.labs.oreilly.com/books/1230000000929/index.html) is a
109+
highly recommended read on the subject. In addition, we have the following
110+
topics:
111+
112+
* The async package
113+
* Common concurrency patterns (e.g., the auto-update package)
114+
* Concurrency patterns: worker threads, signals, blocking on TVars
115+
* STM: blocking semantics around mutable variables
116+
* resource-pool
91117

92118
## Web programming
93119

@@ -98,12 +124,6 @@ individual approaches. For now:
98124
* [Web Application Interface](https://github.com/yesodweb/yesodweb.com-content/blob/master/book/asciidoc/web-application-interface.asciidoc)
99125
* [Yesod Web Framework](http://www.yesodweb.com/book)
100126

101-
## Advanced topics
102-
103-
* [Primitive Haskell](../content/primitive-haskell.md)
104-
* https://wiki.haskell.org/Evaluation_order_and_state_tokens
105-
* Cabal trickery for backwards compatibility: Cabal CPP macros. Paths module. Flags. How to test for windows. Defaulting macros for ghci. Flags to either use new library version or another package (bytestring-builder) and set a CPP variable.
106-
107127
## Big library guide
108128

109129
The following libraries are somewhat "large" in the sense that they address
@@ -123,28 +143,19 @@ preludes (in alphabetical order).
123143
* basic-prelude
124144
* classy-prelude
125145

126-
## Best practices
127-
128-
* [Exceptions best practices](../content/exceptions-best-practices.md)
129-
* Typeclasses versus records
130-
* "Good" use of typeclass extensions
131-
* Proper error reporting (Either, Maybe, ErrorT, exceptions package and using MonadThrow)
132-
133-
## Serialization
146+
## Advanced topics
134147

135-
* binary/cereal
136-
* blaze-builder/bytestring-builder
137-
* blaze-html
138-
* attoparsec
139-
* aeson
140-
* yaml
141-
* xml-conduit
148+
* [Primitive Haskell](../content/primitive-haskell.md)
149+
* https://wiki.haskell.org/Evaluation_order_and_state_tokens
150+
* Cabal trickery for backwards compatibility: Cabal CPP macros. Paths module. Flags. How to test for windows. Defaulting macros for ghci. Flags to either use new library version or another package (bytestring-builder) and set a CPP variable.
142151

143152
## Database Programming
144153

145154
* persistent
146155
* esqueleto
147156
* opaleye
157+
* mysql-simple
158+
* postgresql-simple
148159

149160
## Debugging/optimizing
150161

0 commit comments

Comments
 (0)