-
-
Save oakes/dbc902e8fb077d6430fa0909cf4d7272 to your computer and use it in GitHub Desktop.
expound error
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(require '[clojure.spec.alpha :as s] | |
'[expound.alpha :as expound]) | |
(def instruments #{:piano :guitar :banjo}) | |
(def octave-operators #{\+ \-}) | |
(def digits #{\0 \1 \2 \3 \4 \5 \6 \7 \8 \9}) | |
(def notes #{\c \d \e \f \g \a \b}) | |
(def accidentals #{\# \= \_}) | |
(def accidental->keyword | |
{\# :sharp | |
\= :flat | |
\_ :natural}) | |
(s/def ::note-parts (s/cat | |
:octave-op (s/? octave-operators) | |
:octaves (s/* digits) | |
:note notes | |
:accidental (s/? accidentals))) | |
(defn parse-note [note] | |
(if-not (keyword? note) | |
:clojure.spec.alpha/invalid | |
(s/conform ::note-parts (seq (name note))))) | |
(defn note? [x] | |
(not= :clojure.spec.alpha/invalid (parse-note x))) | |
(s/def ::note note?) | |
(s/def ::rest #{:r}) | |
(s/def ::octave integer?) | |
(s/def ::length number?) | |
(s/def ::tempo integer?) | |
(s/def ::pan #(<= 0 % 100)) | |
(s/def ::quantize #(<= 0 % 100)) | |
(s/def ::transpose integer?) | |
(s/def ::volume #(<= 0 % 100)) | |
(s/def ::play? boolean?) | |
(s/def ::key-signature (s/coll-of ::note :kind set?)) | |
(s/def ::attrs (s/keys :opt-un [::note ::octave ::length ::tempo | |
::pan ::quantize ::transpose | |
::volume ::play? ::key-signature])) | |
(s/def ::chord (s/coll-of | |
(s/or | |
:note ::note | |
:rest ::rest | |
:attrs (s/merge ::attrs (s/keys :req-un [::note]))) | |
:kind set?)) | |
(s/def ::score (s/cat | |
:instrument (s/? instruments) | |
:subscores (s/* ::subscore))) | |
(s/def ::subscore (s/or | |
:note ::note | |
:rest ::rest | |
:length ::length | |
:attrs ::attrs | |
:chord ::chord | |
:concurrent-score (s/coll-of ::score :kind set?) | |
:score (s/spec ::score))) | |
(defn parse [content] | |
(let [res (s/conform ::subscore content)] | |
(if (= res :clojure.spec.alpha/invalid) | |
(throw (Exception. (expound/expound-str ::subscore content))) | |
res))) | |
(def score | |
[{:tempo 80} | |
[:guitarx {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/2 :d 1/8 :g :g :a :b :g :b 1/2 :a] | |
[:banjo {:octave 3} 1/8 :g :g :a :b 1/2 :g] | |
[:guitar {:octave 2} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:banjo {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:guitar {:octave 2} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:banjo {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:guitar {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:banjo {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:guitar {:octave 4} | |
1/16 #{:d :-b :-g} #{:d :-b :-g} | |
1/8 #{:d :-b :-g} #{:e :c :-g} #{:d :-b :-g}] | |
[:banjo {:octave 4} | |
1/16 #{:d :-b :-g} #{:d :-b :-g} | |
1/8 #{:d :-b :-g} #{:e :c :-g} #{:d :-b :-g}] | |
[:guitar {:octave 4} | |
1/16 #{:d :-b :-g} #{:d :-b :-g} | |
1/8 #{:d :-b :-g} #{:e :c :-g} #{:d :-b :-g}] | |
[:banjo {:octave 4} | |
1/16 #{:d :-b :-g} #{:d :-b :-g} | |
1/8 #{:d :-b :-g} #{:e :c :-g} #{:d :-b :-g}] | |
[:guitar {:octave 2} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
{:tempo 120} | |
#{[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/16 :r :r 1/8 :g :r :d :r :g :g :d]} | |
#{[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/16 :r :r 1/8 :g :r :d :r :g :g :d]} | |
#{[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/4 :g 1/8 :a :b 1/4 :g 1/8 :a :d]} | |
#{[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/4 :g 1/8 :a :b 1/4 :g 1/8 #{:f :-a} :b 1/4 :c]}]) | |
(parse score) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;; run `clj core.clj` to see the error | |
{:deps {expound {:mvn/version "0.7.0"}}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Exception in thread "main" java.lang.Exception: -- Syntax error ------------------- | |
[... | |
[:guitarx | |
^^^^^^^^ | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
has extra input | |
-- Relevant specs ------- | |
:user/score: | |
(clojure.spec.alpha/cat | |
:instrument | |
(clojure.spec.alpha/? user/instruments) | |
:subscores | |
(clojure.spec.alpha/* :user/subscore)) | |
:user/subscore: | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:length | |
:user/length | |
:attrs | |
:user/attrs | |
:chord | |
:user/chord | |
:concurrent-score | |
(clojure.spec.alpha/coll-of :user/score :kind clojure.core/set?) | |
:score | |
(clojure.spec.alpha/spec :user/score)) | |
------------------------- | |
Detected 1 error | |
, compiling:(/mnt/c/Users/sekao/Documents/expound-regression/parse.clj:118:1) | |
at clojure.lang.Compiler.load(Compiler.java:7526) | |
at clojure.lang.Compiler.loadFile(Compiler.java:7452) | |
at clojure.main$load_script.invokeStatic(main.clj:278) | |
at clojure.main$script_opt.invokeStatic(main.clj:338) | |
at clojure.main$script_opt.invoke(main.clj:333) | |
at clojure.main$main.invokeStatic(main.clj:424) | |
at clojure.main$main.doInvoke(main.clj:387) | |
at clojure.lang.RestFn.applyTo(RestFn.java:137) | |
at clojure.lang.Var.applyTo(Var.java:702) | |
at clojure.main.main(main.java:37) | |
Caused by: java.lang.Exception: -- Syntax error ------------------- | |
[... | |
[:guitarx | |
^^^^^^^^ | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
has extra input | |
-- Relevant specs ------- | |
:user/score: | |
(clojure.spec.alpha/cat | |
:instrument | |
(clojure.spec.alpha/? user/instruments) | |
:subscores | |
(clojure.spec.alpha/* :user/subscore)) | |
:user/subscore: | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:length | |
:user/length | |
:attrs | |
:user/attrs | |
:chord | |
:user/chord | |
:concurrent-score | |
(clojure.spec.alpha/coll-of :user/score :kind clojure.core/set?) | |
:score | |
(clojure.spec.alpha/spec :user/score)) | |
------------------------- | |
Detected 1 error | |
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) | |
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) | |
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) | |
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) | |
at clojure.lang.Reflector.invokeConstructor(Reflector.java:180) | |
at user$parse.invokeStatic(parse.clj:72) | |
at user$parse.invoke(parse.clj:69) | |
at user$eval868.invokeStatic(parse.clj:118) | |
at user$eval868.invoke(parse.clj:118) | |
at clojure.lang.Compiler.eval(Compiler.java:7062) | |
at clojure.lang.Compiler.load(Compiler.java:7514) | |
... 9 more |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Exception in thread "main" java.lang.Exception: -- Spec failed -------------------- | |
[{:tempo 80} | |
[:guitarx {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/2 :d 1/8 :g :g :a :b :g :b 1/2 :a] | |
[:banjo {:octave 3} 1/8 :g :g :a :b 1/2 :g] | |
[:guitar {:octave 2} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:banjo {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:guitar {:octave 2} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:banjo {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:guitar {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:banjo {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:guitar | |
{:octave 4} | |
1/16 | |
#{:-g :-b :d} | |
#{:-g :-b :d} | |
1/8 | |
#{:-g :-b :d} | |
#{:-g :e :c} | |
#{:-g :-b :d}] | |
[:banjo | |
{:octave 4} | |
1/16 | |
#{:-g :-b :d} | |
#{:-g :-b :d} | |
1/8 | |
#{:-g :-b :d} | |
#{:-g :e :c} | |
#{:-g :-b :d}] | |
[:guitar | |
{:octave 4} | |
1/16 | |
#{:-g :-b :d} | |
#{:-g :-b :d} | |
1/8 | |
#{:-g :-b :d} | |
#{:-g :e :c} | |
#{:-g :-b :d}] | |
[:banjo | |
{:octave 4} | |
1/16 | |
#{:-g :-b :d} | |
#{:-g :-b :d} | |
1/8 | |
#{:-g :-b :d} | |
#{:-g :e :c} | |
#{:-g :-b :d}] | |
[:guitar {:octave 2} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
{:tempo 120} | |
#{[:guitar {:octave 3} 1/16 :r :r 1/8 :g :r :d :r :g :g :d] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a]} | |
#{[:guitar {:octave 3} 1/16 :r :r 1/8 :g :r :d :r :g :g :d] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a]} | |
#{[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/4 :g 1/8 :a :b 1/4 :g 1/8 :a :d]} | |
#{[:guitar | |
{:octave 3} | |
1/4 | |
:g | |
1/8 | |
:a | |
:b | |
1/4 | |
:g | |
1/8 | |
#{:f :-a} | |
:b | |
1/4 | |
:c] [:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a]}] | |
should satisfy | |
note? | |
or | |
number? | |
or | |
map? | |
or | |
set? | |
or | |
should be: :r | |
-- Relevant specs ------- | |
:user/score: | |
(clojure.spec.alpha/cat | |
:instrument | |
(clojure.spec.alpha/? user/instruments) | |
:subscores | |
(clojure.spec.alpha/* :user/subscore)) | |
:user/chord: | |
(clojure.spec.alpha/coll-of | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:attrs | |
(clojure.spec.alpha/merge | |
:user/attrs | |
(clojure.spec.alpha/keys :req-un [:user/note]))) | |
:kind | |
clojure.core/set?) | |
:user/attrs: | |
(clojure.spec.alpha/keys | |
:opt-un | |
[:user/note | |
:user/octave | |
:user/length | |
:user/tempo | |
:user/pan | |
:user/quantize | |
:user/transpose | |
:user/volume | |
:user/play? | |
:user/key-signature]) | |
:user/length: | |
clojure.core/number? | |
:user/rest: | |
#{:r} | |
:user/note: | |
user/note? | |
:user/subscore: | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:length | |
:user/length | |
:attrs | |
:user/attrs | |
:chord | |
:user/chord | |
:concurrent-score | |
(clojure.spec.alpha/coll-of :user/score :kind clojure.core/set?) | |
:score | |
(clojure.spec.alpha/spec :user/score)) | |
-- Spec failed -------------------- | |
[... | |
[:guitarx {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
should satisfy | |
note? | |
or | |
number? | |
or | |
map? | |
or | |
set? | |
or | |
should be: :r | |
-- Relevant specs ------- | |
:user/score: | |
(clojure.spec.alpha/cat | |
:instrument | |
(clojure.spec.alpha/? user/instruments) | |
:subscores | |
(clojure.spec.alpha/* :user/subscore)) | |
:user/chord: | |
(clojure.spec.alpha/coll-of | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:attrs | |
(clojure.spec.alpha/merge | |
:user/attrs | |
(clojure.spec.alpha/keys :req-un [:user/note]))) | |
:kind | |
clojure.core/set?) | |
:user/attrs: | |
(clojure.spec.alpha/keys | |
:opt-un | |
[:user/note | |
:user/octave | |
:user/length | |
:user/tempo | |
:user/pan | |
:user/quantize | |
:user/transpose | |
:user/volume | |
:user/play? | |
:user/key-signature]) | |
:user/length: | |
clojure.core/number? | |
:user/rest: | |
#{:r} | |
:user/note: | |
user/note? | |
:user/subscore: | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:length | |
:user/length | |
:attrs | |
:user/attrs | |
:chord | |
:user/chord | |
:concurrent-score | |
(clojure.spec.alpha/coll-of :user/score :kind clojure.core/set?) | |
:score | |
(clojure.spec.alpha/spec :user/score)) | |
-- Syntax error ------------------- | |
[... | |
[:guitarx | |
^^^^^^^^ | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
has extra input | |
-- Relevant specs ------- | |
:user/score: | |
(clojure.spec.alpha/cat | |
:instrument | |
(clojure.spec.alpha/? user/instruments) | |
:subscores | |
(clojure.spec.alpha/* :user/subscore)) | |
:user/chord: | |
(clojure.spec.alpha/coll-of | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:attrs | |
(clojure.spec.alpha/merge | |
:user/attrs | |
(clojure.spec.alpha/keys :req-un [:user/note]))) | |
:kind | |
clojure.core/set?) | |
:user/attrs: | |
(clojure.spec.alpha/keys | |
:opt-un | |
[:user/note | |
:user/octave | |
:user/length | |
:user/tempo | |
:user/pan | |
:user/quantize | |
:user/transpose | |
:user/volume | |
:user/play? | |
:user/key-signature]) | |
:user/length: | |
clojure.core/number? | |
:user/rest: | |
#{:r} | |
:user/note: | |
user/note? | |
:user/subscore: | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:length | |
:user/length | |
:attrs | |
:user/attrs | |
:chord | |
:user/chord | |
:concurrent-score | |
(clojure.spec.alpha/coll-of :user/score :kind clojure.core/set?) | |
:score | |
(clojure.spec.alpha/spec :user/score)) | |
------------------------- | |
Detected 3 errors | |
, compiling:(/mnt/c/Users/sekao/Documents/expound-regression/parse.clj:118:1) | |
at clojure.lang.Compiler.load(Compiler.java:7526) | |
at clojure.lang.Compiler.loadFile(Compiler.java:7452) | |
at clojure.main$load_script.invokeStatic(main.clj:278) | |
at clojure.main$script_opt.invokeStatic(main.clj:338) | |
at clojure.main$script_opt.invoke(main.clj:333) | |
at clojure.main$main.invokeStatic(main.clj:424) | |
at clojure.main$main.doInvoke(main.clj:387) | |
at clojure.lang.RestFn.applyTo(RestFn.java:137) | |
at clojure.lang.Var.applyTo(Var.java:702) | |
at clojure.main.main(main.java:37) | |
Caused by: java.lang.Exception: -- Spec failed -------------------- | |
[{:tempo 80} | |
[:guitarx {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/2 :d 1/8 :g :g :a :b :g :b 1/2 :a] | |
[:banjo {:octave 3} 1/8 :g :g :a :b 1/2 :g] | |
[:guitar {:octave 2} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:banjo {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:guitar {:octave 2} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:banjo {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:guitar {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:banjo {:octave 3} 1/16 :g :g 1/8 :g :a :b :+c :+d :+c 1/2 :b] | |
[:guitar | |
{:octave 4} | |
1/16 | |
#{:-g :-b :d} | |
#{:-g :-b :d} | |
1/8 | |
#{:-g :-b :d} | |
#{:-g :e :c} | |
#{:-g :-b :d}] | |
[:banjo | |
{:octave 4} | |
1/16 | |
#{:-g :-b :d} | |
#{:-g :-b :d} | |
1/8 | |
#{:-g :-b :d} | |
#{:-g :e :c} | |
#{:-g :-b :d}] | |
[:guitar | |
{:octave 4} | |
1/16 | |
#{:-g :-b :d} | |
#{:-g :-b :d} | |
1/8 | |
#{:-g :-b :d} | |
#{:-g :e :c} | |
#{:-g :-b :d}] | |
[:banjo | |
{:octave 4} | |
1/16 | |
#{:-g :-b :d} | |
#{:-g :-b :d} | |
1/8 | |
#{:-g :-b :d} | |
#{:-g :e :c} | |
#{:-g :-b :d}] | |
[:guitar {:octave 2} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
{:tempo 120} | |
#{[:guitar {:octave 3} 1/16 :r :r 1/8 :g :r :d :r :g :g :d] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a]} | |
#{[:guitar {:octave 3} 1/16 :r :r 1/8 :g :r :d :r :g :g :d] | |
[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a]} | |
#{[:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
[:guitar {:octave 3} 1/4 :g 1/8 :a :b 1/4 :g 1/8 :a :d]} | |
#{[:guitar | |
{:octave 3} | |
1/4 | |
:g | |
1/8 | |
:a | |
:b | |
1/4 | |
:g | |
1/8 | |
#{:f :-a} | |
:b | |
1/4 | |
:c] [:banjo {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a]}] | |
should satisfy | |
note? | |
or | |
number? | |
or | |
map? | |
or | |
set? | |
or | |
should be: :r | |
-- Relevant specs ------- | |
:user/score: | |
(clojure.spec.alpha/cat | |
:instrument | |
(clojure.spec.alpha/? user/instruments) | |
:subscores | |
(clojure.spec.alpha/* :user/subscore)) | |
:user/chord: | |
(clojure.spec.alpha/coll-of | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:attrs | |
(clojure.spec.alpha/merge | |
:user/attrs | |
(clojure.spec.alpha/keys :req-un [:user/note]))) | |
:kind | |
clojure.core/set?) | |
:user/attrs: | |
(clojure.spec.alpha/keys | |
:opt-un | |
[:user/note | |
:user/octave | |
:user/length | |
:user/tempo | |
:user/pan | |
:user/quantize | |
:user/transpose | |
:user/volume | |
:user/play? | |
:user/key-signature]) | |
:user/length: | |
clojure.core/number? | |
:user/rest: | |
#{:r} | |
:user/note: | |
user/note? | |
:user/subscore: | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:length | |
:user/length | |
:attrs | |
:user/attrs | |
:chord | |
:user/chord | |
:concurrent-score | |
(clojure.spec.alpha/coll-of :user/score :kind clojure.core/set?) | |
:score | |
(clojure.spec.alpha/spec :user/score)) | |
-- Spec failed -------------------- | |
[... | |
[:guitarx {:octave 3} 1/16 :b :+c 1/8 :+d :b :+c :a :b :g :a] | |
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
should satisfy | |
note? | |
or | |
number? | |
or | |
map? | |
or | |
set? | |
or | |
should be: :r | |
-- Relevant specs ------- | |
:user/score: | |
(clojure.spec.alpha/cat | |
:instrument | |
(clojure.spec.alpha/? user/instruments) | |
:subscores | |
(clojure.spec.alpha/* :user/subscore)) | |
:user/chord: | |
(clojure.spec.alpha/coll-of | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:attrs | |
(clojure.spec.alpha/merge | |
:user/attrs | |
(clojure.spec.alpha/keys :req-un [:user/note]))) | |
:kind | |
clojure.core/set?) | |
:user/attrs: | |
(clojure.spec.alpha/keys | |
:opt-un | |
[:user/note | |
:user/octave | |
:user/length | |
:user/tempo | |
:user/pan | |
:user/quantize | |
:user/transpose | |
:user/volume | |
:user/play? | |
:user/key-signature]) | |
:user/length: | |
clojure.core/number? | |
:user/rest: | |
#{:r} | |
:user/note: | |
user/note? | |
:user/subscore: | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:length | |
:user/length | |
:attrs | |
:user/attrs | |
:chord | |
:user/chord | |
:concurrent-score | |
(clojure.spec.alpha/coll-of :user/score :kind clojure.core/set?) | |
:score | |
(clojure.spec.alpha/spec :user/score)) | |
-- Syntax error ------------------- | |
[... | |
[:guitarx | |
^^^^^^^^ | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
... | |
...] | |
has extra input | |
-- Relevant specs ------- | |
:user/score: | |
(clojure.spec.alpha/cat | |
:instrument | |
(clojure.spec.alpha/? user/instruments) | |
:subscores | |
(clojure.spec.alpha/* :user/subscore)) | |
:user/chord: | |
(clojure.spec.alpha/coll-of | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:attrs | |
(clojure.spec.alpha/merge | |
:user/attrs | |
(clojure.spec.alpha/keys :req-un [:user/note]))) | |
:kind | |
clojure.core/set?) | |
:user/attrs: | |
(clojure.spec.alpha/keys | |
:opt-un | |
[:user/note | |
:user/octave | |
:user/length | |
:user/tempo | |
:user/pan | |
:user/quantize | |
:user/transpose | |
:user/volume | |
:user/play? | |
:user/key-signature]) | |
:user/length: | |
clojure.core/number? | |
:user/rest: | |
#{:r} | |
:user/note: | |
user/note? | |
:user/subscore: | |
(clojure.spec.alpha/or | |
:note | |
:user/note | |
:rest | |
:user/rest | |
:length | |
:user/length | |
:attrs | |
:user/attrs | |
:chord | |
:user/chord | |
:concurrent-score | |
(clojure.spec.alpha/coll-of :user/score :kind clojure.core/set?) | |
:score | |
(clojure.spec.alpha/spec :user/score)) | |
------------------------- | |
Detected 3 errors | |
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) | |
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) | |
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) | |
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) | |
at clojure.lang.Reflector.invokeConstructor(Reflector.java:180) | |
at user$parse.invokeStatic(parse.clj:72) | |
at user$parse.invoke(parse.clj:69) | |
at user$eval959.invokeStatic(parse.clj:118) | |
at user$eval959.invoke(parse.clj:118) | |
at clojure.lang.Compiler.eval(Compiler.java:7062) | |
at clojure.lang.Compiler.load(Compiler.java:7514) | |
... 9 more |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment