This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-07-19
Channels
- # announcements (5)
- # beginners (36)
- # calva (2)
- # cider (26)
- # cljs-dev (2)
- # clojure (121)
- # clojure-spec (2)
- # clojure-uk (2)
- # clojurescript (12)
- # component (1)
- # conjure (6)
- # datomic (9)
- # docker (1)
- # fulcro (15)
- # lambdaisland (1)
- # malli (5)
- # meander (24)
- # off-topic (5)
- # re-frame (5)
- # reagent (3)
- # ring (3)
- # shadow-cljs (41)
- # sql (4)
- # vim (3)
- # xtdb (7)
Yeah, probably different learning styles (ex: I looked up how closures are implemented before using them) I think there's still probably utility in highlevel explanation (like the link and your description two paragraphs ago on logic/memory fvars)
for me, the disconnect is mostly in the "magical joins and constraint satisfiability" and in turn, what governs if something will be emitted multiple times or if it will be used as a constraint
I think the interpreter could be instrumental in helping someone understand one way the semantics can be implemented.
Yeah I guess that is more my point. The semantics really matter. An interpreter is definitely a decent way to learn those. But in my view the goal is to understand those semantics more than it is to have a good idea of how meander is working under the hood.
[[:single-match
(m/find {:a 1 :b 2}
(m/map-of !k !v) :work!)]
[:single-match-with-catch-all
(m/find {:a 1 :b 2}
(m/map-of !k !v) :work!
_ :error)]
[:multiple-match
(m/find {:a 1 :b 2}
(m/pred integer?) :_
(m/map-of (m/pred int?) (m/pred int?)) :_
(m/map-of !k !v) :work!)]
[:multiple-match-with-catch-all
(m/find {:a 1 :b 2}
(m/pred integer?) :_
(m/map-of (m/pred int?) (m/pred int?)) :_
(m/and ?mfn (m/map-of !k !v)) :work!
_ :error)]]
;; => [[:single-match :work!]
;; [:single-match-with-catch-all :work!]
;; [:multiple-match :work!]
;; [:multiple-match-with-catch-all :error]]
Just fyi doing wrapping the code in
` (no spaces escapes don't seem to work so I did that.) will help it format better.
[[:single-match
(m/find {:a 1 :b 2}
(m/map-of !k !v) :work!)]
[:single-match-with-catch-all
(m/find {:a 1 :b 2}
(m/map-of !k !v) :work!
_ :error)]
[:multiple-match
(m/find {:a 1 :b 2}
(m/pred integer?) :_
(m/map-of (m/pred int?) (m/pred int?)) :_
(m/map-of !k !v) :work!)]
[:multiple-match-with-catch-all
(m/find {:a 1 :b 2}
(m/pred integer?) :_
(m/map-of (m/pred int?) (m/pred int?)) :_
(m/and ?mfn (m/map-of !k !v)) :work!
_ :error)]]
;; => [[:single-match :work!]
;; [:single-match-with-catch-all :work!]
;; [:multiple-match :work!]
;; [:multiple-match-with-catch-all :error]]
Let me take a look at what is going on, there is a lot here.What version of meander are you using?
Seems like a regression to me. I had an old version open and it worked totally fine. Just tried with latest and it does have the error, which seems wrong to me.
Yeah, I'm sorry about that bug. I am going to look at it a bit and see if I can uncover the problem. In "0.0.421" it worked fine for me.
Yeah, it looks like search is finding an extra value that I don't think should be there. And if it should, it is in the wrong order. I'm guessing it has to do with some recent changes to the search stuff. I probably won't be able to fix it right now, but glad you have work around for the time being. If you have time to make a github issue that would be great, if not I will do that soon.
Glad that you are enjoying it. Always sad when people discover bugs not caught by our test suite, but that gives us another case to add. Thanks