Welcome to the first issue of Haskell Weekly in 2017! Haskell is an advanced, purely functional programming language. This is a weekly summary of what’s going on in its community. You can subscribe to the email newsletter or the Atom feed.
Want to contribute to Haskell Weekly? Send HaskellWeekly a tweet or open an issue on GitHub.
News from the Haskell community
Over the past months we have discussed changes to GHC’s process for collecting, discussing, and considering new language extensions, compiler features, and the like. We have formed the GHC Steering Committee which will be responsible for evaluating the proposals that run through the process.
So, let’s assume that we do want Haskell’s strong type system and that we also want a powerful metaprogramming model that permits syntactic extensions. What would that look like?
You will often see top-level modules like Data.Time that simply re-export modules below them in the hierarchy. Doing this by hand is tedious and error-prone. Autoexporter does this tedious work for you.
FLAC is awesome and Haskell is awesome, surely there should be a way to achieve an even higher level of awesomeness by coding a safe Haskell API to the fast libFLAC library.
My colleague Esther proposed the following challenge: given a string, decompose it into elemental symbols from the periodic table (if possible). For example, “Hi Esther” becomes “H I Es Th Er”. In general there might be no solutions, one solution, or several.
When you briefly pause typing, Haskell for Mac will suggest completions based on both imported names and names that are already being used elsewhere in the currently edited module (or playground).
Those that espouse the value of backwards compatibility often claim that backwards compatibility is simply a matter of never removing things. But anyone who has published APIs that involve data structures know that the story is not so simple.
Hackage enforces that package names are unique (so that no one else can claim the name
conduit, for instance), but does nothing to ensure unique module names (so someone else could write a package named
my-conduitwith a module named
Type defaulting is introduced to solve the ambiguous type problems caused by type classes. The compiler can’t arbitrarily choose a type because the choice of the type affects the program behavior.
From our own experience and the literature, we can conclude that maintenance is perhaps the most important part of developing software. In this article we’ll explore why Haskell shines in maintenance.
Package of the week
For the first time ever, Haskell Weekly is picking a package of the week! The package of this week is Rapid, a helper library for rapid prototyping in GHCi sessions.
Send HaskellWeekly a tweet to nominate next week’s package!