This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-12-29
Channels
- # announcements (2)
- # babashka (18)
- # beginners (42)
- # calva (56)
- # chlorine-clover (35)
- # clara (9)
- # clj-http (1)
- # clj-kondo (19)
- # cljs-dev (8)
- # clojure (14)
- # clojure-europe (23)
- # clojure-france (7)
- # clojure-norway (6)
- # clojure-uk (3)
- # clojurescript (37)
- # community-development (3)
- # cursive (29)
- # datomic (3)
- # emacs (10)
- # events (2)
- # fulcro (77)
- # hyperfiddle (2)
- # introduce-yourself (4)
- # joker (1)
- # lsp (40)
- # malli (52)
- # meander (7)
- # missionary (16)
- # off-topic (3)
- # pedestal (1)
- # re-frame (5)
- # reitit (38)
- # releases (1)
- # shadow-cljs (4)
- # tools-build (18)
- # tools-deps (1)
- # xtdb (8)
Hey. I have this working code:
(m/find [{:fruit "apples"
:id 1000}]
(m/scan (m/and
{:fruit "apples"
:id ?id1
:identifier ?id2})
(m/and
{:fruit "oarnges"
:id ?id1
:identifier ?id2})) (or ?id1 ?id2)
_ :none)
;; 1000
But I don't want to repeat myself as much so I'm trying to use defsyntax:
(m/defsyntax dry
[fruit id]
;; code here
)
(m/find [{:fruit "apples"
:id 1000}]
(m/scan (dry "apples" ?id)) ?id
(m/scan (dry "oarnges" ?id)) ?id
_ :none)
Interestingly, this code works...
(m/find [{:fruit "apples"
:id 1000}]
(m/scan (m/and
{:fruit "apples"
:id ?id1
:identifier ?id2}
(m/let [?id (or ?id1 ?id2)]))) ?id
_ :none)
;; 1000
But I don't know how to get anything to work in a defsyntax. Latest attempt doesn't compile:
(m/defsyntax dry
[fruit id]
`(m/and
{:fruit ~fruit
:id ?id1
:identifier ?id2}
(m/let [~id (or ?id1 ?id2)])))
Thanks!Correction! the defsyntax compiles but it has a runtime exception
1. Caused by java.lang.RuntimeException
No such var: auto-red.api/?id1
Util.java: 221 clojure.lang.Util/runtimeException
Compiler.java: 7392 clojure.lang.Compiler/resolveIn
Compiler.java: 7362 clojure.lang.Compiler/resolve
Compiler.java: 7323 clojure.lang.Compiler/analyzeSymbol
Compiler.java: 6772 clojure.lang.Compiler/analyze
Compiler.java: 38 clojure.lang.Compiler/access$300
Compiler.java: 6388 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 38 clojure.lang.Compiler/access$300
Compiler.java: 6388 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 9051 clojure.lang.Compiler$CaseExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 6440 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 9051 clojure.lang.Compiler$CaseExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 6440 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 9051 clojure.lang.Compiler$CaseExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 6440 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 6440 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 2833 clojure.lang.Compiler$IfExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 38 clojure.lang.Compiler/access$300
Compiler.java: 6388 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 2833 clojure.lang.Compiler$IfExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 6440 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 5471 clojure.lang.Compiler$FnMethod/parse
Compiler.java: 4033 clojure.lang.Compiler$FnExpr/parse
Compiler.java: 7109 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 38 clojure.lang.Compiler/access$300
Compiler.java: 6248 clojure.lang.Compiler$LetFnExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 6440 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 5471 clojure.lang.Compiler$FnMethod/parse
Compiler.java: 4033 clojure.lang.Compiler$FnExpr/parse
Compiler.java: 7109 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 38 clojure.lang.Compiler/access$300
Compiler.java: 6248 clojure.lang.Compiler$LetFnExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 6440 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7099 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 38 clojure.lang.Compiler/access$300
Compiler.java: 6388 clojure.lang.Compiler$LetExpr$Parser/parse
Compiler.java: 7111 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 6749 clojure.lang.Compiler/analyze
Compiler.java: 6124 clojure.lang.Compiler$BodyExpr$Parser/parse
Compiler.java: 5471 clojure.lang.Compiler$FnMethod/parse
Compiler.java: 4033 clojure.lang.Compiler$FnExpr/parse
Compiler.java: 7109 clojure.lang.Compiler/analyzeSeq
Compiler.java: 6793 clojure.lang.Compiler/analyze
Compiler.java: 7178 clojure.lang.Compiler/eval
Compiler.java: 7136 clojure.lang.Compiler/eval
core.clj: 3202 clojure.core/eval
core.clj: 3198 clojure.core/eval
interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn/fn
AFn.java: 152 clojure.lang.AFn/applyToHelper
AFn.java: 144 clojure.lang.AFn/applyTo
core.clj: 667 clojure.core/apply
core.clj: 1977 clojure.core/with-bindings*
core.clj: 1977 clojure.core/with-bindings*
RestFn.java: 425 clojure.lang.RestFn/invoke
interruptible_eval.clj: 87 nrepl.middleware.interruptible-eval/evaluate/fn
main.clj: 437 clojure.main/repl/read-eval-print/fn
main.clj: 437 clojure.main/repl/read-eval-print
main.clj: 458 clojure.main/repl/fn
main.clj: 458 clojure.main/repl
main.clj: 368 clojure.main/repl
RestFn.java: 1523 clojure.lang.RestFn/invoke
interruptible_eval.clj: 84 nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 56 nrepl.middleware.interruptible-eval/evaluate
interruptible_eval.clj: 152 nrepl.middleware.interruptible-eval/interruptible-eval/fn/fn
AFn.java: 22 clojure.lang.AFn/run
session.clj: 202 nrepl.middleware.session/session-exec/main-loop/fn
session.clj: 201 nrepl.middleware.session/session-exec/main-loop
AFn.java: 22 clojure.lang.AFn/run
Thread.java: 831 java.lang.Thread/run
Oh.
(m/defsyntax dry
[fruit id]
`(m/and
{:fruit ~fruit
(m/or :id :identifier) ~id}))
(m/find [{:fruit "apples"
:id 1000}]
(m/scan (dry "apples" ?id)) ?id
(m/scan (dry "oarnges" ?id)) ?id
_ :none)