clojure
Pattern Matching con core.match
Ricerca…
Osservazioni
La libreria core.match
implementa un algoritmo di compilazione di corrispondenze di pattern che utilizza la nozione di "necessità" dalla corrispondenza di pattern lazy.
Letterali corrispondenti
(let [x true
y true
z true]
(match [x y z]
[_ false true] 1
[false true _ ] 2
[_ _ false] 3
[_ _ true] 4))
;=> 4
Abbinare un vettore
(let [v [1 2 3]]
(match [v]
[[1 1 1]] :a0
[[1 _ 1]] :a1
[[1 2 _]] :a2)) ;; _ is used for wildcard matching
;=> :a2
Abbinare una mappa
(let [x {:a 1 :b 1}]
(match [x]
[{:a _ :b 2}] :a0
[{:a 1 :b _}] :a1
[{:x 3 :y _ :z 4}] :a2))
;=> :a1
Abbinare un simbolo letterale
(match [['asymbol]]
[['asymbol]] :success)
;=> :success
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow