Newsletter
Issue 120 2018-08-16
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.
Featured
-
Breaking the space-time barrier with Haskell: Time-traveling and debugging in CodeWorld
This summer, as part of Google Summer of Code, I created debugging tools to be used by students programming in the CodeWorld environment. As a current learner of Haskell and of CodeWorld, I believe tools that help users reason about logic are very useful. I wanted to help users identify breaks in logic, and reason about mathematics and code.
-
GSoC 2018 wrap-up: Haskell dataframes, Postgres type providers and more
Frames-beam is the library I worked on during Google Summer of Code 2018 as part of the Haskell.org open source organization. It is primarily intended as a extension to the Frames library, and adds Postgres as an additional data source to it.
-
Hi Haddock: Google Summer of Code is over
While the Google Summer of Code ends today, my work on Hi Haddock hasn’t finished yet. Initially I had some pretty good progress: A preview version of the GHCi
:doc
command made it into GHC 8.6. Closing this 10 year old GHC ticket felt great! -
Image processing: GSoC’18 with Haskell
This summer, I worked towards implementing different classes of image processing algorithms using Haskell and incorporating the same to the existing code base of Haskell Image Processing (HIP) package to enhance its scope.
-
lsp-test
: A functional test framework for LSP serversMy Haskell Summer of Code project,
lsp-test
, is now available via Hackage. It’s a framework for writing end-to-end tests for LSP servers, made for testinghaskell-ide-engine
. But it’s not just limited tohaskell-ide-engine
: It’s language agnostic and works with any server that conforms to the Language Server Protocol. -
The compiler by default enables 18 warnings, and you can enroll in an additional 8 with
-Wextra
, and even more with-Wall
. You’ve probably seen packages compiling with-Wall
, but did you know that-Wall
doesn’t enable all of GHC’s warnings? -
Fast Sudoku solver in Haskell #3: Picking the right data structures
In the previous part in this series of posts, we optimized the simple Sudoku solver by implementing a new strategy to prune cells, and were able to achieve a speedup of almost 200x. In this post, we are going to follow the profiler and use the right data structures to improve the solution further and make it faster.
-
I became a strong believer in FP, in strong typing, and in compilers guiding me through programming. I strongly believe that any programmer can benefit from learning Haskell. Even though I am still relatively new in this journey, I consider myself a better programmer than I was when I started this journey.
-
RFC compliant data-parallel CSV parsing
In last week’s post I described how to exploit data-parallelism to build a rank-select bit-string for a cut compatible delimeter-separated-values format, parsing 8-bytes at-a-time. In this post we will look at how to do the same for the CSV format described in RFC4180.
-
We’re going to look at a fun way to write a monadic action which alters its behaviour based on which version of a system it’s embedded in, simultaneously gaining ground on the expression problem and giving us compile-time guarantees that we haven’t accidentally mixed up code from different versions of our app!
Jobs
If you’re interested in a Haskell job, look no futher than the who’s hiring thread from the Haskell subreddit! There are no fewer than 9 companies hiring Haskellers right now.
In brief
- GHC 8.6.1-beta1 available
- Approximating compiling to categories using type-level Haskell: Take 2
curry
vsuncurry
on Hackage- Functor, Applicative, and why
- GHCanIUse
hlint-source-plugin
: Run HLint as part of normal compilation- Series spotlight: Haskell web skills
- Specifying how a plugin affects recompilation
- Type Classes: Web servers course
- Typeclass induction and developing a QuickCheck-like library
- What is new in cross compiling Haskell
Package of the week
This week’s package of the week is GRIFT, the Galois RISC-V Formal Tools. It contains a concrete representation of the semantics of the RISC-V instruction set, along with an elegant encoding/decoding mechanism, and simulation and analysis front-ends.