     # For now expect the curried constructor call
     args = _arguments call
     [paramList, defs...] = args
-    if not paramList or not isTuple paramList
-      malformed call, 'Missing paramater list'
-      params = []
-    else
-      params = _terms paramList
-      map (syntaxNewName 'Parameter name expected'), params
+    paramTuple paramList
     defs ?= []
     if defs.length is 0
       malformed call, 'Missing function result'

      }""").join '') + """ else {
        #{elseCase}
      }"""

# From precs, find caches and the LHS are declarable variables
findDeclarables = (precs) ->

    replicate call,
      (call_ (token_ 'data'), [(token_ ctx._name()), (tuple_ args)])

  # TODO:
  # For now support the simplest function macros, just compiling down to source
  # strings
  # macro: (ctx, call) ->
  #   args = _arguments call
  #   [paramList, body] = args
  #   paramTuple paramList
  #   if not body
  #     malformed call, 'Missing macro definition'

  #   ctx.
  #   # then in assign compile:
  #   ctx.macros[ctx._name()]


  # match
  #   subject
  #   listing of
