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.
Recently I was lucky enough to be able to finish a project I’ve been working on intermittently in GHC for several years, and the result was satisfyingly better on just about every axis.
I will show how Representational1 lets us derive two more classes in the
baselibrary using GND, which would be impossible without the use of
For the past week and a half, I’ve been working on embargoed security holes. I’m announcing a new Haskell library,
http-client-restricted, which could be used to avoid similar problems in other programs.
You’ve heard of the type system, which makes sure your terms are sane. Maybe you’re also aware of the kind system, whose job it is is to make sure your types are reasonable! But did you know Haskell has an even more obscure system than these?
In this blog post I’ll explore what I call selective applicative functors, which extend the
Applicativetype class with a single method that makes it possible to be selective about effects.
Gifcurry, a cross-platform GIF creator slash video editor made with Haskell, needed a custom widget to interface with user selected time slices.
In my efforts to speed this implementation up, I came across a wide and interesting literature on scheduling effects, which I’ll go through a little here.
In this blog post the simple web server will get an extra REST endpoint that can do IO actions. This is an important part of pragmatic Haskell programming. Without IO our program can do nothing.
I am writing plugins which don’t change the semantics of my programs but are useful for debugging. I only sometimes want to run them and don’t want them to appear as dependencies at all on Hackage.
Can we do better? For instance, can we just say something like
deriveVinyl ''UserTand have a type class instance generated for us automatically?
SimSpace is looking for a backend software developer to help shape the future of realistic environments used for cyber security development, testing, and training.
Our team supports firmware and software development for Tesla products through custom tooling, process optimization, and data integration.
- 8-hour remote interactive course on “Type-level programming with GHC”
- Cachix: Build Nix packages once and share them for good
- Contributing to GHC 3: Hacking syntax and parsing
- Domain modeling with abstract algebra
- FHPC18 call for presentations and demonstrations
- Fold: HaskellRank #05.1 [video]
- Haskell: Build tools
- How I finally learned what a “monad” is
- Literature review of GHC Core [pdf]
- Monads and more in 5 minutes or less
- The Haskell stack ecosystem in 30 seconds or less
- Using mutable global variable in Haskell
- We liked it so we put a lens on it
- Why laziness matters
- ZuriHac 2018: Haskell keynotes [video]
Package of the week
This week’s package of the week is scientific, a library that provides space-efficient scientific numbers
Call for participation
- nvim-hs: Make
Neovim.Debugmodule useful again
- rhine: Silence all warnings
- stocks: Handle connection/404 errors
- June 28 in Melbourne, Australia: Custom IHaskell on My Binder
- June 30 in Boston, Massachusetts: Hang out, chat FP, work on some code
- July 1 in Bangalore, India: Haskell: Folds and type classes
- July 2 in St. Louis, Missouri: Mob programming with Elm
- July 3 in Seattle, Washington: Haskell learners’ group
- July 4 in Dublin, Ireland: Self-paced Haskell study group with special talk
- July 5 in Frankfurt, Germany: Dhall: The functional configuration language
- July 16 in Auckland, New Zealand: Two Talks: FP in JS-land; and The unusual effectiveness of the Haskell type system