Hacker News new | ask | show | jobs
by wyager 3661 days ago
Author here. Glad to see this on HN! Happy to answer any questions.
5 comments

Thanks for the writeup! I am wanting to learn Haskell and this inspires confidence that one can develop larger projects using a more rigorous, less error prone approach. I like it.
Shouldn't the type of the monadic serverStep be "Message -> m ()" to match the type of the explicit "serverStep :: Config -> State -> Message -> (State, [Message])" ? Aka, serverStep isn't a monadic object, it's a Kleisli arrow.
You're right, that's a typo. I even wrote it out correctly later. I'll fix that. Thanks!
Great post. How much knowledge and experience of haskell did you have before starting this project?
I'd been dabbling with it for a year or two.

Probably my most significant previous use was in my second-semester computer architecture class as a substitute for Verilog. Using Christiaan Baaij's Cλash project, one can transform a (large) subset of Haskell into VHDL/Verilog/SystemVerilog and slap it on an FPGA. There's a rundown of that project on my blog too.

My project partner had never really used Haskell before, so he was learning as we went. By the end of the semester he was writing code no problem. "Immersion learning" seemed to work quite well here.

Why Haskell? What made you choose Haskell?
For the first project, curiosity. For subsequent projects, the desire to repeat our experience with the first project.
This was a great post. Really love how you walked through the example code.