Begin work on low level IR
Very much unfinished. Full of not yet implemented stuff.
Add class Select
Pass some params implicitly when doing selections
Update stackage release & use default-extensions in cabal file
Also, fix some minor breakages caused by ghc update, fix the
literate.org example, fix some new warnings, and get rid of the need
for a bunch of Data implementations by using basic parsing functions
remove no longer applicable TODOs
std: use io/wrap instead of io/pure for display-inline
I.e., don't execute the action untio the IO is run
Add let & let1 forms to do macro
Add test for latest bug fix
Fix bug when getting free vars of non-rec Let in Monomorphic
Was using fvLet for both recursive and nonrecursive bindings, but for
nonrecursive let:s, the LHS should not be subtracted from the RHS FV set.
std-rs: use native-tls inst of rustls. Better for gemini
Rustls is too strict for non-web, self signed, TOFU use, so use rustls
instead. Right now, TLS does no verification, but we'll fix this.
std-rs: add tcp connection, tls connection w rustls
Basically works, but rustls won't last. It together with webpki is way
to restrictive in what certificates validate, so it's not very usable
for non-web, self-signed scenarios like gemini.
Rename foreign-core to std-rs
Less desugaring in Parse (do in Infer instead), more concrete Parsed.
Step towards improving error messages. Among others, the function-related ones can
end up misleading due to bad SrcPos:s given to nodes generated from desugaring.
Add example list-monad to demo macro features & the do macro
Add patterns & declaration of literals in macros
Example of a do-notation-like macro using the new features:
(defmacro do (<-)
(case (do-bind ma) ma)
(case (do-bind (<- a ma) mbs ...)
(do-bind (fun (a) (do do-bind mbs ...)) ma))
(case (do-bind ma mbs ...)
(do-bind (fun (_) (do do-bind mbs ...)) ma)))
which can be used like
(<- i (list 1 2 3))
(<- j (list 1 2 3))
(if (< i j)
(list/singleton [i j])
Update carth.cabal to reflect move to sourcehut and .md README