Neil Mitchell's Blog (Haskell etc)

Tuesday, April 28, 2020

Writing a fast interpreter

›
Summary: Interpretation by closure is a lot faster than I expected. Let's imagine we have an imperative language (expressions, assignmen...
9 comments:
Monday, March 16, 2020

The <- pure pattern

›
Summary: Sometimes <- pure makes a lot of sense, avoiding some common bugs. In Haskell, in a monadic do block, you can use either <-...
9 comments:
Monday, March 02, 2020

How to get a Haskell job

›
Summary: There are four things I recommend to get a Haskell job. Applies to most technologies. I was recently emailed by someone who asked f...
Monday, January 27, 2020

One Haskell IDE to rule them all

›
Summary: The Haskell IDE Engine and Ghcide teams are joining forces on a single IDE. This weekend many of the Haskell IDE Engine (HIE) and ...
5 comments:
Friday, October 18, 2019

Improving Rebindable Syntax

›
Summary: Rebindable syntax is powerful, but sometimes too flexible. I had some ideas on how to improve it. In Haskell, when you write 1 , GH...
2 comments:
Sunday, October 13, 2019

Monads as Graphs

›
Summary: You can describe type classes like monads by the graphs they allow. In the Build Systems a la Carte paper we described build syste...
5 comments:
Monday, July 01, 2019

Thoughts for a Haskell IDE

›
Summary: We have been working on pieces for a Haskell IDE at Digital Asset. At Digital Asset , we wrote the DAML programming language . The ...
Tuesday, June 18, 2019

The One PR Per Day Rule

›
Summary: The rough rule I use for teams I'm on is make at least one PR per day. One of the principles I've used quite successfully i...
Monday, June 17, 2019

Shake from 10,000ft

›
Summary: A very high-level view of the engineering aspects of Shake. The theory behind Shake is now well documented in the Build Systems a l...
6 comments:
Thursday, June 13, 2019

HLint's path to the GHC parser

›
Summary: HLint is going to switch to the GHC parser over the next few months. The plan is below. For some time, HLint has been accumulating ...
Monday, May 20, 2019

Hoogle XSS Vulnerability

›
Summary: Hoogle 5.0.17.6 and below have an XSS vulnerability, fixed in later versions. On Friday afternoon I got an email from Alexander Gug...
3 comments:
Tuesday, May 14, 2019

Shake with Applicative Parallelism

›
Summary: Shake now does that Applicative trick from Haxl. In Shake 0.17.9 and below, need xs >> need ys builds xs in parallel, then ...
Monday, April 29, 2019

foldr under the hood

›
Summary: The foldr function seems simple, but is actually very complex, with lots of layers. This post dives through the layers. The foldr ...
3 comments:
Tuesday, April 16, 2019

Code Statistics and Measuring Contributions

›
Summary: The only way to understand a code base is to ask someone who works on it. This weekend a relative asked me how can we tell who wrot...
1 comment:
Sunday, April 07, 2019

Code Review: Approve with Suggestions

›
Summary: Code review is not a yes/no decision - mostly I say yes with suggestions. As I wrote previously , I didn't used to be a fan of ...
1 comment:
Monday, March 18, 2019

GHC Rebuild Times - Shake profiling

›
Summary: GHC rebuild times are slow. Using the Shake profiler and Hadrian we can find out why. I just checked out GHC , and using Hadrian (...
10 comments:
Sunday, February 17, 2019

Quadratic "deriving Generic" Compile Times

›
Summary: For large data types, deriving Generic can take a long time to compile. I was building GHC using Hadrian , and part of that proce...
Tuesday, February 05, 2019

Announcing ghc-lib

›
On behalf of Digital Asset I'm delighted to announce ghc-lib , a repackaging of the GHC API to allow it to be used on different GHC ver...
2 comments:
Friday, January 25, 2019

HLint Unused Extension Hints

›
Summary: HLint detects unused extensions in LANGUAGE pragmas, including over 17,000 on Hackage. HLint has detected unused LANGUAGE pragma...
‹
›
Home
View web version

About Me

My photo
Neil Mitchell
View my complete profile
Powered by Blogger.