   compiledPairs = join compiledPairs, compileDeferred ctx
   resolveDeferredTypes ctx
 
-  #log "yay"
+  # log "yay"
   concat filter _is, compiledPairs
 
 # This function resolves the types of mutually recursive functions

  """(test "Hello")""", "Hello"

  'multiple instances'
  """Show (class [a]
  show (fn [x] (: (Fn a String))))

  show-string (instance (Show String)
    show (fn [x] x))

  show-bool (instance (Show Bool)
    show (fn [x]
      (match x
        True "True"
        False "False")))"""
  "(show False)", "False"

]


  #       record
  #         type
  #     constant-name
ms.data = (ctx, call) ->
    hasName = requireName ctx, 'Name required to declare new algebraic data'
    defs = pairsLeft isAtom, _arguments call
    # Syntax
