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

    Haskell. It’s a fantastic language for writing your usual run of the mill DB-backed web APIs and can do a lot of things that other languages simply can’t (obviously not in terms of computation, but in terms of what’s possible with the type system).

    I’ve been writing it professionally for a while and am very happy with it. Would be nice if the job market for it was a bit broader. You can definitely get jobs doing it, you just don’t have quite as broad of a pool to choose from.

    • 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.

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

      The problem with Haskell is how unnecessarily complicated everything around it gets. Preludes, monads, monoids, functors, algebraic datatypes, and all that jazz. It feels like nobody in the Haskell community can explain anything without using a bunch of terms nobody else knows. Even guides and books written for imperative programmers start throwing terms around with examples only in Haskell. It’s being an intern at a company and getting told to use the thingamabob to circumvolicate the badinga with a microgalic twist to the faddle, and when asking “uh, what are those?” getting a detailed answer just using more lingo.

      Many programming languages have included parts of the functional programming paradigm with lambdas, higher-order functions, and more expansive typing systems, but they explain them so much better than any Haskell book or programmer ever has to me.

      If Haskell documentation, guide, tutorial, and book writers with imperative programming language experience actually tried to put themselves in the shoes of newbies, tried to remember what it was like being dumb to Haskell and the computer science theory behind it, maybe more programmers would be open to discovering the promised land and walking up that hill instead of climbing a cliff.

      Anti Commercial-AI license