Here's the standard example:
var x = "bar";
(function() {
console.log(x) // undefined
var x = 42;
})()
But what happens when you have a parameter?
| pygmentize -f rtf -O fontface=Menlo -o examples.rtf examples.coffee |
| 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 |
| /* | |
| * 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/ | |
| */ |
Here's the standard example:
var x = "bar";
(function() {
console.log(x) // undefined
var x = 42;
})()
But what happens when you have a parameter?
| macro sexp { | |
| case () => { | |
| ; | |
| } | |
| case ($p) => { | |
| $p | |
| } | |
| case ($x $y) => { | |
| $x($y); | |
| } |
| macro conspair { | |
| case [$head] => { [$head] } | |
| case [$head $tail ...] => { | |
| [$head, conspair [$tail ...]] | |
| } | |
| } | |
| conspair [1 2 3 4] |
| 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; |
| macro null_helper { | |
| case ($processed ...) ($rest) => { | |
| $processed (.) ... . $rest | |
| } | |
| case ($processed ...) ($rest_head $rest ...) => { | |
| $processed (.) ... . $rest_head | |
| && null_helper ($processed ... $rest_head) ($rest ...) | |
| } | |
| } |