Issue 120
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.
Call for participation
- exercism/haskell: Replace existing hello world and quicksort snippets
- goat-guardian: make sure email-login verification emails actually expire
- hasktorch: reference to -1 Word should be
subtract 1
Events
- 2018-08-16 in Durham, NC, USA by Durham Haskell Meetup: Morning Haskell coding session
- 2018-08-16 in Raleigh, NC, USA by Raleigh Haskell Meetup: (hack . yack)
- 2018-08-16 in Seattle, USA by Seattle Area Haskell Users’ Group: Category Theory for Programmers Part 3
- 2018-08-18 in Chilliwack, BC, Canada by BC Haskell Users Group: Weekly Haskell Coding Meetup
- 2018-08-18 in Bellevue, WA, USA by Seattle Area Haskell Users’ Group: General discussion
- 2018-08-18 in Boston, MA, USA by Weekly Functional Programming Meetup: Hang out, chat FP, work on some code
- 2018-08-20 in Charlottesville, VA, USA by Charlottesville Haskell Book Reading Group: Chapter 17 - Applicative
- 2018-08-20 in Irvine, CA by Orange Combinator - Functional Programming In OC: Combinating - The Weekly Function
- 2018-08-20 in Lehi, UT, USA by Utah Haskell: Utah Haskell Meetup | Book Club
- 2018-08-20 in Portland, OR, USA by Portland Functional Programming Study Group: PDX Func Practice Track - Parallel and Concurrent Programming in Haskell
- 2018-08-20 in Newcastle Upon Tyne, United Kingdom by FP North East: Topic to be announced
- 2018-08-20 in Perth, Australia by Perth Functional Programmers: Haskell study group
- 2018-08-20 in Bucharest, Romania by Bucharest FP: Bucharest FP #32 — Composition in FP
- 2018-08-21 in Minneapolis, USA by HaskellMN: HaskellMN Monthly Meetup
- 2018-08-21 in Carmel, USA by Indy FP: Don’t Write Tests, Generate Them
- 2018-08-21 in Cluj-Napoca, Romania by Cluj.fp: Verification of Blockchain Languages and VMs
- 2018-08-22 in Berlin, Germany by Berlin Haskell Users Group: Haskell Wednesday
- 2018-08-22 in Portland, OR, USA by Portland Functional Programming Study Group: PDX Func Theory Track - Logic and Proof
- 2018-08-22 in Karlsruhe, Germany by Karlsruhe Haskell Lerngruppe: Writing Fast Haskell by Moritz Kiefer
- 2018-08-22 in Delhi, India by DelhiNCR Haskell And Functional Programming Languages Group: FPNCR Unscripted Online meetup
- 2018-08-22 in Boulder, CO, USA by Front Range Elm: Haskell Servant
- 2018-08-22 in Quito, Ecuador by Quito Lambda: [Tema no definido por el momento]
- 2018-08-22 in London, United Kingdom by London Haskell: Type Families: More than Lifted Functions
- 2018-08-23 in Raleigh, NC, USA by Raleigh Haskell Meetup: (hack . yack)
- 2018-08-23 in Las Vegas, NV, USA by Las Vegas Functional Programming User Group: Functional Programming Meetup
- 2018-08-23 in Seattle, USA by Seattle Area Haskell Users’ Group: Category Theory for Programmers Part 3
- 2018-08-23 in Eindhoven, Netherlands by Eindhoven Haskell Meetup: Let’s code a sea battle game!
- 2018-08-23 in Gdańsk, Poland by Functional Tricity: Join our new HQ - Functional Tricity #13