clojure-rte issueshttps://gitlab.lre.epita.fr/jnewton/clojure-rte/-/issues2020-10-13T14:32:10+02:00https://gitlab.lre.epita.fr/jnewton/clojure-rte/-/issues/2minimize output of rte-to-dfa2020-10-13T14:32:10+02:00Jim Newtonminimize output of rte-to-dfaWe have made no attempts to minimize the DFA which is produced.
For example the image shown in [section Debugging](https://gitlab.lrde.epita.fr/jnewton/clojure-rte#debugging) is not
minimized. States 2, 4 and 5 can be combined into a si...We have made no attempts to minimize the DFA which is produced.
For example the image shown in [section Debugging](https://gitlab.lrde.epita.fr/jnewton/clojure-rte#debugging) is not
minimized. States 2, 4 and 5 can be combined into a single state, and
also states 1 and 3 can be combined. If states 1 and 3 are combined
the labels 0 -> 3 and 0 -> 1 can be unioned to the type `(not String)` which
will improve run-time performance.
```clojure
(or Long (and (not Long) (not String))) = (not String)
```https://gitlab.lre.epita.fr/jnewton/clojure-rte/-/issues/17destructuring-fn and destructuring-case do not support full lambda-list parsing2020-10-13T14:33:24+02:00Jim Newtondestructuring-fn and destructuring-case do not support full lambda-list parsingsee the [reference here](https://clojure.org/guides/destructuring).
in particular :as like in `[[a b :as all]]`see the [reference here](https://clojure.org/guides/destructuring).
in particular :as like in `[[a b :as all]]`https://gitlab.lre.epita.fr/jnewton/clojure-rte/-/issues/28support user function names and type designators2020-10-15T08:53:43+02:00Jim Newtonsupport user function names and type designators[Issue 6641](https://clojureverse.org/t/need-help-to-resolve-symbols-programmatically/6642) explains several related problems. The basic issue is that in a type designator or in an rte, the user specifies symbols, which may not be fully...[Issue 6641](https://clojureverse.org/t/need-help-to-resolve-symbols-programmatically/6642) explains several related problems. The basic issue is that in a type designator or in an rte, the user specifies symbols, which may not be fully qualified. These must get resolved somehow. The user might have designated his own predicate function for `(satisfies ...)` or his own rte tokens defined with `with-rte`.
This must somehow function independent of the users value of `*ns*`.https://gitlab.lre.epita.fr/jnewton/clojure-rte/-/issues/67failed "dnf vs cnf"2020-11-21T22:05:16+01:00Jim Newtonfailed "dnf vs cnf"```
[Or [And [Not TraitA$1],[Not TraitC$1]],[And [Not TraitA$1],[Not TraitD$1]]] did not equal Empty test 2
ScalaTestFailureLocation: genus.GenusCanonicalize at (GenusCanonicalize.scala:285)
Expected :Empty test 2
Actual :[Or [And [Not...```
[Or [And [Not TraitA$1],[Not TraitC$1]],[And [Not TraitA$1],[Not TraitD$1]]] did not equal Empty test 2
ScalaTestFailureLocation: genus.GenusCanonicalize at (GenusCanonicalize.scala:285)
Expected :Empty test 2
Actual :[Or [And [Not TraitA$1],[Not TraitC$1]],[And [Not TraitA$1],[Not TraitD$1]]]
<Click to see difference>
org.scalatest.exceptions.TestFailedException: [Or [And [Not TraitA$1],[Not TraitC$1]],[And [Not TraitA$1],[Not TraitD$1]]] did not equal Empty test 2
at org.scalatest.Assertions.newAssertionFailedException(Assertions.scala:528)
at org.scalatest.Assertions.newAssertionFailedException$(Assertions.scala:527)
at org.scalatest.FunSuite.newAssertionFailedException(FunSuite.scala:1560)
at org.scalatest.Assertions$AssertionsHelper.macroAssert(Assertions.scala:501)
at genus.GenusCanonicalize.$anonfun$new$9(GenusCanonicalize.scala:285)
at org.scalatest.OutcomeOf.outcomeOf(OutcomeOf.scala:85)
```https://gitlab.lre.epita.fr/jnewton/clojure-rte/-/issues/68remove Object as special case of class-primary-flag2020-12-10T14:28:20+01:00Jim Newtonremove Object as special case of class-primary-flagThe scala implementation of Genus handles Object differently than does Clojure Genus.
Object should be a :public class, not an :abstract class.The scala implementation of Genus handles Object differently than does Clojure Genus.
Object should be a :public class, not an :abstract class.https://gitlab.lre.epita.fr/jnewton/clojure-rte/-/issues/69implement typecase2020-12-13T13:37:20+01:00Jim Newtonimplement typecasehttps://gitlab.lre.epita.fr/jnewton/clojure-rte/-/issues/71cannot compute derivative of overlapping types2021-02-02T08:34:45+01:00Jim Newtoncannot compute derivative of overlapping types
```
ERROR in (t-rte-not-random) (rte_construct.clj:933)
Uncaught exception, not in assertion.
expected: nil
actual: clojure.lang.ExceptionInfo: cannot compute derivative of overlapping types because clojure.lang.ISeq is not a subtype ...
```
ERROR in (t-rte-not-random) (rte_construct.clj:933)
Uncaught exception, not in assertion.
expected: nil
actual: clojure.lang.ExceptionInfo: cannot compute derivative of overlapping types because clojure.lang.ISeq is not a subtype of (member (1 2 3) (1 2) (1) [])
{:error-type :derivative-undefined,
:wrt clojure.lang.ISeq,
:expr (member (1 2 3) (1 2) (1) []),
:sub-types [{:type (and clojure.lang.ISeq (member (1 2 3) (1 2) (1) []))}
{:type (and clojure.lang.ISeq (not (member (1 2 3) (1 2) (1) [])))}]}
at clojure_rte.rte_construct$derivative$fn__3067.invoke (rte_construct.clj:933)
clojure_rte.rte_construct$traverse_pattern$if_multiple_operands__2921.invoke (rte_construct.clj:501)
clojure_rte.rte_construct$traverse_pattern.invokeStatic (rte_construct.clj:516)
clojure_rte.rte_construct$traverse_pattern.invoke (rte_construct.clj:426)
clojure_rte.rte_construct$traverse_pattern.invokeStatic (rte_construct.clj:436)
clojure_rte.rte_construct$traverse_pattern.invoke (rte_construct.clj:426)
clojure_rte.rte_construct$derivative.invokeStatic (rte_construct.clj:915)
clojure_rte.rte_construct$derivative.invoke (rte_construct.clj:895)
clojure_rte.rte_construct$derivative$walk__3061$fn__3062.invoke (rte_construct.clj:901)
clojure.core$map$fn__5851.invoke (core.clj:2753)
clojure.lang.LazySeq.sval (LazySeq.java:42)
clojure.lang.LazySeq.seq (LazySeq.java:51)
clojure.lang.Cons.next (Cons.java:39)
clojure.lang.RT.next (RT.java:709)
clojure.lang.SeqIterator.hasNext (SeqIterator.java:41)
clojure.lang.Murmur3.hashOrdered (Murmur3.java:105)
clojure.lang.ASeq.hasheq (ASeq.java:86)
clojure.lang.Util.dohasheq (Util.java:177)
clojure.lang.Util.hasheq (Util.java:168)
clojure.lang.Murmur3.hashOrdered (Murmur3.java:107)
clojure.lang.ASeq.hasheq (ASeq.java:86)
clojure.lang.Util.dohasheq (Util.java:177)
```Jim NewtonJim Newton