Skip to content

Instantly share code, notes, and snippets.

@chansey97
chansey97 / compile.ss
Created June 27, 2022 02:13 — forked from swatson555/compile.ss
nanopass compiler for r0 language
#!/usr/bin/env scheme --script
(import (nanopass))
(define unique-var
(let ()
(define count 0)
(lambda (name)
(let ([c count])
(set! count (+ count 1))
@chansey97
chansey97 / gist:86b9d854336f34d371543e3519009162
Created May 2, 2022 14:32 — forked from osallou/gist:7988178
Sample C foreign interface for SWI-Prolog called with my_function('6',N) loaded with :-use_foreign_library(foreign('test.so')). compile: swipl-ld -shared -o test test.c
#include <SWI-Prolog.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct context /* define a context structure */
{
int max;
} context;
foreign_t
@chansey97
chansey97 / introrx.md
Created October 9, 2021 19:23 — forked from staltz/introrx.md
The introduction to Reactive Programming you've been missing
@chansey97
chansey97 / uniq.rkt
Created October 9, 2021 19:15 — forked from soegaard/uniq.rkt
Uniq for Racket lists
#lang racket/base
(provide uniq)
;;;
;;; Uniq
;;;
; The function uniq takes a list as input and returns a new list:
; adjacent elements are compared and omits any repeated elements.
; In other words, uniq works like the Unix utility uniq, but on list.
@chansey97
chansey97 / stack.rkt
Created March 3, 2021 16:41
An imperative stack implementation in Racket.
#lang racket
(provide (except-out (all-defined-out)
stack))
(struct exn:fail:stack exn:fail ())
(struct stack ([vector]
[top #:mutable])
#:transparent)
#lang racket
(define the-key 'the-key)
(define the-spell-book 'the-spell-book)
(define person%
(class object%
(init-field items h)
(super-new)
#lang racket
(define the-key 'the-key)
(define the-spell-book 'the-spell-book)
(define person%
(class object%
(init-field items h)
(super-new)
@chansey97
chansey97 / Crush.hs
Last active March 3, 2021 16:46
Implement cursh by Traversable.
{-# LANGUAGE DeriveFunctor #-}
module Crush(
AST(..)
, crush
, crushMap
, crushMapM
-- debugging
, buildAst
, printAst
@chansey97
chansey97 / do-notation-maybe-local-eval.scm
Last active March 3, 2021 16:46
do-notation for maybe monad by `local-eval` and `the-environment `.
;guile 2.2.3
(use-modules (ice-9 local-eval))
(use-modules (ice-9 match))
(use-modules (srfi srfi-9))
(define-record-type Just
(make-Just x)
Just?
(x Just-x))
module Bridge where
import Data.List
import Data.Maybe
import qualified Data.Tree as DTree
import qualified Data.Map as Map
-- Note that user must ensure there is at least one (0, x) in pieces
pieces :: [Piece]
pieces = [(0,2), (2,2), (2,3), (3,4), (3,5), (0,1), (10,1), (9,10)]