Issue 123
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
-
Compositional zooming for
StateT
andReaderT
usinglens
Suppose we want to write an update that changes one of the fields in a particular address. If the address cannot be found, we want a precise error message that distinguishes between the address itself not being found, or one of its parents (the account, or the wallet) not being found.
-
Declarative GTK+ programming with Haskell
This post introduces a declarative GTK+ architecture for Haskell which I’ve been working on during the journey with FastCut, a video editor specialized for my own screencast editing workflow. It outlines the motivation, introduces the packages and their uses, and highlights parts of the implementation.
-
Dependent types in Haskell: Binomial heaps 101
Who put binary numbers in my type system? This post makes a bit of a departure from the “practical Haskell” I usually try to write about, although — believe it or not — this blogpost actually originated from a very practical origin.
-
Haskell.org GSoC results for 2018
Google Summer of Code 2018 is officially over. The Haskell.org organisation had a very productive year with 17 accepted projects out of which 15 were successful. We would like to thank the students and mentors for the great summer, and, of course, Google for its generous support towards the open source community.
-
How can you work with a JSON value if you know nothing about it?
The question is rhetorical. Of course you can’t do anything if you know nothing about it. But we do know a ton! We just can’t (or it’s very difficult to) encode what we know as a type.
-
Introduction to SIMD with line count
In a previous post I talked about using broadword techniques to create a rank-select bit-string from text. This post will explore using Single Instruction, Multiple Data (SIMD) instructions to achieve the same thing.
-
Robust notes with embedded code
Emacs’s org-mode has great facilities for working with source code, often referred to by the name Org Babel. A simple use is having source code from various languages embedded in a single text file that is otherwise occupied with talking about that code.
-
Stackpak: Flatpak a Haskell Stack app into Flathub
After reading David Lettier’s great post on how to Flatpak a Haskell app into Flathub, I thought about generalizing his approach for Haskell Stack projects and have written Stackpak.
-
The unreasonable effectiveness of metaphor
I often find myself very frustrated by the way programmers talk about metaphor, so I chose a topic that would let me give an entirely different view of metaphors — metaphors the way linguists and cognitive scientists talk about them, metaphors as the crucial backbone of everyday thought and abstractions in mathematics and elsewhere.
-
The various forms of
Text
andByteString
This topic isn’t a tremendously complicated, but it can be difficult because it is rather tedious. I remember it as a source of endless frustration when I was first learning Haskell: Why so many strings?
Jobs
-
Senior Haskell developer at Mpowered
Join a small team of specialists working on refactoring an enterprise application from its Ruby on Rails origins to a future of type safety and extensibility built on Haskell.
In brief
- Announce: Dhall 2
- Announce: Summoner 1.1
- Effects: A brief exploration of the various approaches to modeling side effects
- Making the jump 2: Using more monads
- Monthly Hask Anything
- Must read/favourite functional pearls
- PariPari: Fast parser combinator library for Haskell
- Recent Cachix downtime
- The identity functor
- Tool to convert Java code to Eta code
- Update monads: Variation on state monads
- Which IDE are you using for Hakell?
- Why I never finish my Haskell programs (part 1 of ∞)
Package of the week
This week’s package of the week is Megaparsec, an industrial-strength monadic parser combinator library. It is feature-rich and strikes a nice balance between speed, flexibility, and quality of parse errors.
Call for participation
- Allure: Define more animals, especially aquatic
- curl-runnings: Index previous test cases by name
- moot: Conference organizers should be able to edit and preview their welcome message
Events
- 2018-09-05 in Austin, TX, USA by Austin Haskell Users Group: Haskell Beginner-Friendly Lab
- 2018-09-05 in Gainesville, FL, USA by Gainesville functional programming: Elm & CSS: Fun, bad decisions
- 2018-09-06 in Raleigh, NC, USA by Raleigh Haskell Meetup: (hack . yack)
- 2018-09-06 in Durham, NC, USA by Durham Haskell Meetup: Morning Haskell (and Rust!) coding session
- 2018-09-06 in Manchester, United Kingdom by Manchester Haskell Group (MHG): Coding Session
- 2018-09-06 in Graz, Austria by Functional Programming Graz: Functional Programming Meetup
- 2018-09-06 in Santiago, Chile by Santiago Scala Meetup: Santiago Scala Meetup
- 2018-09-06 in Las Vegas, NV, USA by Las Vegas Functional Programming User Group: Functional Programming Meetup
- 2018-09-06 in Singapore, Singapore by HASKELL.SG: September Haskell Meetup
- 2018-09-06 in Hamburg, Germany by Lambda Pi: Theorems for Free @ Mesosphere
- 2018-09-08 in Chilliwack, BC, Canada by ChilliHask Haskell User Group: Weekly Haskell Coding Meetup
- 2018-09-08 in Norcross, GA, USA by Atlanta Functional Programming Meetup: Norcross Haskathon
- 2018-09-08 in Boston, MA, USA by Weekly Functional Programming Meetup: Hang out, chat FP, work on some code
- 2018-09-09 in Bangalore, India by Bangalore Functional Programmers Meetup: Monads in Haskell
- 2018-09-10 in Irvine, CA by Orange Combinator - Functional Programming In OC: Combinating - The Weekly Function
- 2018-09-10 in Portland, OR, USA by Portland Functional Programming Study Group: PDX Func Practice Track - Parallel and Concurrent Programming in Haskell
- 2018-09-10 in Pittsburgh, PA, USA by Pittsburgh Functional Programming Meetup: Shell Scripting in Haskell
- 2018-09-10 in Sandton, South Africa by Lambda Luminaries: Purely Functional Personal Finance with hledger
- 2018-09-11 in Santa Monica, CA, USA by Santa Monica Haskell Users Group: Haskell Study Group: Typeclasses
- 2018-09-11 in Amsterdam, Netherlands by FP AMS: Haskell Study Group #3
- 2018-09-12 in Berkeley, CA by East Bay Functional Programming Study Group: Open Programming Session (Wednesday)
- 2018-09-12 in Portland, OR, USA by Portland Functional Programming Study Group: PDX Func Theory Track - Logic and Proof
- 2018-09-12 in Noida, India by Reactive Application Programmers in Delhi NCR: The Rise Of Scanamo: Async Access For DynamoDB In Scala
- 2018-09-12 in Cluj-Napoca, Romania by Cluj.fp: Akka actors: typed vs. untyped
- 2018-09-12 in Suite 1305, IL, USA by Chicago Haskell: Hack Night
- 2018-09-12 in Montréal, QC, Canada by Lambda Montreal: Samuel Gélineau shows us how to “Write your own Functional Reactive Library”
- 2018-09-19 in Vancouver, Canada by VanFP: Vancouver’s Haskell Book Workshop