Newsletter
Issue 106 2018-05-10
Subscribe now! We'll never send you spam. You can also follow our feed. Read more issues in the archives.
Welcome to another issue of Haskell Weekly! Haskell is a safe, purely functional programming language with a fast, concurrent runtime. This is a weekly summary of what’s going on in its community.
Want to see something featured in Haskell Weekly? Open an issue or pull request on GitHub.
Featured
-
A Rosetta Stone for Haskell abstractions
It can be difficult at various stages of learning Haskell to see how the parts come together or how to use particular abstractions. This reference aims to ease that process by providing concrete examples of Haskell abstractions in a simple context.
-
About a year later, you revisit the problem and remember that all functions are examples of
Reader
monads and things start to make sense. -
Conversations with a six year old on functional programming
He gasped in astonishment at the idea of putting function machines into function machines.
-
Dynamic programming in Haskell is just recursion
Dynamic programming is no more difficult to implement in Haskell than in C. In fact, dynamic programming in Haskell seems trivially simple, because it takes the form of regular old Haskell recursion.
-
Denotational design gives us the ability to look at designs and ask ourselves whether or not they are correct.
-
It annoys me that I have a function with a (somewhat) descriptive name,, but then I also have to give the test a label. Not only is this duplication, but it also adds an extra maintenance overhead, because if I decide to rename the test, should I also rename the label?
-
Pinpointing deadlocks in Haskell
There are all sorts of issues that arise in a concurrent setup, such as race conditions, starvation, deadlocks, data corruption, you name it. All of these are also applicable to Haskell, and in this post, I would like to introduce a simple yet very effective way to track down deadlocks.
-
State machine testing with Echidna
Echidna is a library for generating random sequences of calls against a given smart contract’s ABI and making sure that their evaluation preserves some user-defined invariants.
-
The
Const
applicative and monoidsThe
Applicative
type class has a somewhat infamous reputation for having opaque laws. There are a lot of great alternative rephrasing of these laws, from many different approaches. For this post, however, I want to talk aboutApplicative
in terms of one of my favorites:Const
. -
Type-level induction in Haskell
One of the most basic tools for use in type-level programming is the Peano definition of the natural numbers. Using the new
TypeFamilyDependencies
extension, we can parameterize the notion of “size”.
Jobs
-
Software engineer at ITProTV in Gainesville, Florida
ITPro.TV is a fast-growing digital media business that focuses on continuing education in technical domains. We are currently accepting applications for full-stack software professionals to join our small but talented multidisciplinary team.
In brief
- Announce: Haskell Platform 8.4.2
- BayHac 2018
- Comonads from monads, and a new way do the reverse
- Functional Geekery Episode 123: Zach Tellman
- GHCJS: Support for GHC 8.2 and 8.4
- What is new in cross compiling Haskell
- yh: A tech demo for a bullet hell game
Package of the week
This week’s package of the week is Airship, a toolkit for building declarative, RESTful web apps.