Skip to content

Instantly share code, notes, and snippets.

@disnet
disnet / gist:44f8572b863ed398a69a
Created June 12, 2014 04:10
adjust lineNumber
macro m {
rule {} => {
(function() {
return
{
foo: "bar"
}
})
}
}
@disnet
disnet / import.js
Last active August 29, 2015 14:07
import macros
// test.js
#lang "./macros/stxcase.js";
import { m } from "./mod.js";
m(10, 100)
// mod.js
#lang "./macros/stxcase.js";
### Keybase proof
I hereby claim:
* I am disnet on github.
* I am disnet (https://keybase.io/disnet) on keybase.
* I have a public key whose fingerprint is 1CCB B2BE 266F 8706 733F C4A7 07DF 8A2D E8B1 D193
To claim this, I am signing this object:
@disnet
disnet / stxparm.md
Last active August 29, 2015 14:08
thoughts about syntax parameter

Syntax parameters allow us to play around with hygiene in a principled fashion.

stxParam it = function() { throw new Error("must be rebound"); };

let aif = macro {
    rule { ($cond ...) { $body ...} } => {
	var it_inner  = $cond ...;
	if (it_inner) {
macro m {
rule { $x } => { var $x; }
}
m x
let function = macro {
rule { $name (callback $arg $rest ...) { $body ... } } => {
function $name ($arg $rest ...) {
$body ...
}
}
}
function foo(callback cb, x, y, z) {
cb(x + y + z);
@disnet
disnet / highlight.sh
Created October 21, 2011 19:51
running pygments on the command line
pygmentize -f rtf -O fontface=Menlo -o examples.rtf examples.coffee
@disnet
disnet / let.coffee
Created December 5, 2011 19:36
let in coffeescript
lets = (vals, fn) -> fn.apply @, vals
lets [1, [2, 3]], (a, [b, c]) ->
a is 1
b is 2
c is 3
class HashMap
# non-implementation of a HashMap :)
get: (key) -> @[key]
put: (key, val) -> @[key] = val
HashMapC = (keyContract, valContract) ->
?{
get: ((keyContract) -> valContract)
put: (keyContract, valContract) -> Any
== Access of unallocated memory ==
address 0
at test_unallocated (file_name.js:3:0)
== Access of uninitialized memory ==
address 0
at test_unallocated (file_name.js:3:0)
== Free of unallocated memory ==
address 8184