evincarofautumn/kitten — pull request #87 by strager (2013-10-15 04:33:05+00:00)
Title: Typed AST

Auxiliary changes:

* String literals now have their own AST constructor
(replacing Vector). Strings are still typechecked as
`[Char]`.

* `Scheme` is now a functor, allowing it to contain a `Type`
or a `Typed`. Uses of `Scheme` have been replaced with
`TypeScheme` (an alias of `Scheme (Type Scalar)`).

* The `Def` of a typed AST now includes the type `Scheme`.

* The `Def` of a typed AST now refers to a `Scheme Typed`
instead of a `Value` (or `Scheme Value`).

* The interpreter now has a separate type for runtime
values, `InterpreterValue`.

* Many unused constructors of `Term` and `Resolved` (such as
`Choice` and `Wrapped`) have been removed.

* Type inference now takes a typed prelude. This means the
prelude is not inferred for every line of REPL input.

* Type inference now uses a list of types as the fragment
stack instead of a list of values.

* `yarnValueInstruction` and `yarnValue` are now merged and
total.