greg
27729cefdf
Some improvements to the thing
2018-07-26 00:52:46 -07:00
greg
df76e7c120
Pretty-print type table
2018-07-26 00:52:46 -07:00
greg
889610f0b0
Pretty-print Symbol Table
2018-07-26 00:52:46 -07:00
greg
3beabf4678
Start eval-ing data constructors
2018-07-26 00:52:46 -07:00
greg
25790f8643
Added super-janky prelude capability
2018-07-26 00:52:46 -07:00
greg
ff5446af3f
Add symbols from symbol table into global type context
2018-07-26 00:52:46 -07:00
greg
5d84153c9e
Want bin expressions typed soon
2018-07-26 00:52:46 -07:00
greg
0b0f6b6b50
Symbol table handles functions better
2018-07-26 00:52:46 -07:00
greg
856a360aba
Types need handle to symbol table
2018-07-26 00:52:46 -07:00
greg
81ca9ee20f
Add some data structures back
2018-07-26 00:52:46 -07:00
greg
4caf8096b3
Add Scheme, TypeEnv, Substitution data structs
2018-07-26 00:52:46 -07:00
greg
c65907388d
Some ADT work
2018-07-26 00:52:46 -07:00
greg
33c22c8bbc
Typecheck values
2018-07-26 00:52:46 -07:00
greg
4a27af2136
Add a super-basic test
2018-07-26 00:52:46 -07:00
greg
07af54b78a
More work
2018-07-26 00:52:46 -07:00
greg
c4666b82ec
Basics
2018-07-26 00:52:46 -07:00
greg
274dd1ccb0
Basic stuff
2018-07-26 00:52:46 -07:00
greg
70ec79c4b3
Lol starting over from scratch again
...
H-M is hard :/
2018-07-26 00:52:46 -07:00
greg
f88d2331e3
printf debugs for problems with function typing
2018-07-26 00:52:46 -07:00
greg
c8f961abbf
Functions
2018-07-26 00:52:46 -07:00
greg
d040d76bfa
Start handling function case
2018-07-26 00:52:46 -07:00
greg
887ba46b0b
Fix this thing
2018-07-26 00:52:46 -07:00
greg
a80db9e4c2
Debug types
...
WIP
2018-07-26 00:52:46 -07:00
greg
c986233a95
Adding bindings seems to work?
...
I'm playing real fast and loose though
2018-07-26 00:52:46 -07:00
greg
bb29df4a73
Variable binding insertion infrastructure
2018-07-26 00:52:46 -07:00
greg
4db3595d7c
More work on variables
2018-07-26 00:52:46 -07:00
greg
217ee73fc9
Literals
2018-07-26 00:52:46 -07:00
greg
93309c025e
Some work
2018-07-26 00:52:46 -07:00
greg
b67512a9e1
Add Infer struct
2018-07-26 00:52:46 -07:00
greg
8e6f605fab
Type alias "TypeName"
2018-07-26 00:52:46 -07:00
greg
ba4185b0fb
Back to including typechecking code in pipeline
2018-07-26 00:52:46 -07:00
greg
7a2a4df297
Clearing out most of the cruft from typechecking
2018-07-26 00:52:46 -07:00
greg
642e9da8ee
Move everything symbol-table-related into a separate module
2018-07-26 00:52:46 -07:00
greg
cea7427847
put TypeEnvironment on TypeContext
2018-07-26 00:52:46 -07:00
greg
3156c31dfc
Variable lookup
2018-07-26 00:52:46 -07:00
greg
2e457cd5e8
First real inferring
2018-07-26 00:52:46 -07:00
greg
843d895f2b
infer infra
2018-07-26 00:52:46 -07:00
greg
734c53ce0d
Starting to deal with actual expr inferring
2018-07-26 00:52:46 -07:00
greg
3a3b8dd440
TypeEnvironment lives in Infer
2018-07-26 00:52:46 -07:00
greg
c96a56a7ac
fresh
2018-07-26 00:52:46 -07:00
greg
4017857a3a
Unification
2018-07-26 00:52:46 -07:00
greg
9e0f8b8a14
InferError
2018-07-26 00:52:46 -07:00
greg
7121624f77
Type Env
2018-07-26 00:52:46 -07:00
greg
48e795decc
apply_substitution for PolyTypes
...
If I made an error it's likely here...
2018-07-26 00:52:46 -07:00
greg
a26da934f4
Substitution monotypes
2018-07-26 00:52:46 -07:00
greg
1de1cd9cfd
For H-M, add types and some impls
2018-07-26 00:52:46 -07:00
greg
6f639b9030
Type type structure
2018-07-26 00:52:46 -07:00
greg
8f0104ebc7
Deletion
2018-07-26 00:52:46 -07:00
greg
36cd7e080d
Even more deletions
2018-07-26 00:52:46 -07:00
greg
f48a25779c
Lol just get rid of all the old code, start from scratch again
2018-07-26 00:52:46 -07:00
greg
808a1bfc98
Still more deletions
2018-07-26 00:52:46 -07:00
greg
c7e46c1cfa
KIll any commented code
2018-07-26 00:52:46 -07:00
greg
98cfcfc18d
Eval shouldn't be aware of types
2018-07-26 00:52:46 -07:00
greg
b4c7ea3d02
Show bindings too in debug
2018-07-26 00:52:46 -07:00
greg
e7c89ed840
Some more refactoring
2018-07-26 00:52:46 -07:00
greg
b0e38f7f5b
Refactor
2018-07-26 00:52:46 -07:00
greg
276662d98a
Some code rearrangements
2018-07-26 00:52:46 -07:00
greg
e8e9265b26
Use less verbose match syntax
2018-07-26 00:52:46 -07:00
greg
cb316a973e
Getting back to hindley-milner
...
First, clear out some of this cruft in the compiler warnings
2018-07-26 00:52:46 -07:00
greg
e64861b602
Some eval tests
2018-07-26 00:52:46 -07:00
greg
1673fd1cf9
Fix test
2018-07-26 00:52:46 -07:00
greg
c00effcbdd
Add _
2018-07-26 00:52:46 -07:00
greg
8378170fbd
Kill comments
2018-07-26 00:52:46 -07:00
greg
7ab385d398
Bring custom ADTs to the repl
2018-07-26 00:52:46 -07:00
greg
9fb148bb02
Make compile again
2018-07-26 00:52:46 -07:00
greg
97df2fa344
I dunno
2018-07-26 00:52:46 -07:00
greg
a08134a747
Delete old code in eval
2018-07-26 00:52:46 -07:00
greg
3ac50f974d
Pass around reference to type context in evaluator
2018-07-26 00:52:46 -07:00
greg
afc4281e7f
Evaluate function arguments in context before applying them
2018-07-26 00:52:46 -07:00
greg
8d6fea942f
Handle function definition before use
...
And some other ReducedAST - Evaluation niceties
2018-07-26 00:52:46 -07:00
greg
6d93c758a2
Add function to symbol table
2018-07-26 00:52:46 -07:00
greg
aff421cd99
Working with symbol table
...
Note that symbol table is a different object now than the previous
binding table that was used for type-checking. That binding table is not
currently debugged and should be debugged in a separate debug output with
typechecking proper.
2018-07-26 00:52:46 -07:00
greg
493d76da0b
Add symbol table data structure to typechecking
2018-07-26 00:52:46 -07:00
greg
eb681fbff9
Make parse error message nicer
2018-07-26 00:52:46 -07:00
greg
f3e3843528
Decomplexify delimited!
2018-07-26 00:52:46 -07:00
greg
6b90e19eb1
Simplify expect! macro
...
Ends up printing a debug print, but whatever, will fix later
2018-07-26 00:52:46 -07:00
greg
210ae47c8b
Get rid of lambda
2018-07-26 00:52:46 -07:00
greg
70794d8ff1
For expression parsing
2018-07-26 00:52:46 -07:00
greg
532c8c45b4
Parse while expressions
...
Decided to add while expressions to the language to make for-parsing
easier. Plus some other random notes
2018-07-26 00:52:46 -07:00
greg
24b532df06
This doesn't need to be a closure
2018-07-26 00:52:46 -07:00
greg
ac576be604
Trim newline in getline()
...
Ineffiicent but whatever
2018-07-26 00:52:46 -07:00
greg
6bf106a1a3
Equality
2018-07-26 00:52:46 -07:00
greg
44e585fca2
Conditionals
2018-07-26 00:52:46 -07:00
greg
3f836eb74f
Kill some warnings
2018-07-26 00:52:46 -07:00
greg
abf25d648d
Change repl behavior of strings
2018-07-26 00:52:46 -07:00
greg
1f6e6d9b31
Tuples
2018-07-26 00:52:46 -07:00
greg
e2703121d8
Kill unneeded import
2018-07-26 00:52:46 -07:00
greg
e5b6b41422
Error msg
2018-07-26 00:52:46 -07:00
greg
6c5e3dea5d
Assignment
2018-07-26 00:52:46 -07:00
greg
bd8bf1945c
Super simple janky input
2018-07-26 00:52:46 -07:00
greg
9e393d2753
Kill old type structure
2018-07-26 00:52:46 -07:00
greg
822420a9d5
Add an eval test
2018-07-26 00:52:46 -07:00
greg
6f8dc9bedd
rename IntLiteral -> NatLiteral
2018-07-26 00:52:46 -07:00
greg
e0cec8b8a6
print, println as builtins
2018-07-26 00:52:46 -07:00
greg
1a84f62818
Kill some old code, make very_simple example print
2018-07-26 00:52:46 -07:00
greg
b1966d7199
Function calling works kind of
2018-07-26 00:52:46 -07:00
greg
fdbb21990d
Retrieve function from memory when called
2018-07-26 00:52:46 -07:00
greg
1011ff08f3
Use new rust 1.26 less verbose syntax
2018-07-26 00:52:46 -07:00
greg
6d8d2aecbd
Functions
2018-07-26 00:52:46 -07:00
greg
848306ad1a
Reduce defined function
2018-07-26 00:52:46 -07:00