-
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Less ambiguous syntax - Better parser (Chumsky only does tokenization now) - Tidy(|ier) error handling - Facade for simplified embedding - Dynamic action dispatch - Many STL additions
- Loading branch information
Showing
126 changed files
with
4,284 additions
and
1,817 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,49 @@ | ||
# IO | ||
This document is a wishlist, its items aren't ordered in any way other than inline notes about dependency relations | ||
|
||
All IO is event-based via callbacks. | ||
Driven streams such as stdin expose single-fire events for the results of functions such as "read until terminator" or "read N bytes". | ||
Network IO exposes repeated events such as "connect", "message", etc. | ||
# Language | ||
|
||
## Operator declarations | ||
A dedicated (exportable) line type for declaring operators. Still just names, only you can write them next to other things without whitespace | ||
|
||
- ops may not contain c-ident-safe characters | ||
- clusters of operator characters are broken up with a greedy algorithm | ||
|
||
## Typeclasses | ||
Elixir-style protocols probably, only with n-ary dispatch which I saw in SICP-js | ||
|
||
# Rules | ||
|
||
## Placeholder constraints | ||
Simultaneously match a pattern to a subexpression and give it a name to copy it over | ||
|
||
- Copy unique 1->1 names over by default to preserve their location info | ||
|
||
# STL | ||
|
||
## Command short-circuiting | ||
Functions for each command type which destructure it and pass it to an Orchid callback | ||
|
||
## Runtime error handling | ||
result? multipath cps utils? Not sure yet. | ||
|
||
## Pattern matching | ||
This was the main trick in Orchid, still want to do it, still need to polish the language first | ||
|
||
## Macro error handling | ||
Error tokens with rules to lift them out. Kinda depends on preservation of location info in rules to be really useful | ||
|
||
# Systems | ||
|
||
## Async | ||
Join allows to run code when a tuple of pending events all resolve on the event poller | ||
|
||
## New: FS | ||
Exposes tree operations to Orchid | ||
Uses existing IO to open and read files | ||
Uses the event bus to read directories in batches without blocking other Orchid code | ||
|
||
## New: Network | ||
Event-driven I/O with single-fire events and resubscription to relay backpressure to the OS. Initially TCP | ||
|
||
## New: Marshall | ||
Serialization of Orchid data, including code, given customizable sets of serializable foreign items. Alternatively, code reflection so that all this can go in the STL |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
import std::io::print | ||
|
||
main := print "Hello, world!\n" "goodbye" | ||
const main := ( | ||
println "Hello, world!" | ||
"success" | ||
) | ||
-- main := "Hello, World!\n" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,13 @@ | ||
import std::(proc::*, io::print, to_string) | ||
import std::(proc::*, to_string) | ||
|
||
export main := do{ | ||
export const main := do{ | ||
let foo = list::new[1, 2, 3, 4, 5, 6]; | ||
let bar = list::map foo n => n * 2; | ||
let sum = bar | ||
|> list::skip 2 | ||
|> list::take 3 | ||
|> list::reduce (\a.\b. a + b) | ||
|> option::unwrap; | ||
cps print $ to_string sum ++ "\n"; | ||
cps println $ to_string sum; | ||
0 | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.