Newsletter
Issue 103 2018-04-19
Subscribe now! We'll never send you spam. You can also follow our feed. Read more issues in the archives.
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.
Featured
-
Visualization as an aid for porting a Ruby application to Haskell
In this post, we will outline a major difficulty in translating object-oriented Ruby to Haskell, and present a method for aiding the translation by visualizing the call graph of the Ruby code.
-
Different kinds of integer division
This blog post will address two issues: how to decide whether a particular operation can sensibly be described as “integer division”, and why there are a few different options, and what the differences between them are.
-
Reimplementing Hackett’s type language: expanding to custom core forms in Racket
The fundamental technique used to do so is not novel, and it seems to be periodically rediscovered every so often, but it has never been published or documented anywhere, and getting it right involves understanding a great number of subtleties about the Racket macro system.
-
How to handle asynchronous exceptions in Haskell
We launched our monthly webinar series on Wednesday, April 11th with our first webinar on how to handle asynchronous exceptions in Haskell.
-
By picking a nightly plan and building it using development versions of GHC at different commits, we can detect changes in the build status of packages contained in the plan, which are caused by changes in GHC, thereby detecting potential regressions in the compiler.
-
The problem I see with MonadError is that it does not address the fundamental difference between these two types of instances. I can pattern match an Maybe a with a default value to get back an a. With IO that is just not possible.
-
Supercompilation for free with the abstract algorithm
In this article, I’ll show 2 small experiments in which my 200 LOC JavaScript evaluator beats GHC by a few orders of magnitude.
-
Algorithmically scrapping your type classes
The algorithm to desugar constraints into dictionaries hasn’t been discussed much. Since it’s rather involved, and quite interesting, I thought it might make a good topic for a blog post.
-
The monadic structure of combinatorial optimization
Combinatorial optimization refers to assigning discrete values to a set of variables with the aim to minimize (or equivalently, maximize) a given objective function.
-
Recursion schemes, part 5: Hello, hylomorphisms
Given the fact that we can derive an unfold from a fold (and vice versa), and given the powerful tool in our toolbox that is function composition, an important question we can ask is: “What happens when we compose an unfold with a fold?”
Jobs
-
ITProTV seeking Software Developer in Gainesville, Florida
ITPro.TV is a fast-growing digital media business that focuses on continuing education in technical domains. We are currently accepting applications for full-stack software professionals to join our small but talented multidisciplinary team.
-
Jobs at Lumi.com (ad)
Lumi is a platform that helps e-commerce businesses manage their packaging supply chain. We are currently hiring backend and frontend engineers. You will work closely with Phil Freeman (creator of PureScript) and our small, distributed engineering team headquartered in Los Angeles. Remote applicants across all US time zones are encouraged!
In brief
- A simple hylomorphism example
- Endomorphic composite as a monoid
- For all the world to see: Deploying Haskell with Heroku
- GHC proposal: Compile-time literal values
- GHC proposal: Deriving via
- Ghcid with colors
- LTS Guarantees and exceptions
- Rotations, twists, and plaits
- Stack version 1.7 release candidate
- Working with lists
Package of the week
This week’s package of the week is asset-bundle, a build-time Cabal library that bundles executables with assets.
Call for participation
- disco: Add Boolean as a synonym for Bool
- duckling: Issue with Datetime
- servant: Make
Servant.Client.Ghcjs.runClientM
take in aClientEnv
- shake: tutorials: encourage the name “Shakefile.hs”
Events
- April 27-29: BayHac 2018 in San Francisco, California, United States