Why Haskell?
A long time ago, I was on Basic (Amstrad) and after Red Hat Linux with Bash and Python. It was my big evolution from Basic. From that day, I love Python but I needed to use others.
During studies
During my studies, I used C and Assembly… Welcome to the electronic’s world, microcontrollers in C and ASM. I hated my first time with them and finally liked them after few weeks. Immediately after, I used C++ and I liked to be back with OOP.
I used R for data analysis and finally, I preferred to do it using Python.
I did a little of Swift and I liked it for iOS and macOS.
Ruby
I tried Ruby and RoR (Ruby on Rails) for a personal project and I regretted when it was time to upgrade ruby for security purposes.
In addition, I hated Ruby’s magic…
At work before 2019
Ruby
I needed to use Ruby with Chef (configuration management) and finally, with the team, we built Ansible roles and playbooks to handle a very specific and strange task: rebooting datacenters of a cloud provider (thank you Intel for Meltdown/Spectre).
When you have a team that did all with Ruby and finally migrates to Ansible, it’s not for nothing.
Never forget to use the language that you like and want to use. It was terrible to be forced to use one language that you dislike/hate. Finally, you won’t see it again and it’s my case because it was the poor experience possible with Chef and Ruby.
- sycured
Go
I needed to patch and customize Vault (Hashicorp).
It’s very close to C/C++ and it’s not a dream for me to use it.
SwiftUI
It’s not the same thing as Swift because a lot of basic functions aren’t available natively on macOS without using Catalyst.
Haskell
I searched unbreakable language for my project (bioinformatics) and wanted:
- unbreakable language like Ada
- statically typed
- list comprehension like Python
- compilation to binary
- very efficient output on failure (compilation)
- no Java VM
Python’s list comprehension syntax is taken (with trivial keyword/symbol modifications) directly from Haskell. The idea was just too good to pass up.
I look at my library:
- Bioinformatics Programming Using Python, inside you can read: “Python is an interesting and powerful language with respect to computing paradigms. Its skeleton is procedural, and it has been significantly influenced by functional”
- Parallel and Concurrent Programming in Haskell, the author is a co-developer of the Glasgow Haskell Compiler (GHC) and works at Facebook
- Real-World Functional Programming with Examples in F# and C#
I found the common point, Functional Programming, so I read again a little the book about C# and F#… Ok, I can use it but I remember Python’s list comprehension syntax … Haskell. I take Real World Haskell and Learn You a Haskell for Great Good!.
I was a little bored and told me, go to experiment with an existing code…
I rewrote my streaming_calc to streaming_calc_haskell with tests (HSpec) and I liked it.
One month after, I look a good project (GraphQL for PostgreSQL) and this service is written in Haskell.
WOW! It’s what I want for my project!
Used at Facebook, FPComplete
- sycured
And I find 5 Years of Haskell in Production, this was the ultimate confirmation. Checkpad uses Haskell so it’s ready for critical services.
I need to read and practice a lot more but I love Haskell and I found Reflex-FRP that permits to do web frontend in Haskell.
At work from 2019
We use few languages:
- SQL
- GraphQL (service written in Haskell)
- Haskell
- Python
- Bash
- NodeJS
- Java
We use Java for 2 services and I want to migrate them to Haskell…
I have a dream: Kafka rewritten in Haskell (or Go or Rust if Haskell is too hard)
- sycured