1. 27

  2. 6

    Richard joined NoRedInk in the fall of 2013 as an engineer. He introduced Elm to the stack in 2015, and later authored the book Elm in Action for Manning Publications. Today he works at NoRedInk on building the open-source programming language Roc, which can be found at roc-lang.org.

    TIL NoRedInk is creating another programming language. Hats off to them for being willing to make the investment.

    From the Roc FAQ

    Roc is a direct descendant of Elm. The languages are similar, but not the same.

    The Roc editor is one of the key areas where we want to innovate. Constraining ourselves to a plugin for existing editors would severely limit our possibilities for innovation.

    And creating a new editor, too!

    1. 6

      I like seeing examples Haskell in production, as I would like to understand the distinct advantages it offers in real world applications. After having written a decent amount of Haskell and quite a lot more of non-lazy plain ML (SML and OCaml), my naive and biased impression is that:

      • The Haskell ecosystem is a bit lacking in many areas outside compiler construction: https://github.com/Gabriella439/post-rfc/blob/main/sotu.md. Things have improved in areas such as web applications, though.

      • The language has too many extensions and feels a bit too big and fragmented, like C++. This also leads to a significant cognitive overload. If I stop writing Haskell for a few weeks, it’s hard to start back. It’s also hard to read code written by others if it uses extensions I’m not used to.

      • It is not easy to find employers / employees that use Haskell. However, this might be improving rapidly with the popularization of remote work.

      • I feel robustness is a bit hyped. If I want formal guarantees, something like Agda or Dafny is the way to go. Liquid Haskell does not feel nearly as mature. Using OCaml or Erlang, I feel I can write large programs that are reasonably correct more quickly.

      With that said, my experience in Haskell is limited, and I would love to hear someone telling me I am totally wrong. The language is very interesting, and I really want it to succeed. Are there any advantages that offset these disadvantages?

      1. 9

        I have been using Haskell professionally for quite a few years now- although not exclusively and I do have experience with other languages so hopefully my perspective here isn’t too skewed.

        Overall, I think that Haskell is a good choice for most general development work. There are tradeoffs of course, but the type safety is definitely a win for refactoring and coordination in larger teams. Most Haskell programs aren’t encoding everything at the type level to prove correctness so you do still have some bugs, but the balance between “really good correctness guarantees” and still being fast to develop with is favorable to Haskell over a lot of other languages.

        The ecosystem is good enough for a lot of things. There are certainly gaps, but I think people over-estimate the cost of them. In reality I’ve found that the benefits of Haskell outweigh the costs when I need to write a library in most cases.

        The number of extensions and different styles of code is a thing. At places I’ve worked the code tends to converge toward a shop style, even when it’s not enforced. I do find the difference in styles throws off less experienced people, but I’m not sure it’s much worse than dealing with different frameworks in other languages. I do think the C++ comparison is apt in a lot of ways- the “never met a feature it didn’t like” was something that always bothered me about C++ and I can see how Haskell could feel the same way, but in practice the set of features feel better integrated in a lot of cases, and the fact that you need to use a language pragma to enable them gives you an easy to search thing to learn about the feature.

        For hiring, I’ve found it to be a bit inconsistent. Overall my impression is that there are more people who want to use Haskell than there are Haskell jobs, so it’s not hard for a decent company who is committed to Haskell to find good developers. It’s much harder for a company that is mostly working in other languages to attract developers to a Haskell team, because Haskell developers tend to be very averse to risking bait-and-switch jobs.

        In the end, I think Haskell is a great option for anything being built by a team who like Haskell, and it’s a compelling enough language that a curious team would benefit from trying it out. That said, the biggest factor in language success in my experience is matching the language with the team, and if you have people who don’t want to work with Haskell I don’t think you’d be successful in forcing it.

        1. 2

          If you go on Github and sort by stars and filter by language, Haskell doesn’t come up very high considering how old it is. I think Haskell has had an outsized influence on other languages, particularly Rust and Swift, but it just isn’t great for general purpose work.

          1. 4

            I think Haskell is a great choice for general purpose work, but it’s historically not been a great choice for an open source project because there have been fewer Haskell developers out there who would want to contribute. The result has been that a lot of open source Haskell work has been on libraries and other things internal to the Haskell ecosystem. There are a few notable exceptions (pandoc and xmonad are probably the two most widely recognized examples).

            Over the last few years there’s been a shift toward trying to file down the sharp edges on the Haskell user experience, and a lot of things have improved. It took a while, but I think Haskell’s ecosystem is starting to catch up with where Haskell as a language has been for a long time, as a useful way to build general purpose tools.

            1. 1

              I remember finding it noticeable that Hackage seemed to have a higher ratii of libraries to programs on it than, say, PyPI.

              I assumed this was a sign that most of the things were being used behind closed doors. :)

        2. 4

          I can never get enough of Richard Feldman and his work/commentary.