Commit Graph

722 Commits

Author SHA1 Message Date
greg
c35b684bdd Builtins - + 2018-07-26 00:52:45 -07:00
greg
d11c518721 Framework for multiple environments 2018-07-26 00:52:45 -07:00
greg
8dde8c7381 Apply wokr 2018-07-26 00:52:45 -07:00
greg
47cad3712c Fixing quote 2018-07-26 00:52:45 -07:00
greg
ffcc0ef379 Starting builtins 2018-07-26 00:52:45 -07:00
greg
6766791627 Lambda abstraction 2018-07-26 00:52:45 -07:00
greg
05de5ebe61 Kill this linker thing 2018-07-26 00:52:45 -07:00
greg
29ebd35165 Kill unused code 2018-07-26 00:52:45 -07:00
greg
622b50a40c Some lambda work 2018-07-26 00:52:45 -07:00
greg
9f916c7c02 Remove a unimplemented 2018-07-26 00:52:45 -07:00
greg
85375bb9df Add fn literal variant 2018-07-26 00:52:45 -07:00
greg
d11500c643 Even more concise 2018-07-26 00:52:45 -07:00
greg
8493233b69 Refactoring 2018-07-26 00:52:45 -07:00
greg
60644ba3d7 Starting lambdas 2018-07-26 00:52:45 -07:00
greg
254f2ae4b8 Make var methods better 2018-07-26 00:52:45 -07:00
greg
e243b99d3b If expressions 2018-07-26 00:52:45 -07:00
greg
3d023a6704 Rukka - Variables 2018-07-26 00:52:45 -07:00
greg
73612d1465 Define half-working 2018-07-26 00:52:45 -07:00
greg
d1a15b64ff Get rid of old import 2018-07-26 00:52:45 -07:00
greg
66e8643382 eq? 2018-07-26 00:52:45 -07:00
greg
ad58fc1ad1 True and False primitives 2018-07-26 00:52:45 -07:00
greg
adc7be30a9 Some primitive implementations 2018-07-26 00:52:45 -07:00
greg
72097fa125 Fix pointer alias problem 2018-07-26 00:52:45 -07:00
greg
ae9d93f6dc Still tryign to make the pointer-munging work 2018-07-26 00:52:45 -07:00
greg
3d421c7039 This has broken sexp parsing 2018-07-26 00:52:45 -07:00
greg
166bc3b3cb Fix print bug 2018-07-26 00:52:45 -07:00
greg
2f263de8ba Convert to more lispish Cons 2018-07-26 00:52:45 -07:00
greg
46ae176498 Special forms list 2018-07-26 00:52:45 -07:00
greg
d84def35e7 Unwraps 2018-07-26 00:52:45 -07:00
greg
07e55ca04e Handle top-level empty list 2018-07-26 00:52:45 -07:00
greg
6dcf5c7945 print list 2018-07-26 00:52:45 -07:00
greg
568ee88f3a Tighten code 2018-07-26 00:52:45 -07:00
greg
8749ed984d Some more code 2018-07-26 00:52:45 -07:00
greg
559eaf54de Type simplification 2018-07-26 00:52:45 -07:00
greg
bf42b58ca5 State for eval 2018-07-26 00:52:45 -07:00
greg
ecdcb7ff3d Numbers 2018-07-26 00:52:45 -07:00
greg
766209e5b2 Fixed string parsing 2018-07-26 00:52:45 -07:00
greg
e9429ed62a Strings partway working 2018-07-26 00:52:45 -07:00
greg
6e188976f9 Quotes 2018-07-26 00:52:45 -07:00
greg
d235b47bc5 Change Symbol -> Word for token 2018-07-26 00:52:45 -07:00
greg
3fcb840ce5 Fix bug 2018-07-26 00:52:45 -07:00
greg
523bd179a4 Tighten code 2018-07-26 00:52:45 -07:00
greg
35e715dfd6 Intersperse 2018-07-26 00:52:45 -07:00
greg
6eb0fc8834 Parsing correctly yay 2018-07-26 00:52:45 -07:00
greg
c0a5418c27 Tokens 2018-07-26 00:52:45 -07:00
greg
42749c1ff6 Sexp parsing 2018-07-26 00:52:45 -07:00
greg
42b9507af0 Parses ( 2018-07-26 00:52:45 -07:00
greg
38e85e2c78 Some halfwritten stuff 2018-07-26 00:52:45 -07:00
greg
7c5fef49f8 List datatype 2018-07-26 00:52:45 -07:00
greg
c1e214c701 Add a new language - Rukka
This is a (simple) lisp, partially for fun, partially for testing the
generic interfaces
2018-07-26 00:52:45 -07:00
greg
66e3de41dd Make schala-lib::language private and reexport 2018-07-26 00:52:45 -07:00
greg
9545130fd3 Take TokenError type out of schala-lib 2018-07-26 00:52:45 -07:00
greg
ef7412dcd5 I don't need this syntax 2018-07-26 00:52:45 -07:00
greg
dee470cb8b Kill some packages from schala bin 2018-07-26 00:52:45 -07:00
greg
c057f068ef Get rid of unused imports 2018-07-26 00:52:45 -07:00
greg
c4dbdf1fe7 Refactor into libs part II
woo it compiles
2018-07-26 00:52:45 -07:00
greg
4c7174e4c4 Halfway done to library-ifying schala 2018-07-26 00:52:45 -07:00
greg
d0538faef3 PLIGenerators can be authoritative, not the instances themselves 2018-07-26 00:52:45 -07:00
greg
b97da01370 Some simplification 2018-07-26 00:52:45 -07:00
greg
b09efd3660 Passing things along as generators 2018-07-26 00:52:45 -07:00
greg
a42a58b155 Don't need mutex, kill it 2018-07-26 00:52:45 -07:00
greg
708c0ab103 Finally removed schala dependency
Now need to clena up everything
2018-07-26 00:52:45 -07:00
greg
1d9d0c4395 Okay this compiles
The secret (from #rust) appeared to be that Fn() needed to have + Send
explicitly annotated on it
2018-07-26 00:52:45 -07:00
greg
ffb87ebb82 Working on solution to Rocket state problem 2018-07-26 00:52:45 -07:00
greg
30c741f459 Some linker bullshit
I don't know why I needed to do this
2018-07-26 00:52:45 -07:00
greg
d19541b3e1 Splitting up some code
In preparation for splitting schala into crates
2018-07-26 00:52:45 -07:00
greg
3651461bbc Some more structure in evaluator 2018-07-26 00:52:45 -07:00
greg
7730457878 Revert "Starting to split project into multiple crates"
This reverts commit e3b0f4a51e.
Bah, this was a bad idea, wrong way to do it
2018-07-26 00:52:45 -07:00
greg
46dbac7f69 Starting to split project into multiple crates 2018-07-26 00:52:45 -07:00
greg
f68167f3a2 Halfway done with evaluating tuples 2018-07-26 00:52:45 -07:00
greg
c9625ffa77 Add module keyword 2018-07-26 00:52:45 -07:00
greg
9afbd2305f Literal non-primitive values 2018-07-26 00:52:45 -07:00
greg
d7564f81c9 Starting work on literal non-primitve values 2018-07-26 00:52:45 -07:00
greg
2fbb8f2b2f Can eval custom data constructors now 2018-07-26 00:52:45 -07:00
greg
1884eae191 Float literals, kill old code 2018-07-26 00:52:45 -07:00
greg
bb880d44fa Some more primitive types + binop-checking 2018-07-26 00:52:45 -07:00
greg
22b4738726 Add required imports 2018-07-26 00:52:45 -07:00
greg
0202aab181 Some partial work on refactoring type infer fn 2018-07-26 00:52:45 -07:00
greg
f9c9ed6b29 Add colored output to non-interactive 2018-07-26 00:52:45 -07:00
greg
04cb1616f7 Convert webapp to using included files 2018-07-26 00:52:45 -07:00
greg
5f1c46cb87 Fix type check macro to add symbol table 2018-07-26 00:52:45 -07:00
greg
0ea9bd3d95 More work with unification 2018-07-26 00:52:45 -07:00
greg
0cf56eea4f the evar table
TODO find a better way to represent this
2018-07-26 00:52:45 -07:00
greg
ab53c5394e Unify work 2018-07-26 00:52:45 -07:00
greg
f6c85951fe Move type-level func up 2018-07-26 00:52:45 -07:00
greg
c530715671 Okay I am figuring things out about hindley-milner again 2018-07-26 00:52:45 -07:00
greg
617a30b967 rename type_var to ty 2018-07-26 00:52:45 -07:00
greg
cd11d18385 String and () types 2018-07-26 00:52:45 -07:00
greg
f82c6199c0 Change around some stuff 2018-07-26 00:52:45 -07:00
greg
f75cd763f8 Change Variable to Value 2018-07-26 00:52:45 -07:00
greg
54c16f0190 Partial handling of user defined types 2018-07-26 00:52:45 -07:00
greg
8d8e3cd565 Starting to make unify actually work 2018-07-26 00:52:45 -07:00
greg
47975cf8f6 Convert unify to are types
b/c Type implements Clone
Maybe wanna kill this later for efficiency
2018-07-26 00:52:45 -07:00
greg
ddd861fbea Have + do something different with strings
Needed to introduce polymorphism soon
2018-07-26 00:52:45 -07:00
greg
200d0f9867 Operator typing a little bit 2018-07-26 00:52:45 -07:00
greg
3e44bd3a18 Slight refactoring 2018-07-26 00:52:45 -07:00
greg
e2a94280c2 Renamed all the type-related types 2018-07-26 00:52:45 -07:00
greg
c5b3bafe43 Move some type checking code around 2018-07-26 00:52:45 -07:00
greg
b417451536 Basic typing test 2018-07-26 00:52:45 -07:00
greg
a0faed3603 String types 2018-07-26 00:52:45 -07:00
greg
83752a1c74 Some more type work 2017-10-10 01:04:19 -07:00
greg
66c7bbeb07 Floats, pathspec changes 2017-10-09 04:02:50 -07:00
greg
ed8359bcd7 Store constant state, func/binding as value
on symbol table, instead of key
2017-10-09 02:38:33 -07:00
greg
996f75e15c A lot more type work 2017-10-09 02:26:59 -07:00
greg
30a54d997c Simplify symbol table code 2017-10-09 00:59:52 -07:00
greg
4bcbf1854a Use universal/existential type data structures 2017-10-09 00:36:54 -07:00
greg
f2c6556c2a Use name TypeVariable 2017-10-09 00:22:42 -07:00
greg
9161e2751f (Janky) type inference for explicitly-type-annotated values 2017-10-08 23:45:38 -07:00
greg
60fc9fd7e1 Super-basic type inference working
with a bunch of assumptions and hard-coded values
2017-10-08 23:33:53 -07:00
greg
3b249045aa Call needs to accept a general argument 2017-10-08 23:02:03 -07:00
greg
ff0e14d9a9 Rename params -> args in Call Expr 2017-10-08 22:52:05 -07:00
greg
8fe535597e Starting to actually do Hindley-Milner!! 2017-10-08 22:48:10 -07:00
greg
4bb8f82579 Make AST output red 2017-10-08 22:17:29 -07:00
greg
5cb8423ecc Beginning for expressions 2017-10-08 22:07:18 -07:00
greg
4032707dc9 Kill some comments 2017-10-08 21:26:47 -07:00
greg
1a8423535a Add test for function decl 2017-10-08 21:25:51 -07:00
greg
338981febe Changed function signatures around slightly 2017-10-08 21:21:02 -07:00
greg
6dff8b029e Function definitions expanded 2017-10-08 20:55:05 -07:00
greg
df877830d3 Fixed tests 2017-10-08 19:39:41 -07:00
greg
40696b3cbd Rename TypeAnno to TypeName everywhere 2017-10-08 19:30:52 -07:00
greg
40a82d7e25 Tests for new type stuff
+ some renaming
2017-10-08 19:15:08 -07:00
greg
c605f76059 More type work II 2017-10-08 19:03:02 -07:00
greg
a6d71821b9 More type work I 2017-10-08 18:47:57 -07:00
greg
c4f0331d1a Symbol table addition should be separate stage 2017-10-08 16:24:44 -07:00
greg
b4054d7581 Impl blocks 2017-10-08 14:24:02 -07:00
greg
74d3828c71 Symbol table debug needs to happen before type check 2017-10-08 13:59:55 -07:00
greg
bb57da564d Infrastructure to debug symbol table 2017-10-08 13:57:43 -07:00
greg
3f9ae5fac3 Symbol table accepts variables 2017-10-08 13:51:56 -07:00
greg
62edc7c996 type checking / symbol table stuff 2017-10-08 12:22:04 -07:00
greg
e412fb9a89 Convert type-checking function type 2017-10-07 22:08:48 -07:00
greg
3a97401f61 Add symbol table insertion method skeleton 2017-10-07 21:57:51 -07:00
greg
87cfe854ac Tuple literals 2017-10-06 20:28:07 -07:00
greg
184a2ae03a Change syntax for type alias 2017-10-04 22:02:31 -07:00
greg
50ceb92d6b Move type-checking into a module 2017-10-04 02:07:30 -07:00
greg
dd7736e32d Add some resources 2017-10-03 21:28:17 -07:00
greg
3025af3ded Starting on impls 2017-10-03 03:49:07 -07:00
greg
c83df6fd84 refactor main code 2017-10-02 23:33:07 -07:00
greg
65f64ebcc2 Add source file suffix to trait 2017-10-02 23:07:05 -07:00
greg
00ee802fbd Clear up clutter in code from using std::process:: 2017-10-02 23:00:11 -07:00
greg
c88d59401c Making main.rs more concise 2017-10-02 22:58:03 -07:00
greg
1aa4e3b942 Get rid of virtual machine code
Gonna implement this differently
2017-10-02 20:34:51 -07:00
greg
abbbb34901 Some very basic evaluation stuff 2017-10-02 20:11:27 -07:00
greg
3ff4a34aeb kill some non-used variable warnings 2017-10-02 01:52:46 -07:00
greg
7430aebe63 Webapp actually does something 2017-10-02 00:15:39 -07:00
greg
29d307ff53 Made web app a bit more useful 2017-10-01 23:25:36 -07:00
greg
89482e5b5a Use a Result 2017-10-01 19:31:43 -07:00
greg
6435d5e958 Make eval output nicer 2017-10-01 19:29:05 -07:00
greg
f6536e7ebd Evaluation stuff 2017-10-01 19:09:55 -07:00
greg
c5cb223168 Super-minimal type-checking with just ints 2017-10-01 17:50:26 -07:00
greg
d16a0c9380 Evaluation of literals 2017-10-01 12:55:28 -07:00