Issue 124
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
-
In this blog post I’m going to take a break from Haskell and spread the good word of Dhall. The good news is that it won’t be a break from functional programming. We still have all the good stuff in Dhall like: lambdas, products, sums and types!
-
Building a blog part 2: Creating an HTTP API with Scotty and Beam
In part 2 of Building a Blog I will talk about how the small HTTP API used by this blog was implemented. Once again, because I like Haskell, I’ll use the Scotty web framework to listen to HTTP requests and run SQLite queries with the Beam library.
-
Common (but not so common) monads
Lists and functions are core concepts that any Haskeller learns from the get-go. But the list data structure and function application are also monads! And understanding how they work as such can teach us more about how monads work.
-
Dhall to HLint: Using Dhall to generate HLint rules
This short blog post covers the process of creating the
.hlint.yaml
file from the Dhall configuration. You can wonder, why we are not using Haskell for such purposes. The answer is that we don’t need IO capabilities for our problem; totality and safety of Dhall are enough here. -
This is the first article in a series about continuations, forking, and monad transformers. Motivation: When using
StateT
orReaderT
overIO
, we sometimes would like to fork and still remain in this “monadic context”. -
Fun with typed type-level programming in PureScript
As software engineers, we write programs to compute values at runtime. Sometimes, if there is an available static type system, we use types to check our code at compile time. However, is it possible to write code computing types at compile time? Does it make sense to do that?
-
uku
: A Haskell CLI tool to display Ukulele fingering chartsThis is a tutorial on how to write a CLI tool in Haskell to display fingering charts for the Ukulele in your terminal. While I originally started to write this 2 years ago in JavaScript, I recently got introduced to Haskell and it’s awesome. Especially for building CLI tools.
-
Using Funflow to cache a Nix-based workflow
My latest project has been to plot a map of orienteering maps in the UK. This post explains the technical aspects behind the project and primarily the use of
funflow
to turn my assortment of scripts into into a resumable workflow. -
Something that;s not often explicitly controlled is novelty. One of the dirty secrets of programming is that almost every production codebase contains some dependency that the developers have never used before. Why are we indulging in so much novelty anyway?
-
Implementing Quake 3 in Haskell & Vulkan. All work on this is streamed live on Twitch. We’ve still got a long way to go, but things are starting to take shape.
Jobs
-
Senior Haskell Engineer at GitHub
Did you know GitHub uses Haskell in production? We are looking for experienced Haskell engineers to work on the task of parsing, analyzing, interpreting and drawing conclusions from the corpus of public code on GitHub. We are working on a multi-language interpreter (currently targeting Go, Python, Ruby, PHP, JavaScript, TypeScript, Haskell, and Java) aimed at extracting useful information from untrusted user code — import graphs, control flow graphs, and reports identifying code quality issues or security vulnerabilities.
-
GitHub is seeking an experienced engineering manager to lead a team working in Haskell focused on applied Programming Language Theory (PLT), parsing, syntax representation, various program analysis techniques (including abstract interpretation), and unparsing / code refactoring. If you are excited about leading engineers, applying recent PLT research to help make software easier, faster, and safer to write please view our job listing for more details.
In brief
- Announce:
do-notation
: generalized do-notation for using monads and indexed monads simultaneously - Announce:
goat-guardian
: Reverse proxy that handles authentication - Announce: Squeal 0.4
- Deploying Haskell apps with Kubernetes
- Getting started with Haskell workflow
- Is learning how to use the Lens library worth it and in hindsight was taking this approach really the best direction for Haskell?
- Proposal: List instances for a type in GHCi
- Punching a big hole through a newtype
- Why I never finish my Haskell programs: Part 2 of ∞
Package of the week
This week’s package of the week is Range, an efficient and versatile range library. It supports bounded and unbounded ranges, ranges in a nested manner (like library versions), an efficient algebra of range computation and even a simplified interface for ranges for the common cases.
Call for participation
Events
- 2018-09-13 in Durham, NC, USA by Durham Haskell Meetup: Morning Haskell (and Rust!) coding session
- 2018-09-13 in Nijmegen, Netherlands by Eindhoven Haskell Meetup: Nix a purely functional package manager, and type safety in practice
- 2018-09-13 in Calgary, AB, Canada by Functional Programmers YYC: Unconf (YYC.FP)
- 2018-09-13 in Prague, Czech Republic by Prague Lambda Meetup: LambdUp - Prague FP Conference
- 2018-09-14 in Austin, TX, USA by Austin Types, Theorems, and Programming Languages: Going through Software Foundations by Benjamin Pierce et al
- 2018-09-14 in Kuala Lumpur, Malaysia by Kuala Lumpur Haskell Study Group: Week 1. Introduction. Lambda calculus (Chapter 1)
- 2018-09-15 in Chilliwack, BC, Canada by ChilliHask Haskell User Group: Weekly Haskell Coding Meetup
- 2018-09-15 in Bellevue, WA, USA by Seattle Area Haskell Users’ Group: General discussion
- 2018-09-15 in Boston, MA, USA by Weekly Functional Programming Meetup: Hang out, chat FP, work on some code
- 2018-09-15 in Madrid, Spain by Madrid Haskell Users Group: Fiesta Open Source, Linux y un invitado especial: Slimbook Computers
- 2018-09-16 in Bangalore, India by Bangalore Functional Programmers Meetup: Foldable in Haskell
- 2018-09-17 in Irvine, CA by Orange Combinator - Functional Programming In OC: Combinating - The Weekly Function
- 2018-09-17 in Lehi, UT, USA by Utah Haskell: Utah Haskell Meetup | Book Club
- 2018-09-17 in Karlsruhe, Germany by Karlsruhe Haskell Meetup: Codekata: Spiel mit SDL-Bindings programmieren.
- 2018-09-17 in Perth, Australia by Perth Functional Programmers: Haskell study group
- 2018-09-17 in Zagreb, Croatia by Lambda Zagreb: Raytracing - 3D rendering with Haskell
- 2018-09-17 in Detroit, MI, USA by AWS Detroit: Running Haskell on AWS
- 2018-09-17 in Paris, France by haskell-paris: Meetup de la rentrée
- 2018-09-18 in Minneapolis, USA by HaskellMN: HaskellMN Monthly Meetup
- 2018-09-18 in Carmel, USA by Indy FP: Purely Functional Data Structures
- 2018-09-18 in Amsterdam, Netherlands by FP AMS: Category theory study group: Limits (again)
- 2018-09-18 in Bristol, United Kingdom by CodeHub Bristol: Hack Night + Haskell Study Group
- 2018-09-18 in Seattle, WA, USA by Fun(c)tional Programming Group: Rúnar Bjarnason - A Crash Course in Categories [Seattle]
- 2018-09-19 in Berlin, Germany by Berlin Haskell Users Group: Haskell Wednesday
- 2018-09-19 in Berlin, Germany by Berlin Haskell Users Group: FP Forum — Learn, Teach, Share, Grow
- 2018-09-19 in Austin, TX, USA by Austin Haskell Users Group: Haskell Beginner-Friendly Lab
- 2018-09-19 in Vancouver, BC, Canada by Vancouver Functional Programmers: Haskell Peer Study Group
- 2018-09-19 in Boulder, USA by Boulder Haskell Programmers: An Unsafe Talk on Safe Haskell
- 2018-09-19 in Houston, TX, USA by Houston Functional Programmers: Introduction to OCaml
- 2018-09-19 in Auckland, New Zealand by Functional Programming Auckland: 2 Talks: Erlang for Mixed Reality gaming; Pure-C: C backend for PureScript