Issue 119
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.
Featured
-
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.
-
Data-parallel rank-select bit-string construction
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.
-
Haskell with only one type family
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.
-
Learning Haskell: Miscellaneous enlightenments
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.
-
Loading a Cabal module in the GHC API
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.
-
Pragmatic Haskell 3: Beam Postgres DB
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.
-
PureScript and Haskell at Lumi
Previously, I talked about how we were able to ensure correctness while successfully migrating our database from RethinkDB to Postgres by leaning heavily on Haskell. In this blog post, I’m going to tell a similar story about how we’re improving correctness on the front-end by moving from JavaScript to PureScript.
-
Reimplementing
graphmod
as a source plugin:graphmod-plugin
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.
-
The Book of Types: New chapter: Dependent types part 1 and extra goodies
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.
Jobs
Are you looking to hire a Haskell developer? You should advertise with us!
-
Software engineer at Tesla in Palo Alto
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.
In brief
- A DSL for music
acid-world
: A potential replacement foracid-state
focusing on flexibility and usability- Email message parsing in Haskell in 2018
- GHC proposal: Remove the
*
kind syntax - 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
Events
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.
- Thursday, August 9: Morning Haskell coding session hosted by Durham Haskell Meetup in Durham, nc, USA
- Thursday, August 9: (hack . yack) hosted by Raleigh Haskell Meetup in Raleigh, NC, USA
- Thursday, August 9: Functional Programming Meetup hosted by Las Vegas Functional Programming User Group in Las Vegas, NV, USA
- Thursday, August 9: Category Theory for Programmers Part 3 hosted by Seattle Area Haskell Users’ Group in Seattle, USA
- Thursday, August 9: Our initial Meetup hosted by Lambda Pi in Hamburg, Germany
- Friday, August 10: Going through Software Foundations by Benjamin Pierce et al hosted by Austin Types, Theorems, and Programming Languages in Austin, TX, USA
- Saturday, August 11: Weekly Haskell Coding Meetup hosted by BC Haskell Users Group in Chilliwack, BC, Canada
- Saturday, August 11: Café hours hosted by Cape Cod Functional Programming Meetup in Dennis Port, USA
- Saturday, August 11: Hang out, chat FP, work on some code hosted by Weekly Functional Programming Meetup in Boston, ma, USA
- Sunday, August 12: Can we find other Haskellers hosted by Göttingen Haskell Meetup in Göttingen, Germany
- Sunday, August 12: Applicative in Haskell hosted by Bangalore Functional Programmers Meetup in Bangalore, India
- Monday, August 13: Combinating - The Weekly Function hosted by Orange Combinator - Functional Programming In OC in Irvine, CA
- Monday, August 13: Hack Night! hosted by Pittsburgh Functional Programming Meetup in Pittsburgh, PA, USA
- Monday, August 13: Exact Calculations in Haskell by Petrus Potgieter hosted by Lambda Luminaries in Sandton, South Africa
- Tuesday, August 14: Haskell study group! All welcome! hosted by CodeHub Bristol in Bristol BS1 5SJ, United Kingdom
- Tuesday, August 14: Haskell Study Group: Parametric Polymorphism hosted by Santa Monica Haskell Users Group in Santa Monica, CA, USA
- Tuesday, August 14: Servant: APIs web a nivel de tipos hosted by Buenos Aires Haskell Meetup in Buenos Aires, Argentina
- Tuesday, August 14: BFPG Monthly Meetup hosted by Brisbane Functional Programming Group (BFPG) in Brisbane, Australia
- Tuesday, August 14: 2 Talks: FP in JS-land; Prototyping for Radar (part 2) hosted by Functional Programming Auckland in Auckland, New Zealand
- Wednesday, August 15: FP Forum — Learn, Teach, Share, Grow hosted by Berlin Functional Programming Group in Berlin, Germany
- Wednesday, August 15: Haskell Beginner-Friendly Lab hosted by Austin Haskell Users Group in Austin, TX, USA
- Wednesday, August 15: Managing warehouse robots hosted by Houston Functional Programmers in Houston, TX, USA
- Wednesday, August 15: CanFP Monthly meetup hosted by CanFP - The Canberra Functional Programming Group in Canberra, Australia
- Thursday, August 16: (hack . yack) hosted by Raleigh Haskell Meetup in Raleigh, NC, USA
- Thursday, August 16: Category Theory for Programmers Part 3 hosted by Seattle Area Haskell Users’ Group in Seattle, USA