Posted on May 29, 2025 📄 Download as PDF Part 1 - Introduction Structure of this Document Conventions Scope Why LISP? Quick Lisp Primer Part 2 - Type Systems Hindley-Milner Type System The Type Checker Unification 🧩 Longer unification Example Generalisation Instantiation 🧩 Longer Generalisation Example Infinite Types Summary Part 3 - Introduction to the Code Implementation Overview Compiler…
Posted on May 27, 2025 Bollama – small, simple, maybe useful I’ve been using Ollama for a bit and testing some local models to see how they work for various use cases. To make this easier, I created a small terminal UI called Bollama. It’s nothing fancy and mostly built for myself to quickly test local models without needing to spin up a full UI or get lost in the CLI. It supports chat. shows…
Andre's Blog Blog Home Contact About --> bhoogle - Building a simple hoogle GUI with brick (Updated for brick 1.1) Posted on September 7, 2022 Overview bhoogle is a simple hoogle terminal GUI written using brick . This post is the annotated source code that should give you an idea of how to use brick and how easy brick makes building terminal UIs. This post is a simple upgrade from the [original…
Andre's Blog Blog Home Contact About --> Parsing and generating ABIF files (DNA chromatograms) Posted on January 9, 2019 Introduction Hyrax ABIF is a Haskell package, that I created at HyraxBio to test our bioinformatics software pipeline. We have released the HyraxAbif package as open source (BSD3 licence) in the hopes that it will be useful to others. In this post I’ll show how the package can…
Andre's Blog Blog Home Contact About --> Haskell roguelike Posted on April 2, 2018 Introduction In this series of posts I’m going to discuss some of the major design decisions that you will need to consider when making a Haskell roguelike game. I’ll be talking about how the code is implemented as well as the decisions I took along the way and why. See the chapter list below to get an idea of what…
Andre's Blog Blog Home Contact About --> Hakyll compiler to include working code samples Posted on February 5, 2018 (updated: 09/March/2018 - includes, local path & html, css and js support) Ensuring that the code you include in a blog post is up to date and works can be a bit of a pain. Often I’ll change code while writing a post and then I have to find and copy anything that has changed. This is…
Andre's Blog Blog Home Contact About --> bhoogle - Building a simple hoogle GUI with brick Posted on January 15, 2018 NB . This is using an old version of brick. Please see this post for a brick 1.1 updated version Overview bhoogle is a simple hoogle terminal GUI written using brick . This post is the annotated source code that should give you an idea of how to use brick and how easy brick makes…
Andre's Blog Blog Home Contact About --> Refactoring exception handling using a free monad Posted on January 8, 2018 Overview In my previous post I showed how I was managing exceptions by using a “wrapper” around a record of functions. In this post I’ll show how a free monad approach can be used to achieve the same goal and compare the two techniques. Recap Requirements This is the requirement for…
Andre's Blog Blog Home Contact About --> Refactoring to pure code and dealing with exceptions. Posted on October 31, 2017 Overview (TL;DR: I use a record of functions & a record of wrapper functions that catch all synchronous exceptions and convert to ExceptT for the pure code) See also the followup post on using Free as an alternative This is a quick overview of how I refactored one of my first…
Andre's Blog Blog Home Contact About --> Raspbery Pi GPIO using PureScript Posted on October 5, 2016 Overview This is a quick overview of how you can use PureScript on a RaspberryPi to do GPIO Installing Node JS The version of NodeJs available in most of the distros is quite old. There are a few ways to get a new version. Personally I found that installing the same version of node that I have on…