I recently merged linear let- and where-bindings in GHC. Which means that we’ll have these in GHC 9.10, which is cause for celebration for me. Though they are much overdue, so maybe I should instead apologise to you....
@meejahhaskell-gi has bindings to gtk4 and adwaita. They are automatically generated so the API is mostly the same as in C, but there are some differences. Do read the readme on github.
Sometimes, for example when working with type-level lists, you have to compute with constraints. For example, you might want to say that a constraint holds for all types in a type-level list. In this episode, we will explore this special case of type-level programming in Haskell. We will also revisit type class aliases and take...
Today, Matthías and Joachim are interviewing Moritz Angermann. Moritz knew he wanted to use Haskell before he knew Haskell, fixed cross-compilation as his first GHC contribution. We'll talk more about cross-compilation to Windows and mobile platforms, why Template Haskell is the cause of most headaches, why you should be...
The discussion about incentives for stability was interesting. It reminded me of the maintainership standards proposal. I think it would be very useful to have Hackage show information like how quickly a package fixes version bounds when new versions of their dependencies are released.
@Profpatsch Are you implying syntactic sugar doesn't count towards the complexity budget? I'm just trying to test my understanding of the complexity budget by applying it to other things in the language.
Avi Press gave an excellent talk at Scale By the Bay 2023 about difficulties using Haskell at a startup. He mentions that even experienced Haskellers don’t always know how to use fundamental parts of the language. In particular,...
Some random thoughts after discussions at the FP Dag yesterday:
We need more learning resources based on pracitcal projects like https://learn-haskell.blog/, and the practical project should not be compiler related. Perhaps the Haskell School of Expression is also a good example of this but it is a bit outdated.
One objection to teaching Haskell through more practical Haskell projects is that it wouldn't show off the benefits if all you're working with I/O almost all of the time. I asked Jaap van der Woude who was sitting next to me - and is a fervent proponent of program design by calculation (e.g. as described in this book) - the question: "Could you calculate a game from its specification?" His immediate response was no, but later he did explain that he used to give students an assignment to specify the game Snake, which was already often too much for his students.
I'll have to try doing that exercise myself sometime. I still think that if we ever want to get to a future where we can write correct and reusable software, then we'll have to find a way to make it easier to formally specify our programs.
@DiazCarrete I find it kind of sad that the advice is basically to always write purpose-built classes and never try to fit them into a reusable framework.
Surely someone else must have already thought about rectangles and squares. Why can't I just reuse an existing shapes package which has everything I need (and the optimal class model)?
@DiazCarrete with type classes in Haskell my personal ideology is to avoid them unless you're very sure that they are really a good model of your domain and they have specific laws. But indeed, many classes and instances - in base even - don't satisfy that.
Not sure why trailing commas aren't more common in programming languages and formats. Does it make the parser simpler? Can't imagine. (current example: #haskell)
@pmidden Haskell has tuple sections which throw a wrench into consistency of trailing commas. E.g. ('a',) Is a function that takes any value x and returns the tuple ('a', x). So trailing commas cannot be ignored in tuples. For more complications see the ExtraCommas proposal discussion.
In this edition of our “Haskell in Production” series we interview Jeroen Bransen from Chordify, an online platform, which turns any music or song into chords. Jeroen has been working at Chordify since 2016. We discussed how Chordify ensures the correctness of Haskell code and scalability of its codebase, which libraries...
In this episode, Andres and Matti talk to Mike Sperber, CEO of Active Group in Germany. They discuss how to successfully develop an application based on deep learning in Haskell, contrast learning by example with the German bureaucratic approach, and highlight the virtues of having fewer changes in the language.
A circular program is a program that depends on its own result. It may be surprising that this works at all, but laziness makes it possible if output becomes available sooner than it is required. In this final episode of 2023, which will be longer than usual (probably 45-60 minutes), we will take a look at several examples of...
This was a fun episode. I was introduced to breadth first labeling and attribute grammars by Doaitse Swierstra at the Applied Functional Programming summer school in Utrecht. He was an inspiring figure.
The biggest disadvantage of circular programs is that it is very easy to get into infinite loops when you make mistakes. I wish there was an easy way to guarantee statically that circular programs are terminating (perhaps using types).
The Haskell Symposium is a two-day workshop co-located with the International Conference on Functional Programming (ICFP). In a previous blog post we discussed the Haskell Implementors’ Workshop (HIW), which is another Haskell-workshop co-located with ICFP, but unlike HIW, the Haskell Symposium is a scientific workshop with...
Maybe the symposium should start catering more to industrial users, now that Haskell itself also seems to be moving more in that direction (e.g. more backwards compatibility). The symposium already allows experience reports and demos.
@kosmikus@mangoiv I'm not really the right person to ask, having spent exactly zero time in industry. But I can imagine most industrial users have little interest in the main ICFP program and the other co-hosted workshops. So hosting the event separately at a smaller venue for just two days could make it possible to substantially lower the fees (and individual accommodation costs) which naturally makes the event more accessible. And I expect that the fees are generally a bigger problem outside of academia, so it cater more to industrial users and hobbyists.
[Tweag] A look under GHC's hood: desugaring linear types (www.tweag.io)
I recently merged linear let- and where-bindings in GHC. Which means that we’ll have these in GHC 9.10, which is cause for celebration for me. Though they are much overdue, so maybe I should instead apologise to you....
Issue 403 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2024-01-18.
[Well-Typed] The Haskell Unfolder Episode 18: computing constraints (well-typed.com)
Sometimes, for example when working with type-level lists, you have to compute with constraints. For example, you might want to say that a constraint holds for all types in a type-level list. In this episode, we will explore this special case of type-level programming in Haskell. We will also revisit type class aliases and take...
Haskell Interlude 41: Mike Angermann (haskell.foundation)
Today, Matthías and Joachim are interviewing Moritz Angermann. Moritz knew he wanted to use Haskell before he knew Haskell, fixed cross-compilation as his first GHC contribution. We'll talk more about cross-compilation to Windows and mobile platforms, why Template Haskell is the cause of most headaches, why you should be...
Issue 402 :: Haskell Weekly news (haskellweekly.news)
News about the Haskell programming language from 2024-01-11.
[Well-Typed Blog] When "blocked indefinitely" is not indefinite (well-typed.com)
Consider a Haskell thread trying to read from a TMVar:...
foldl traverses with State, foldr traverses with anything (h2.jaguarpaw.co.uk)
Avi Press gave an excellent talk at Scale By the Bay 2023 about difficulties using Haskell at a startup. He mentions that even experienced Haskellers don’t always know how to use fundamental parts of the language. In particular,...
Issue 401 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2024-01-04.
Haskell in Production: Chordify (serokell.io)
In this edition of our “Haskell in Production” series we interview Jeroen Bransen from Chordify, an online platform, which turns any music or song into chords. Jeroen has been working at Chordify since 2016. We discussed how Chordify ensures the correctness of Haskell code and scalability of its codebase, which libraries...
Haskell Interlude 40: Mike Sperber (haskell.foundation)
In this episode, Andres and Matti talk to Mike Sperber, CEO of Active Group in Germany. They discuss how to successfully develop an application based on deep learning in Haskell, contrast learning by example with the German bureaucratic approach, and highlight the virtues of having fewer changes in the language.
Issue 400 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2023-12-28.
Issue 399 :: Haskell Weekly newsletter (haskellweekly.news)
News about the Haskell programming language from 2023-12-21.
[Well-Typed] The Haskell Unfolder Episode 17: circular programs (www.youtube.com)
A circular program is a program that depends on its own result. It may be surprising that this works at all, but laziness makes it possible if output becomes available sooner than it is required. In this final episode of 2023, which will be longer than usual (probably 45-60 minutes), we will take a look at several examples of...
Well-Typed Blog: Haskell Symposium 2023 (well-typed.com)
The Haskell Symposium is a two-day workshop co-located with the International Conference on Functional Programming (ICFP). In a previous blog post we discussed the Haskell Implementors’ Workshop (HIW), which is another Haskell-workshop co-located with ICFP, but unlike HIW, the Haskell Symposium is a scientific workshop with...