ipso
ipso copied to clipboard
A functional scripting language.
Depends on #170. --- ```ipso-repl > 1 + 1 2 ``` ```ipso-repl > if 2 == 3 . then "yes" . else "no" "no" ``` Write a program that can:...
Variants currently use the syntax `< C_0 : T_0 | C_1 : T_1 | ... | C_n : T_n >`. This syntax is a little verbose for constructors that take...
Currently all builtin types (e.g. String, Int) have their own constructor in the `Type` enum. I think these constructors should be removed, in favour of defining the builtin types in...
Currently only 'sibling' modules can be imported, i.e. `import a`. I might want to allow importing 'child' modules, i.e. `import a.b`. I haven't yet decided if I want this feature....
Currently this is valid: ``` main = let x = 1 in ... ``` The indents for each token are treated as spaces, so the let expression recognised. I might...
When it comes to building a standard library, I'll probably need some sort of C FFI. At the very least, I need to be able to use Linux system calls....
## Example ``` $ cat test.ipso test : Array a -> Bool test items = case array.find (\_ -> false) of None () -> false Some _ -> true $...
Not blocking, because I can use ``` case x of "" -> y _ -> z ```
## Problem 1 The type checker expects a closed variant when an open one will do. `test.ipso`: ``` test : (| Ok : (| Ok : String, r1 |), r2...