Skip to content

Instantly share code, notes, and snippets.

@disnet
disnet / annotate.js
Created October 16, 2012 21:19
parameter annotations (type, contract, etc.) in sweet.js
macro def {
case $name:ident ( $($params:ident : $type:ident) (,) ...) $body => {
// just throwing away the type annotation. The semantics of type
// annotations left as an exercise to the reader :)
function $name ($params (,) ...) $body
}
}
def add (a : Number, b : Number) {
return a + b;
@disnet
disnet / gist:3855533
Created October 8, 2012 23:07
conspair
macro conspair {
case [$head] => { [$head] }
case [$head $tail ...] => {
[$head, conspair [$tail ...]]
}
}
conspair [1 2 3 4]
@disnet
disnet / hoisting.md
Created September 5, 2012 18:28
JavaScript var hoisting

Here's the standard example:

var x = "bar";
(function() {
  console.log(x) // undefined
  var x = 42;
})()

But what happens when you have a parameter?

@disnet
disnet / gist:3407999
Created August 20, 2012 21:18 — forked from johnkpaul/gist:2361303
gruntjs Mocha task
/*
* grunt
* https://github.com/cowboy/grunt
*
* Copyright (c) 2012 "Cowboy" Ben Alman
* Copyright (c) 2012 John K. Paul @johnkpaul
* Licensed under the MIT license.
* http://benalman.com/about/license/
*/
== 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
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
@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
@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
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);
macro m {
rule { $x } => { var $x; }
}
m x