Tim Dévé
Tim Dévé
First of all this is awesome, I've been wanting this in the language for a while. > ```clojure > (sig with-foo [(protocol Stringable Fooable a) ...] (Fn [a] String)) >...
Two solutions come to mind: the simplest is to disallow taking ownership of env values in lambdas. Alternatively we could remove the value from the env when it's consumed and...
Ok so what you are saying is that declaring my types at the top level should actually be equivalent to the previous behaviour?
The following code works fine so it seems related to the scope of the `let`: ```clojure (deftype Sum One Two) (defn main [] (do (match-ref &(Sum.One) Sum.One () Sum.Two ())...
This version has slightly more readable error message: ```clojure (deftype Sum One Two) (defn main [] (let-do [sum-two (Sum.Two)] (let [sum-one (Sum.One)] (match-ref &sum-one Sum.One () Sum.Two ())) (match-ref &sum-two...
I really like `` in term of readability but I understand that might make parsing harder. I feel in that case it's better to optimise for readability than "type-ability" given...
Not that I have any better name to propose but isn't it a bit weird to call something `Flat` if we don't have `Box`? Is `mcpy` too confusing?
`shallow-copy`?
Would the multiple declarations make it easier to implements defaults by referring to itself? ```clojure (defnmulti get [url params] (curl url "GET" params)) (defnmulti get [url] (get url @{})) ```
This PR is closer to overloading to me.