bitemyapp/learnhaskell

Add a small list of projects to explore

honza opened this issue · 7 comments

I find that many Haskell tutorials and articles focus on solving a particular issue the Haskell way. This is great and teaches you the idiomatic way of doing things. What seems to be missing though is how you should go about structuring your app and what the ordinary ways of writing software are.

I think there is value in adding a small of projects that live on GitHub that people go into and read in a single sitting to learn how real-world Haskell feels. For example, it wasn't until way into my learning of Haskell that I learned that one shouldn't be using the String type for reading files and that ByteString is much more appropriate.

What do you think?

I support this idea. Maybe https://github.com/cies/haskell-fractal could be an example?

@honza I've been working on a book and touching on the proper data structures to solve common problems is one thing I had in my outline. This is something that should be added to the guide as well, particularly if we can point to examples.

It's extremely minimal, but having stuff like http://bitemyapp.com/posts/2014-08-22-url-shortener-in-haskell.html to point to is pretty helpful.

Suggest what you think are good projects and I'll take a look and consider them for addition to a "practical Haskell menagerie".

I will close this issue when I push satisfactory content for this, it's on my radar.

@honza Still thinking about this - just been busy with the book and other projects. I should be on top of this sometime this week for sure.

No worries at all. This isn't urgent. I had a look through Haskell projects on GitHub but couldn't really find anything satisfying.

@bitemyapp I found a lot of code examples sorted according to complexity here.

@sumitsahrawat This was one of the libraries in the "beginner" section of code examples:

https://github.com/ekmett/tables/blob/master/src/Data/Table.hs#L1-L19

I'm not sure I trust their categorization.

They started learning with extensions it seems. Which surely is the opposite direction.