aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
8 daysfix: changed type of (() T) from (T ...) to (Vector (T ...))Joel Kronqvist
this makes the type of the empty vector consistent with the runtime behavior and prevents weirdly typed expressions such as (vector (() Int)) : (Vector (Int ...)). removed an unused import in case.rs and changed a unused pattern variable to an underscore in conversion.rs.
10 daysfeat: vector concatenationJoel Kronqvist
10 daysfix: conversions between vectors, they were needed for some functions, but ↵Joel Kronqvist
now it's stricter than before
10 daysfeat: type conversion from (Vec/Quote X) -> X and add vec/quote to rest ↵Joel Kronqvist
pattern substitutions
10 daysfix: prevented loading non-let expressions as declarationsJoel Kronqvist
10 daysdoc: added help message and a reference to it in README.mdJoel Kronqvist
10 daysfeat: standard library & loading it by defaultJoel Kronqvist
10 daysfeat: read binds from files, evaluate expression from fileJoel Kronqvist
10 daysfix: function arguments not evaluating before function callJoel Kronqvist
10 daysfeat: fixed point dynamicsJoel Kronqvist
10 daysfix: subst not respecting fn and case bindsJoel Kronqvist
11 daysfeat: statics for fixed point recursionJoel Kronqvist
11 daysfix: made conversion work according to updated tests:Joel Kronqvist
* implemented conversion of arrow types * fixed (Int Bool) into (T T) succeeding * now vectors have to be of one type only even if generic * maybe something else too
11 daystest: stricter generic checking tests added for Type::aka and Type::into_typeJoel Kronqvist
11 daysfeat: added rest of types to the parserJoel Kronqvist
also fixed function tests in check.rs
11 daysfix: removed obsolete code for handling types as they are now parsed ↵Joel Kronqvist
directly to atoms
11 daysfeat: parsing of new types (T, (int ...), (int bool)) etc. also fixed bug in ↵Joel Kronqvist
into_type (it didn't handle lists recursively)
11 daysfix: removed unneccessary print, excluded .#[file] emacs backups in gitignoreJoel Kronqvist
11 daysfix: step scrutinee of case & can instantiate empty vecJoel Kronqvist
13 daysfeat: generic match arms, mostly for functions I guess?Joel Kronqvist
13 daysfeat: pattern matching evaluation in step.rsJoel Kronqvist
13 daysfeat: type checking for case expressionsJoel Kronqvist
13 daystest: added failing tests for pattern match typing and matches_typeJoel Kronqvist
14 daysrefactor: Added helper matches_pat for pattern matchingJoel Kronqvist
2025-08-11Fixed bug in repl not allowing using variables previously bound in REPL in ↵Joel Kronqvist
new binding expression
2025-08-10Implemented functionsJoel Kronqvist
2025-08-10Added tests for functionsJoel Kronqvist
2025-08-10Added term level type literals (for function type signatures)Joel Kronqvist
2025-08-10Added into_type and used it to implement implicit conversions in type checkingJoel Kronqvist
2025-08-10Implemented aka. Changed Nil:st type to NilType from an empty list.Joel Kronqvist
2025-08-10Added tests for conversions. Excluded emacs-files in .gitignore.Joel Kronqvist
2025-08-10Added let bind history to REPL + other minor refactors in REPLJoel Kronqvist
2025-08-09Implemented print as ? -> ()Joel Kronqvist
2025-08-09Revert adding of print (its behavior was poorly designed).Joel Kronqvist
This reverts commit 3e1bf7f9946efe70d452c71494ac77ed39110804.
2025-08-06Added print, raised level on which UnboundGeneric error is returnedJoel Kronqvist
2025-08-06Implemented let-bindingsJoel Kronqvist
2025-08-06Added boilerplate and tests for let-bindsJoel Kronqvist
2025-08-05Implemented vector.Joel Kronqvist
2025-08-05Added vectors and tests for their evaluation and typingJoel Kronqvist
2025-08-05Fix: quote is not a typewise identity function. Added vt(&str) as util for ↵Joel Kronqvist
VarType(String).
2025-08-05Fixed type of Not, added documentation to the tour for booleansJoel Kronqvist
2025-08-05Implemented booleans (no if-else yet)Joel Kronqvist
2025-08-05Added boilerplate and tests for booleans, integer comparisons and boolean ↵Joel Kronqvist
operators.
2025-08-05Changed project nameJoel Kronqvist
2025-08-04Added repl and some documentation. Improved error messages. Removed dead code.Joel Kronqvist
* Removed same_variant in parse::parsetree * Added SExp::multistep (for use of the repl) Improved error messages: * Added parenthesis around types * Changed how errors propagate inferring generics: added the error variant ArgumentsDontMatchGeneric, implemented the displaying of it, added tests for it. * Had to change some tests to match for the new changes
2025-08-04Implemented infer_type. Changed is_concrete tests and implemented it.Joel Kronqvist
Error messages still need improvement, maybe some new variants? is_concrete was changed to hold information on the first unbound variable through Result<(), String>.
2025-08-04Implemented generic substitution (tested) for use in inferring generics.Joel Kronqvist
2025-08-03Changed UndefinedType to VarType(String) for generics and added tests for ↵Joel Kronqvist
inferring them. Inferring is done by method Type::infer_generics. Whether it is executed is controlled by method Type::is_concrete. Also had to change the Display for Type and its tests, as the enum variants changed.
2025-08-03Implemented type_check, added method parts for SExpJoel Kronqvist
'parts' is different from 'into_vec', because it doesn't require flat structure and always succeeds
2025-08-02Added tests for type_check. Implemented std::fmt::Display for many enums. ↵Joel Kronqvist
Added type variants List(Type), and UndefinedType for use in error messages. Implemented type utility arr(a, b).