Why Haskell?

Haskell logo

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.

- PythonVsHaskell

I look at my library:

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