Issue 120 2018-08-16
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.
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.
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.
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
:doccommand made it into GHC 8.6. Closing this 10 year old GHC ticket felt great!
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.
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.
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
-Walldoesn’t enable all of GHC’s warnings?
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.
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!
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.
- GHC 8.6.1-beta1 available
- Approximating compiling to categories using type-level Haskell: Take 2
- Functor, Applicative, and why
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
- 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