Between the continued iteration on the GHC20xx meta-extension mechanisms, further improvements in the JS/wasm backends, and (my favorite) the availability of exception backtraces in base, there is lots in this release to be excited about.
See the Haskell Discourse thread for the full announcement:
If like me, you use ghcup tui, and constantly find yourself pressing "u" thinking it means "use" only to find it means "uninstall", you can change the keybindings by editing ~/.ghcup/config.yaml
On Wednesday, 2024-05-15, at 1830 UTC, we'll stream the 25th episode of the #Haskell#Unfolder. This episode should be interesting for Haskellers and non-Haskellers alike. Edsko and I will translate a #gRPC server from #Java to Haskell, contrasting the programming paradigms.
Note to self: type variables in #purescript and #haskell cannot be bound to partially applied type synonyms.
If you try to do so, in a sufficiently polymorphic way, you'll get very confusing type errors as the checker attempts to solve things with the variable bound to the "head" of the (parametrically expanded) type alias.
Last night it was (forall r. (forall f. Foldable1 f => f a -> r) -> r) and tonight it was (a -> Term a). Introducing a newtype can help, but beware impredicativity.
Last week I prototyped a git remote helper in a shell script, and now I'm rewriting that in #haskell as part of #gitAnnex.
I don't do this often and I wonder if it was a mistake, probably I should have written the prototype in haskell and then integrated it into git-annex. It's kind of amazing how a lot of complexity is melting away and also how I'm adding So Many Types and also throwing in a lot of robustness improvements.
;; Getting rid of explicit indexing was just step one.
-- After a few days/months/years, I now realize that it is more important and less buggy if I think only of the function to call (and whether I want to end up with a new (maybe pruned) collection, a single thing, or "both" (that's how I think of scans))
@aksharvarma Loop bodies are F-algebras and the "collection" over which you loop is a fixpoint of F. The #haskell recursion-schemes library handles that when F is an endofunctor on the term/expression category in your language.
You can still apply algebra semantics for "higher" functors F (when F is "really"/also a [type-indexed] functor family) with the appropriate Kan extensions.
I do know that maps/folds/etc. can be generalized to anything belonging to the functor class in #haskell; so things like trees and other "container" type things beyond just lists. However, I didn't want to introduce special terminology in what was otherwise free of such jargon.
As for the rest of what you said, I don't know enough category theory to understand what you meant, although I can recognize them as being category theory terms.
Thanks for pointing out the connections. Hopefully, one day I'll get to a level of understanding where I can grok what you said.
The #Haskell#Unfolder is now 1 year old! In the anniversary episode, Edsko and I will return to the very first topic and consider (un)folds, but now in a more generic setting. Live on YouTube 2024-05-01 at 1830 UTC.
Brisbane Functional Programming Group #BFPG May meetup, Tue 14th: #Gleam v1 (Rob Ellen) + Do your taxes with #Haskell (Fraser Tweedale). All curious minds are welcome!