Skip to content

Instantly share code, notes, and snippets.

View ilya-klyuchnikov's full-sized avatar
👁️‍🗨️

ilya-klyuchnikov

👁️‍🗨️
View GitHub Profile
@ilya-klyuchnikov
ilya-klyuchnikov / mrsc.hs
Created April 25, 2011 15:29
How to combine supercompilers
import Control.Monad
import Data.Maybe
data DriveStep e = DriveStep e
type Driver e = e -> DriveStep e
type Whistle e = [e] -> e -> Maybe e
type Rebuilder e = e -> e -> e
type MRebuilder e = e -> e -> [e]
data SC e = SC {drive :: Driver e, whistle :: Whistle e,

Notes on Erlang Compiler

erlc

erts/etc/common/erlc.c

#lang typed/racket
(define-type
(MyRec a)
(U a (Pair 'rec (MyRec a))))
(: unwrap (-> (MyRec (MyRec Symbol)) (MyRec Symbol)))
(define (unwrap my_rec)
(match my_rec [(cons 'rec elem) elem]))