Newsletter
Issue 97 2018-03-08
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
-
Queryparser, an open source tool for parsing and analyzing SQL
Queryparser was originally conceived by an Uber engineer who was a Haskell enthusiast, and it quickly gained traction with several other engineers. In fact, many of us learned Haskell specifically to develop in it.
-
Implementing a safer sort with linear types
Just by changing the arrow types in our functions to linear arrows, we are able to get additional guarantees that are enough to prove that the returned result is a permutation of the input.
-
Compact regions: Success, failure, and questions
At Front Row, we’ve been following the development of compact regions with much anticipation. Our API servers contain a cache of static data that is a perfect use case for this GHC feature.
-
Making a text adventure in Haskell: Part 1
I decided to make a text adventure from scratch for my second Haskell project. Text adventures, which are one kind of interactive fiction, are games which are played entirely on a command-line terminal and are require only standard I/O.
-
Heroku is the free and convenient solution for this. It is a hosting service that allows pushes to a Github master branch to trigger redeploys, and it also caches dependencies so that subsequent redeploys are fast.
-
Object oriented programming in Haskell
For some problem domains this way of modeling is extremely suitable, and so one may wonder if we can take a similar approach in a purely functional language like Haskell, without losing purity.
-
MonadFix
and the lazy and strictState
monadAfter investigating this problem, I figured out that replacing the strict state monad by the lazy state monad solved the problem and lead to the expected behavior instead of an infinite loop.
-
GHC can output profiling information as JSON and you should use it
You should start using
-pj
if you’re using GHC profiling. Better, you should (re)write tools to work with this format instead of the awful ad-hoc parsing that existing tools do. -
How
QuantifiedConstraints
can let us putjoin
back inMonad
In order to better understand why adding
join
toMonad
interacted so poorly withGeneralizedNewtypeDeriving
, we must first take a detour into roles, the mechanism which underlies GHC’s notion of type-safe coercions.
Jobs
-
Functional programmers at QFPL in Brisbane
We are currently seeking functional programmers to fill five vacancies. These roles span early-career through to senior software engineer roles. In these roles, you will develop open-source software using functional programming with an emphasis on application to industry problems.
-
Senior Software Engineer at Azara in Boulder
Azara is Looking for full-time senior software engineer to join our quickly growing team in beautiful Boulder, Colorado. We value passion for software over all other traits, and want someone ready to jump into any part of our web or mobile app.
-
Software Engineer at Urbint in New York
Urbint engineering is building a cutting-edge data ingestion and machine learning pipeline for exposing the hidden intelligence within urban data. We are a team of close-knit, talented engineers who obsess over problem solving, code quality and workflow.
In brief
caseof
: A simple way to query constructors- Dirt Cheap Haskell Q&A
language-rust
: Parsing and pretty printing Rust- Measuring functions in Criterion
sv
: A library for comma separated values- Type inference by solving constraints
- What is new in cross compiling Haskell
Package of the week
This week’s package of the week is named, a lightweight library for named function parameters based on overloaded labels.