 findFreeInList = (list) ->
   concatMaps (map findFree, list)...
 
+# Free variables in LHS of implicit functional dependency
+findUnconstrained = (constraint) ->
+  findFree constraint.types.types[0]
+
 freshInstance = (ctx, type) ->
   throw new Error "not a forall in freshInstance #{safePrintType type}" unless type and type.ForAll
   freshes = map ((kind) -> ctx.freshTypeVariable kind), type.kinds

    ((fold helper id over) initial)
    helper (fn [x r acc]
      (r (with x acc))))
  """
  "6", 6


    translateIr ctx, (irMethod type, name)
  else
    finalType = addConstraintsFrom ctx, {id, type}, substitute ctx.substitution, type
    classParams = dictsForConstraint ctx, finalType.constraints
    params = map validIdentifier, arity
    if classParams.length > 0
      (irFunctionTranslate ctx,
