aboutsummaryrefslogtreecommitdiff
path: root/src/type
AgeCommit message (Collapse)Author
9 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
11 daysfeat: fixed point dynamicsJoel 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
12 daysfeat: parsing of new types (T, (int ...), (int bool)) etc. also fixed bug in ↵Joel Kronqvist
into_type (it didn't handle lists recursively)
12 daysfix: step scrutinee of case & can instantiate empty vecJoel Kronqvist
13 daysfeat: generic match arms, mostly for functions I guess?Joel Kronqvist
13 daysfeat: type checking for case expressionsJoel Kronqvist
14 daystest: added failing tests for pattern match typing and matches_typeJoel Kronqvist
2025-08-11refactor: Added helper matches_pat for pattern matchingJoel Kronqvist
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-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).
2025-08-01Added boilerplate for Type, TypeError and type_checkJoel Kronqvist
(small commit, had to sync between desktop and laptop)