Evan Czaplicki
95ec3a822e
Stop using error
when constraining patterns and when instantiating source types
2013-08-25 20:23:49 -07:00
Evan Czaplicki
47d68d8bf2
Succeed on programs that have no expressions
2013-08-13 22:12:45 -07:00
Evan Czaplicki
b7eb1335b0
Fix subtle bug with rigidVars vs rigidQuantifiers, was quantifing over the wrong variables in a forall
2013-08-12 14:32:51 -07:00
Evan Czaplicki
a736a28a43
Properly quantify variables in Data expressions.
2013-08-12 01:09:26 -07:00
Evan Czaplicki
585107eaed
Fix variable shadowing when pattern matching on a pattern with only one variable, when it appears in a let-expression
2013-08-11 12:45:59 -07:00
Evan Czaplicki
2e38f7b061
Give line numbers when there is a kind error in a pattern
2013-08-06 15:44:19 -07:00
Evan Czaplicki
51bc878b51
Use new Located datastructure, add source strings where appropriate
2013-08-03 11:41:33 -07:00
Evan Czaplicki
28d256876d
Fix record constructor for extension
2013-08-02 10:51:12 -07:00
Evan Czaplicki
8e54751626
Correctly generate a type for markdown blocks
2013-08-01 17:19:34 -07:00
Evan Czaplicki
4f595c2ca5
Eliminate dead code and reduce dependencies
2013-07-31 12:12:52 -07:00
Evan Czaplicki
b1f53d04ed
Pipe source locations through the type checker
2013-07-30 16:01:20 -07:00
Evan Czaplicki
a4c4cf0493
Use Location.none
less
2013-07-30 11:55:41 -07:00
Evan Czaplicki
b26edcc46e
Simplify representation of source locations
2013-07-30 11:43:42 -07:00
Evan Czaplicki
576e979483
Simplify code to generate record constraints
2013-07-27 00:14:38 +02:00
Evan Czaplicki
760ad905cf
Add record constructors, begin using lists to represent fields in record types to maintain ordering from the source program
2013-07-26 18:20:57 +02:00
Evan Czaplicki
46631c3616
Remove dead code
2013-07-26 15:07:35 +02:00
Evan Czaplicki
0681fbe583
Get rid of dead function and give instantiateTypeWithContext a shorter name
2013-07-26 12:22:15 +02:00
Evan Czaplicki
2b2bc087e4
Minor cosmetic change
2013-07-26 11:40:44 +02:00
Evan Czaplicki
9fe6c9a564
Change functions for creating type variables, distinguish names of different constraint type variables
2013-07-25 18:07:04 +02:00
Evan Czaplicki
a05c82f58b
Mess with whitespace
2013-07-25 17:09:23 +02:00
Evan Czaplicki
d059c362d9
Fix the type of String literals
2013-07-25 16:02:49 +02:00
Evan Czaplicki
d456cec5c8
Overload literal numbers without a decimal point to be either Ints or Floats
2013-07-25 01:25:17 +02:00
Evan Czaplicki
802be96e57
Fix issue in which patterns could become too general
2013-07-23 15:32:08 +02:00
Evan Czaplicki
175798f6d2
Fix type constraints for case-expressions
2013-07-23 14:59:53 +02:00
Evan Czaplicki
f37e05af5e
Fix type constraints for PData
...
Was generating functions based on free type variables, not on the kind
of the constructor.
2013-07-23 14:59:34 +02:00
Evan Czaplicki
d15d84deba
Get patterns to type-check with the value in the case expression
2013-07-22 15:10:48 +02:00
Evan Czaplicki
d9471f6c62
Add flexible variables for type annotated values
...
Without this, things are not generalized properly.
2013-07-22 14:41:12 +02:00
Evan Czaplicki
4c0f716aef
Change the representation of SolverState to have a "saved environment", recognize the "Save the Environment" variable
2013-07-19 17:50:16 +02:00
Evan Czaplicki
648cbd49dd
Use letters for arguments in adt constructors
2013-07-19 17:46:03 +02:00
Evan Czaplicki
b540fb43b0
Fix bug in generating Def for ADT constructors
...
Accidentally used the type name instead of the constructor name.
2013-07-19 12:39:38 +02:00
Evan Czaplicki
b87e45a27d
Change module prefixes for some values
2013-07-19 11:19:51 +02:00
Evan Czaplicki
a3a7b3ef62
Refactor type environment
...
Migrate some functions to Environment.hs, add built-in types like _List
and _Tuple2.
2013-07-17 19:29:27 +02:00
Evan Czaplicki
334d39c644
Manual dead code elimination ;)
2013-07-17 19:25:17 +02:00
Evan Czaplicki
fceb46dd4e
Try to support polymorphic pattern matching
...
Expands each pattern into basic PVars to attempt to recover polymorphis
through the same mechanism. Need to test further.
2013-07-16 21:46:06 +02:00
Evan Czaplicki
3bb618bcde
Provide the type *and definition* for data constructurs during type checking
2013-07-16 21:44:41 +02:00
Evan Czaplicki
67ef1ec77b
Create the Type.Inference module which handles type inference from
...
start to finish. Give it a Module and it returns a dictionary mapping
top-level values to types.
2013-07-16 00:38:31 +02:00
Evan Czaplicki
0070a844d0
Switch the internal data constructor name for tuples. Before tuple
...
constructors could be shadowed by user defined ADT's such as "Tuple0",
"Tuple2", etc. Now it uses "_Tuple0" to make it impossible to overlap
with user defined ASTs.
2013-07-14 19:52:50 +02:00
Evan Czaplicki
2b9853ce9b
Get variable reordering working for Declarations.
2013-07-13 13:44:40 +02:00
Evan Czaplicki
7f433922ed
Create module to sort let-blocks into "strongly connected components".
...
This does two things:
* makes it possible to automatically generalize functions without
bothering the programmer about managing dependencies.
* sorts values such that they'll be defined in the appropriate order
when they are mapped down to JavaScript.
2013-07-12 22:24:12 +02:00
Evan Czaplicki
4d7562f317
Begin generating constraints for whole programs. Need to perform
...
dependency sort within let-expressions for things to work properly though.
2013-07-12 16:21:07 +02:00
Evan Czaplicki
4208b5c9de
Remove some debugging stuff and generally clean up the code.
...
There was one potential error in which a debug needed to be a liftIO,
the computation it performed was not optional.
2013-07-12 11:05:03 +02:00
Evan Czaplicki
ca77056fc9
Improve quality of error messages.
2013-07-11 00:31:56 +02:00
Evan Czaplicki
b5887f41c9
Get type inference working in the basic case. Begin working on
...
printing errors in a prettier way.
2013-07-10 14:31:57 +02:00
Evan Czaplicki
497d478d26
Get the solver working on basic programs. It outputs pretty types for the
...
variables in the program. Need to test further and start doing some benchmarking.
2013-07-09 21:52:05 +02:00
Evan Czaplicki
2ef18826de
Start adding constraint generation for declarations.
2013-07-08 18:23:18 +02:00
Evan Czaplicki
0ed72056b6
Add pretty printing for type constraints.
...
Convert source-syntax types into type-checker types and print them
with pretty type variables.
Generate constraints for let-expressions using type annotations.
Build test function to turn strings into type constraints.
2013-07-08 16:47:44 +02:00
Evan Czaplicki
b87b84556c
Move the Environment.hs and Fragment.hs files down a directory.
2013-07-07 12:54:05 +02:00
Evan Czaplicki
ca8441ff2f
Continue getting the new type-checker in order.
2013-07-07 12:52:48 +02:00
Evan Czaplicki
351c33c486
Start generating constraints for let-expressions. Account for mutual recursion,
...
but will throw a runtime error if a user has given type annotations.
2013-07-03 19:51:38 +02:00
Evan Czaplicki
cdb63bd8d1
Start writing a new type checker based on the ATAPL chapter on efficient type-inference.
2013-07-03 14:35:51 +02:00