Covariance and GUIs
This week, we’ve added more reference material and new lessons to two of our ongoing courses.
We wrote a short explainer about threads. Find out what is meant by “green threads,” how Haskell’s threads relate to OS threads, and what the
-threaded GHC flag means.
We realized we hadn’t discussed the term levity polymorphism in our article on Primitives, levity, and boxing. Since it’s a term you see pop up in Haskell circles from time to time – usually when the GHC developers have inadvertently exposed some runtime details in the type or kind signatures GHCi displays – we thought it was worth correcting that, so we have added a short section to that article.
The page on
ScopedTypeVariables has been updated with a discussion of the second thing it does; in addition to allowing lexically scoped type variables as its name implies, it also allows pattern type signatures.
The latest lesson in the Functortown course is lesson 5 that introduces the
Bifunctor typeclass. It starts with an example from a previous lesson, an example that was previously law-breaking but can be made lawful and thoroughly tame by using
bimap instead of
fmap. We also break down the
class declaration of
Bifunctor a bit and discuss what the
Bifunctor documentation means by “the first and second arguments are covariant.”
Chris has the second lesson in the Timepieces series. It turns out making a clock with
gtk3 involves a lot more manual widgeting than we had to do with
fltkhs, so this first lesson gets us a window with centered text but not yet a clock.
Most of the reference material, albeit sometimes in condensed form, will be in the Joy of Haskell: Haskell Desk Reference. Some of the courses will be reformatted and periodically released as short books; the first of those, an improved form of the Validation course, is available as a book on Leanpub (incomplete at this time but to be finished shortly).