Skip to content

Instantly share code, notes, and snippets.

gatlin /
Last active Aug 13, 2018
Hask-- I mean, psilo with zero real typeclasses and one virtual typeclass
;; Hask-- I mean, psilo with no real typeclasses and one virtual typeclass.
; Inspired by [1], this is an exploration of representing all typeclasses
; through one distinguished class.
; This version of psilo does not have "real" typeclasses. However faking them
; with explicit dictionary passing does seem to correctly infer and check the
; constraints.
; The goal then is to figure out how best to represent "real" typeclasses as a
; distinguished feature in the language implementation given that we are
View io.hs
{-# LANGUAGE RankNTypes #-}
import Prelude hiding (IO, getLine)
import qualified Prelude as P
import System.IO.Unsafe
-- * The Foreign Function Interface
-- | FFI values permit interfacing with foreign functions, such as low-level IO
-- operations, memory management operations, or bindings to other user-level
gatlin /
Created May 27, 2018 — forked from larsch/
Install Arch Linux ARM for Raspberry Pi Zero W on SD Card (with commands to configure WiFi before first boot).
#!/bin/sh -exu
cd $(mktemp -d)
function umountboot {
umount boot || true
umount root || true
# RPi1/Zero (armv6h):
View free-compiler.hs
- Example of using free constructions to build a flexible little compiler.
- The goal here is not necessarily efficiency but readability and flexibility.
- The language grammar is represented by an ADT; however, instead of
- recursively referring to itself it instead references a type variable.
- We derive instances of 'Functor' and 'Traversable' for this type.
View index.html
<!DOCTYPE html>
<title>Large Type</title>
<link rel="stylesheet/less" type="text/css" href="style.less">
<script type="text/javascript" src="lib/jquery-2.1.4.min.js"></script>
<script type="text/javascript" src="lib/less.min.js"></script>
<div class="out"><span contenteditable autofocus>*hello*</span></div>
gatlin / yet-another-conway.hs
Last active Aug 20, 2018
Yet Another Comonadic Game of Life implementation in Haskell, in response to a Reddit thing. Much love to those who have done similar things previously. I'm really just a messenger here.
View yet-another-conway.hs
{-# LANGUAGE DeriveFunctor #-}
import Control.Applicative
import Control.Comonad
import Control.Monad (forM_)
-- These two typeclasses probably make some people groan.
class LeftRight t where
left :: t a -> t a
gatlin /
Last active Mar 2, 2017
by request, a simple python markov chain builder and walker.
# Markov models!
# A Markov model of some process is a model of different states you can be in,
# where each state links to other states. These links are weighted by some
# probability score. Markov models are designed to model systems where future
# states depend only on the present state.
# In the case of words you may define "present state" to be "the current word,"
# or perhaps "the last 3 words."
gatlin / audio
Last active Sep 14, 2016
Shell script to make jackd and pulseaudio (and optionally fluidsynth) coexist with minimal interruption to my youtubing. Also it Works For Me™ on my laptop, will keep working on it
View audio
# Script to launch jackd and reroute PulseAudio through it. And optionally
# start fluidsynth.
# Usage (assuming this script is named `audio`, is in your PATH, and is
gatlin / output.txt
Last active Oct 26, 2016
applicative parser built with Tubes
View output.txt
Code: (+ 5 5)
Free (AApp (Free (ASymbol "+")) [Free (ANumber 5),Free (ANumber 5)])
Code: (lambda (x) (* x x))
Free (ALambda [Free (ASymbol "x")] (Free (AApp (Free (ASymbol "*")) [Free (ASymbol "x"),Free (ASymbol "x")])))
Code: ((\ (x) (* x x)) 5 (+ 10 2))
Free (AApp (Free (ALambda [Free (ASymbol "x")] (Free (AApp (Free (ASymbol "*")) [Free (ASymbol "x"),Free (ASymbol "x")])))) [Free (ANumber 5),Free (AApp (Free (ASymbol "+")) [Free (ANumber 10),Free (ANumber 2)])])
Code: '(1 2 3)
gatlin / pid.lhs
Created Aug 17, 2016
Streaming PID controller in Haskell
View pid.lhs
PID controller in Haskell
A major project I want to embark on at some point in the future is making a
quadrotor. I've made one before but I was at the mercy of a lot of off-the-shelf
software that I'm not altogether sure was entirely correct, either.
So I want to eventually program a quadrotor (or similarly awesome robot thing)
and I would really enjoy doing it in Haskell. It has a low footprint and is
already used in other real time settings.
You can’t perform that action at this time.