Issue 97 2018-03-08
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.
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.
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.
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.
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.
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.
After 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.
You should start using
-pjif 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.
In order to better understand why adding
Monadinteracted so poorly with
GeneralizedNewtypeDeriving, we must first take a detour into roles, the mechanism which underlies GHC’s notion of type-safe coercions.
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.
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.
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.
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.