Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (ns spectest
- (:require [clojure.spec.alpha :as s]))
- (s/def ::fixed-length (s/& (s/+ int?) #(= 2 (count %))))
- (defn variable-length?
- [{:keys [length data]}]
- (= length (count data)))
- (s/def ::variable-length (s/and (s/cat :length int?
- :data (s/* int?))
- variable-length?))
- (s/conform ::fixed-length [1 2]) ;; => [1 2]
- (s/conform ::variable-length [2 1 1]) ;; => {:length 2, :data [1 1]}
- (s/conform (s/cat :fixed ::fixed-length
- :variable ::variable-length)
- [1 2 2 1 1]) ;; => :clojure.spec.alpha/invalid
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement