JSON Parser 100% From Scratch in Haskell (only 111 lines)
Why Hacker News recommends it
HN recommends it as a hands-on way to understand Haskell and parser combinators by watching a parser get built live.
What it is
Tsoding live-codes a JSON parser from scratch in Haskell in about 111 lines, using only the standard library. It is an edited Twitch stream that explains the intuition behind parser combinators, functors, applicatives and monads.
Recommended by 3 HN commenters across 3 different months, 2020 to 2022.
What Hacker News said
Recommends lubesGordi · 2020-07 · on “Basics of Haskell – Code and exercises”
Agreed! I've been trying to learn haskell for a long time, and this guy writes a json parser live, giving his intuition along the way. It's helped me immensely. [this video]
Recommends ducaale · 2020-09 · on “List of YouTube channels for improving web development and programming skills”
I have recently discovered [tsoding twitch channel]( [LINK] ) which describes itself as Recreational programming. The topics range from webassembly and Game development to functional programming in haskell and ocaml. Some of the interesting random things I found there include: * [a parser combinator in haskell]( [this video] ) * [stack based language compiler in ocaml]( [LINK] ) You can find all the things that were done during the streams in [LINK] . You can also find his schedule at [LINK]
Recommends ObiWanFrijoles · 2022-03 · on “What Is IO Monad? (2018) [video]”
Nice to see Tsoding on the front page. He has another great video that covers a bunch of topics while making a JSON parser with only the Haskell standard library: [this video]
Cites ducaale · 2020-08 · on “Inventing Monads”
To understand monads, I think it helps to know a language where expressing such a concept is more natural. Although I do not claim to know 100% what monads are yet, coming across these features made it easier for me to understand the concept a little bit. - Algebraic data types - OCaml's let expressions - F#'s computation expressions I also think that it is important to write something that naturally requires the use of monads. One thing that spring to mind is Parser Combinators. - [LINK] - [this video]