clojure
Coincidencia de patrones con core.match
Buscar..
Observaciones
La biblioteca core.match
implementa un algoritmo de compilación de coincidencia de patrones que utiliza la noción de "necesidad" de la coincidencia de patrones diferida.
Literales a juego
(let [x true
y true
z true]
(match [x y z]
[_ false true] 1
[false true _ ] 2
[_ _ false] 3
[_ _ true] 4))
;=> 4
Emparejando un vector
(let [v [1 2 3]]
(match [v]
[[1 1 1]] :a0
[[1 _ 1]] :a1
[[1 2 _]] :a2)) ;; _ is used for wildcard matching
;=> :a2
Coincidencia con un mapa
(let [x {:a 1 :b 1}]
(match [x]
[{:a _ :b 2}] :a0
[{:a 1 :b _}] :a1
[{:x 3 :y _ :z 4}] :a2))
;=> :a1
Coincidiendo con un símbolo literal
(match [['asymbol]]
[['asymbol]] :success)
;=> :success
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow