     # 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'

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

  # match
  #   subject
  #   listing of

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

paramTuple = (call, expression) ->
  if not expression or not isTuple expression
    malformed call, 'Missing paramater list'
    params = []
  else
    params = _terms expression
    map (syntaxNewName 'Parameter name expected'), params
  params

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