@theller has checked the repo and thinks the problem must be somewhere on the meander side
Sorry I didn't get a chance to check this last night. Will today.
It's nothing urgent mate
I'm just messing around for fun
if I had to guess, it's probably this place.
Thats in a clj file.
But
src/meander/substitute/epsilon.cljc
676: (catch Exception e#
K I just pushed a patch for this but not a new release
If what is on epsilon works lemme know.
I can make a release later today.
Everyone, eventually this message will vanish but apart from bug fixes that people mention, I’m no longer working on epsilon
anymore. I’m only working on zeta
from here on out and have been in this mode for a little while.
So far, things are looking good on the zeta
branch. There is a new design at work which has, overall, lead to reduction pretty big reduction in code. There is still a lot to do and test, however.
Is zeta usable like epsilon?
Not yet
then I'll just keep my fingers crossed
A lot of progress has been made. Essentially, the whole thing has been rewritten to accommodate the things people have asked for such as explanations, being able to interpret matching/rewriting, as well as a few things I’ve wanted.
What I did was abstract the overlapping parts of compilation and interpretation such that the code which builds an interpreter for a pattern can also build a compiler for it.
The abstraction also handles returning one or many results e.g. find or search.
Also, both sides of rewriting use the same abstraction which means that both interpreters and compilers can make more aggressive optimizations.
Can I read something about the decisions and the idea behind the meander? Key words will suffice, I can google myself if I know what to look for
Partial evaluation, abstract interpretation?
meander is probably the most interesting and best thing since sliced bread
Well thanks! 🙂
Finally, the idea of a variable is somewhat different internally.
you're welcome
A variable is, essentially, I think, both a fold (reduction) and unfold (disperse).
I'm too weak for most ingenius things, but meander combines cool solutions with really simple use
This is absolutely the intention.
I’m by no means a genius. I have to look stuff up all the time. I can’t remember anything. And I certainly won’t be solving any deep mathematical problems before I die.
To a dog, all humans are magicians because they can open doors. As I read @jimmy's blog, this is how I felt
But I think programming in most of its currently formulations hinders interesting creative efforts, experimentation, and creates social problems.
LOL
And I don’t mean to besmirch modern PLs. This is just my observation/opinion.
There’s definitely a lot of different things coming together in meander. A big one is term rewriting. https://vimeo.com/155448425 Lot’s of stuff borrowed from Racket, particularly their pattern matching https://docs.racket-lang.org/reference/match.html There are a bunch of different influences that @noprompt synthesized together and made something fairly unique. But those should be some good jumping off points.
thx
usually the hardest part is synthesizing the knowledge. everyone has the same elements, but not everyone can make something unique out of it
Some of my biggest influences are • TXL https://en.wikipedia.org/wiki/TXL_(programming_language) • Maude https://en.wikipedia.org/wiki/Maude_system • Datalog • miniKanren • Regular Expression • Definite Clause Grammars https://en.wikipedia.org/wiki/Definite_clause_grammar • Operational semantics https://en.wikipedia.org/wiki/Operational_semantics
Data flow would probably be another thing to chip in here.
But that’s somewhat outside the scope.
I will definitely try to read if I can understand
I will let people know when I feel comfortable with them playing with the zeta
branch the first moment I get that feeling.
Mostly, I want to suffer through the testing and debugging so others don’t have to.
The most important thing for me on this branch is making sure the experience is smooth and performant. And when it is not I would like it to be very convenient for people to either solve their own problems or report issues with the explanation feature.
Personally, I would prefer not to roll out a Cyberpunk 2077.
I don’t want it to be a “Have they fixed the AI yet?” sort of thing. 🙂
that means zeta is supposed to be faster than epsilon?
I want to be at least as fast.
The compiler I’ve been chipping away can make very aggressive optimizations.
It already avoids duplicate logic checks, binding something more than once, etc.
Pretty soon it will generate code that ensures thats calls to functions are made exactly once.
These things add up.
as of today, meander can successfully replace datascript. pull without reverse lookup is 50 loc and is faster 10x, q is 40 loc and we have working datalog, which even looks identical. For simple queries it is slower 5x, but for longer ones it is faster ~2x.
If zeta is faster, it will be the perfect tool for the frontend
In fact, it already is, because this speed is more than enough.
Oh that is a very interesting finding. Have you had a look at #asami?
Asami is very fast. AFAIK sure it is faster than datascript and most certainly would be faster than Meander for its particular niche.
Part of the reason for that is that Asami does query planning.
But also, Paula Gearon, is an expert in the space. She’s on our team at Cisco and we use Asami heavily.
Both, however, we use indirectly on the frontend.
What does "indirectly" mean 🙂 ?
Indirectly means that, on the front end, our consumers not using directly but, rather, going through an API.
So they will send an asami query with a string which will then be parsed, etc.
If it's not a secret, what do you use on the front end? CLJS? TS? JS? If CLJS, then reagent? re-frame? fulcro?
Our consumers use TS, JS, and we’re messing with using CLJS with re-frame.
don't you suffer from map fatigue?
On our team, not especially. We work with a data model that is well defined and that gets loaded pretty quickly into asami. In some places we use meander, and in others, when nothing seems to work well, we turn to algorithms.
Ah, so you guys use asami in the backend server kinda like a graph database, cool.
IOW there’s pressure to make it go faster and she’s more than happy to accommodate us. 🙂
asami looks great, but I think it works poorly in combination with reagent and re-frame
I haven't checked, but I suspect that, it has a significant impact on buildsize
This is an idea that has been on my mind, but the language barrier doesn't seem to help me convey it
when I finish it and I think it's not a junk, I'll probably post it as one of the uses of meander
I merge 100% of patches to doc/
and examples/
🙂
: >
Merged 🙂
thx