Skip to content

Instantly share code, notes, and snippets.

(* basic functions *)
let id x = x
let const x y = x
let compose f g = fun x -> f (g x)
let flip f = fun x y -> f y x
let fix f = (fun x -> f (fun y -> x x y)) (fun x -> f (fun y -> x x y))
let void = fix (fun void x -> void)
(* data types *)
let match = id
@susisu
susisu / gen.scm
Created November 2, 2016 15:25
generator
(define (generator func)
(define done #f)
(define res '())
(define return '())
(define next (lambda (val)
(func yield)
))
(define (yield val)
(if done
(error "generator already closed")
@susisu
susisu / bf.grass
Last active June 25, 2016 16:26
The shortest Brainf*ck interpreter written in Grass (11218 characters)
wvwwWWWwwvwvwwwWWWWWwWWWWwwwWwwWwwwwwwwvwvwwwWWwwwWWwvwwWWWwWWWwWWWWWWwvwvwWWWWWWwWWWWwWWWWwvwwvwwwwWWWWwwWWWWwWwwwvwwwWWWwwWwwWWWWwvWwwwWWwWWWWwWwwWWWWWWwWwwwwvwwwwWWWwwWWWWWwwwWwwwWWWwvWwwWwwwWWWWWWWWWWWwWwwwwwWWWWWwwwWwwwwWWWWWWWWWWWWWWwWWWWWWWWwwWwwwwwwwwwwWWWWWWWWWWwWwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWwwwwwwwwwwWwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwww
@susisu
susisu / bf.w
Last active June 15, 2016 04:38
Brainfuck interpreter written in Grass
wvwwWWWwwvwwvwwWWwwWwwvwwWWWwWWWwvwWWwWWWwwWwwvwWwvwwwWWWwwWwwWWWWWWwvwwwWWWwwWw
wWWWWwvwwwWWwwwWWwvwwwWWWWWWWWWWWWwWWWWwwwWwwWwwwwwwwwwwwwwwwwvwwWWWWwWWWwWWWWWW
WWWWWWWWWwvwWWWwWWWwWWWWWWWWWWWWWWWwvwwwwWWWwwWWWWWwwwWwwwWWWwvwwwwWWWWwwWWWWwWw
wwvwWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwvwWwwWwwwwwwwwwwwwwwwwwvWWWWWWWWWwwwwwwwwwwwww
wwWWWWWWWWWWwWWWWWwWwwWWWWWWWwWwwwwWWWWWWWWWwWwwwwwwWWWWWWWWWWWwWwwwwwwwwWWWWWWW
WWWWWWwWwwwwwwwwwwWWWWWWWWWWWWWWWwWwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWwwwwwWWWWW
WWWWWWWWWWWWWWwwwwwwWwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwwwwwwwWWWWWWWW
WWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwWwwww
wwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWW
@susisu
susisu / hello.ml
Created June 10, 2016 11:07
Grass で Hello, world!
let n0 = \f x -> x
let succ n = \f x -> f (n f x)
let add n m = \f x -> m f (n f x)
let mul n m = \f x -> m (n f) x
let n1 = succ n0
let n2 = succ n1
let n4 = mul n2 n2
let n8 = mul n4 n2
let n16 = mul n8 n2
package {
import flash.display.Sprite;
import flash.text.TextField;
public class Main extends Sprite {
public function Main() {
var tf : TextField = new TextField();
this.addChild(tf);
var foo : Foo = new Foo("Alice", function (f : Function) : void {
tf.text = f(); // ok
"use strict";
/*
type schemes
TyScheme =
TyVar
| TyInt
| TyBool
| TyProd
| TyArrow
"use strict";
function ng(gf) {
let gen = gf();
let it = gen.next();
while (!it.done) {
if (it.value === null || it.value === undefined) {
return it.value;
}
it = gen.next(it.value);
@susisu
susisu / interpreter.js
Last active December 13, 2015 16:09
簡単な言語処理系の実装
/*
* 簡単な言語処理系の実装
*
* copyright (c) 2015 Susisu
*/
"use strict";
// AST
// 式 = プログラム の基底クラス
@susisu
susisu / TwitterExample.as
Created December 2, 2015 14:36
An example app for the "Twitter for AS3" library
package
{
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.net.navigateToURL;
import flash.net.URLRequest;