Skip to content

Instantly share code, notes, and snippets.

@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
@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/
*/
@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 / scheme.sjs
Created October 8, 2012 19:02
start of scheme in sweet.js (modified from http://pastebin.com/0nPBg8LY)
macro sexp {
case () => {
;
}
case ($p) => {
$p
}
case ($x $y) => {
$x($y);
}
@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 / 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:4165526
Created November 28, 2012 23:29
javascript - sweet.js macro checking for null
macro null_helper {
case ($processed ...) ($rest) => {
$processed (.) ... . $rest
}
case ($processed ...) ($rest_head $rest ...) => {
$processed (.) ... . $rest_head
&& null_helper ($processed ... $rest_head) ($rest ...)
}
}