• NostraDavid@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    Here’s what I remember from Haskell (around 2018):

    I love the language, but hate the tooling.

    Used it for Uni (did a minor where I learned Haskell, recursion, parsing and regex - probably the most information dense part of school I’ve ever had. Half a year of minor also burned me out, so I never went for my masters; I’m OK with my Bachelors :D ), but never felt like picking it back up.

    • expr@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      3 months ago

      The tooling has improved dramatically since then. There’s now a full-fledged language server (https://haskell-language-server.readthedocs.io/en/stable/), ghcup (https://www.haskell.org/ghcup/) is now a thing for installing/managing different versions of GHC/cabal/HLS, there’s now formatters (https://github.com/tweag/ormolu) and cabal has modernized significantly and supports multi-package projects much more comfortably now. Nix-based Haskell infrastructure is also now pretty nice. There’s even stuff like https://github.com/srid/haskell-template/blob/master/flake.nix to very quickly get spun up on a new project using Haskell and nix, including vscode, formatter, HLS, and a full development shell with a bunch of useful commands.

      Another great modern thing (which powers HLS) is that GHC can now emit .hie files for each file it compiled, which is basically a standardized representation of the AST for that module that can be consumed/manipulated programatically. Lots of tools can use this. One such tool that’s particularly useful is https://github.com/wz1000/HieDb, which constructs an sqlite database from the information in these files, so you basically can have an index of every symbol definition, reference, export, etc. all readily available to use however you want.