     expression[0].symbol is '('
 
 isRecord = (expression) ->
-  if isTuple expression
-    [labels, values] = unzip pairs _terms expression
-    labels.length is values.length and (allMap isLabel, labels)
+  (isTuple expression) and (isLabel _fst _terms expression)
 
 isSeq = (expression) ->
   (isForm expression) and expression[0].symbol is '{'

      return jsNoop()

    dataName = ctx.definitionName()

    # Types, Arity
    {fieldTypes, dataType} = findDataType ctx, typeArgLists, typeParams, dataName

  typeVars = map ((name) -> new TypeVariable name, (lookupInMap kinds, name)), varNames
  dataType: (substitute freshingSub,
    (applyKindFn (new TypeConstr dataName, dataKind), typeVars...))
  fieldTypes: (map ((types) -> substituteList freshingSub, types), fieldTypes)

ms.record = ms_record = (ctx, call) ->
    args = _validArguments call
