Haskell Weekly

Newsletter

Issue 120 2018-08-16

Subscribe now! We'll never send you spam. You can also follow us on Twitter or with 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 servers

    My 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 testing haskell-ide-engine. But it’s not just limited to haskell-ide-engine: It’s language agnostic and works with any server that conforms to the Language Server Protocol.

  • Enable all the warnings

    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.

  • My Haskell journey from C#

    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.

  • Typesafe versioned APIs

    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

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.

Call for participation