     x = x.tail;
   }
   return t;
-}
-
-$curry = function (f) {
+};
+
+var $curry = function (f) {
   var _curry = function(args) {
     return f.length == 1 ? f : function(){
       var params = args ? args.concat() : [];

      #['typename', /^[A-Z]/.test token]
      ['label', /\w*:$/.test token]
      ['string', /^["']/.test token]
      ['paren', token in ['(', ')']]
      ['bracket', token in ['[', ']']]


    } else {
      return #{elz};
    }}())"""
  'call': (method, obj, args...) ->
    # TODO: use dot notation if method is valid method name
    """((#{obj})[#{method}](#{args.join ', '}))"""

trueMacros =
  'match': (onwhat, cases...) ->
