     @forwards '('
     args = []
     funname = @fun_name()
+
+    isSP = SpecialForm.NAMES.indexOf(funname) != -1
     until @expects ')', false
       @skip()
-      args.push @expr()
+      args.push if isSP then @list() else @expr()
+
     @forwards ')'
-    return new CallFun(funname, args)
+
+    klass = if isSP then SpecialForm else CallFun
+    return new klass(funname, args)
 
   expr: ->
     if @expects "'", false #value


class CallFun
  constructor: (@funname, @args) ->

class Parser
  constructor: ->

        return @list()
      else #atom
        return @atom()
    else if @expects '(', false #calling function or special form
      return @call_fun()
    else #atom
      return @atom()
