Issue 119 2018-08-09
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.
The latest official version of the Haskell standard was published in 2010. Since then, GHC, the most popular Haskell compiler, has grown almost 100 extensions which modify the language, sometimes quite drastically.
In this post, I demonstrate how use broadword programming techniques to exploit data-level parallelism in the parsing of a CSV-like format. Doing so allows us to parse the text 8-bytes at a time instead of one byte at a time as a traditional parser would.
In this post, we will implement open type families with a single actual type family. Surprisingly, this endeavor leads to increased expressivity: type families become first-class.
The following are some of the so called “Aha!” moments I have experienced while learning Haskell. I am sharing them here so that it might help someone spare the hopeless frustration that precedes them.
While loading a simple module into GHC’s API is quite trivial and well documented, loading complex modules will require you to find the appropriate dynamic flags. These flags are usually retrieved and loaded into GHC by Cabal. Sadly for us, Cabal’s API does not seems to expose a direct way to get these flags.
No need to read a book to use Haskell! This post will get you going with a serious web application while only sticking to the concepts that are encountered. This is a Haskell safari with as end goal a working webapp with database.
You may have heard about source plugins by now. They allow you to modify and inspect the compiler’s intermediate representation. This is useful for extending GHC and performing static analysis of Haskell programs.
I’ve just uploaded the first part of working with dependent types in Haskell; it introduces the notions of singletons, walks through their derivation, and then shows how you can use the singletons package to get all of this stuff for free.
Monads are often a point of frustration for learners of Haskell. The question of what a monad is leads to the question of why a monad is. The question of why a monad is leads to the question of what a monad is.
Are you looking to hire a Haskell developer? You should advertise with us!
This role provides a unique opportunity to leverage the strengths of Haskell in a production setting. A creative, well-rounded problem solver will be able to work on and invent a diverse array of high-visibility, interdisciplinary applications that directly improve Tesla products.
- A DSL for music
acid-world: A potential replacement for
acid-statefocusing on flexibility and usability
- Email message parsing in Haskell in 2018
- GHC proposal: Remove the
- HyperHaskell: Release of version 0.2.1.0
- Keeping it clean: Haskell code formatters
- Using a one-element type as a pretend keyword
Package of the week
This week’s package of the week is Taskell, a CLI kanban board/task manager for Mac and Linux.
Call for participation
We’re doing things in this section a little differently starting with this issue. You may notice a lot more events! Hopefully that means you’ll be able to find some local Haskellers to meet up with. Please let us know what you think about this change over on GitHub.