Skip to content

Instantly share code, notes, and snippets.

@DarinM223
DarinM223 / quadtree.py
Last active September 28, 2025 18:12
Numba experiments
"""
Quadtree in Numba:
Notes:
1. `if field:` or `if not field:` for an optional field
type doesn't work in numba, instead do `if field is not None:` or
`if field is None:`.
2. There is a bug with numba code generation with assignment
to deferred types. To work around that, add `set_field` methods
in the @jitclass (like `set_top_left_tree`) and use those inside a @njit
@DarinM223
DarinM223 / anf.sml
Last active August 14, 2025 06:21
ANF Conversion where all calls should be in tail position (fully CPS)
structure Lam =
struct
datatype bop = Add | Sub | Mul
val showBop = fn Add => "Add" | Sub => "Sub" | Mul => "Mul"
datatype exp = Lit of int | Bop of bop * exp * exp | Call of string * exp list
type var = string
val showVar = fn t0 => "\"" ^ t0 ^ "\""
@DarinM223
DarinM223 / adt.c
Last active July 21, 2025 16:10
Modeling various high level language features in C
#include <stdio.h>
enum bop {
BOP_PLUS,
BOP_MINUS,
BOP_TIMES,
};
typedef struct ast_exp ast_exp;
@DarinM223
DarinM223 / SoundEager.hs
Last active May 30, 2025 01:40
Type inference using Bluefin
{-# OPTIONS_GHC -Wno-orphans #-}
module SoundEager where
import Bluefin.Compound (Handle, mapHandle, useImpl, useImplIn)
import Bluefin.Eff (Eff, Effects, runPureEff, (:&), (:>))
import Bluefin.Internal (StateSource (StateSource))
import Bluefin.State (State, evalState, get, modify, put)
import Bluefin.StateSource (newState, withStateSource)
import Data.Functor ((<&>))
@DarinM223
DarinM223 / regalloc.py
Last active September 28, 2025 19:31
Linear scan register allocation in Python
from __future__ import annotations # type: ignore
from typing import * # type: ignore
from dataclasses import dataclass, field
@dataclass
class Physical:
register: int
@DarinM223
DarinM223 / build_sharp.sh
Last active September 23, 2023 20:44
Loads all the dependencies of a smi file and then runs the command
#!/bin/bash
cat > build.smi <<EOL
_require "basis.smi"
_require "smlnj-lib.smi"
EOL
cat > build.sml <<EOL
signature PACK_REAL = sig
type real
@DarinM223
DarinM223 / Eval.hs
Last active May 3, 2023 18:33
Example of an interpreter with recursive types using compdata
-- You need DeepSubsumption enabled in order for the example to compile.
{-# LANGUAGE DeepSubsumption #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE UndecidableInstances #-}
module Eval where
import Control.Monad.State.Strict (StateT, evalStateT, gets, liftIO, modify', void)
import Data.Comp.Multi
@DarinM223
DarinM223 / generic-mutrec.sml
Last active June 3, 2023 15:30
Example of type indexed values using mutual recursion with multiple type variables
infix & +` *`
datatype ('a, 'b) stmt =
Assign of 'a * ('a, 'b) expr
| If of ('a, 'b) expr * ('b, 'a) stmt list * ('a, 'b) stmt list
and ('a, 'b) expr =
Stmt of ('a, 'a) stmt
| Int of 'b
| Bop of ('b, 'a) expr * ('a, 'b) expr
@DarinM223
DarinM223 / generics.mlb
Last active April 12, 2023 21:51
Standard ML generic testing
ann "milletDiagnosticsIgnore all" in
./mltonlib/com/ssh/extended-basis/unstable/basis.mlb
./mltonlib/com/ssh/generic/unstable/lib.mlb
./mltonlib/com/ssh/generic/unstable/with/generic.sml
./mltonlib/com/ssh/generic/unstable/with/eq.sml
./mltonlib/com/ssh/generic/unstable/with/type-hash.sml
./mltonlib/com/ssh/generic/unstable/with/type-info.sml
./mltonlib/com/ssh/generic/unstable/with/hash.sml
./mltonlib/com/ssh/generic/unstable/with/uniplate.sml
./mltonlib/com/ssh/generic/unstable/with/ord.sml
@DarinM223
DarinM223 / fru.sml
Created April 9, 2023 05:42
Functional Record Update in Standard ML
structure Fold =
struct
fun fold (a, f) g = g (a, f)
fun post (w, g) s =
w (fn (a, h) => s (a, g o h))
fun step0 h (a, f) =
fold (h a, f)
fun step1 h (a, f) b =
fold (h (b, a), f)