Advertisement
Guest User

Untitled

a guest
Jun 27th, 2017
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. (ns spectest
  2. (:require [clojure.spec.alpha :as s]))
  3.  
  4. (s/def ::fixed-length (s/& (s/+ int?) #(= 2 (count %))))
  5.  
  6. (defn variable-length?
  7. [{:keys [length data]}]
  8. (= length (count data)))
  9.  
  10. (s/def ::variable-length (s/and (s/cat :length int?
  11. :data (s/* int?))
  12. variable-length?))
  13.  
  14. (s/conform ::fixed-length [1 2]) ;; => [1 2]
  15.  
  16. (s/conform ::variable-length [2 1 1]) ;; => {:length 2, :data [1 1]}
  17.  
  18. (s/conform (s/cat :fixed ::fixed-length
  19. :variable ::variable-length)
  20. [1 2 2 1 1]) ;; => :clojure.spec.alpha/invalid
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement