Less optimized, more extendable core.match.
ssisksl77/pattern-match doesn't have guards but :where
(require '[ssisksl77.pattern-match :as pm])
(match [1 2]
[a b] :where (do (println a b "왓숑...") false)
"HI"
[c d] :where (do (println c d "여디도 왔엉") false)
"GOOD"
[e f] :where (do (println e f "여기 마지막") true)
"MOOYAHO"
:else
"NEVER")
;; => "MOOYAHO"(require '[ssisksl77.pattern-match :as pm')
(match [1 2]
[a b] (when (= a 1) (backtrack!))
[c e] "HERE"
:else "ELSE")
;; => "HERE"Reason why core.match can't support this is, even though implementation is absolutely same, optimization.
core.match will remove unnecessary patterns ([c e], :else).
but they support guard which is not enough.
Will be Soon
$ clojure -T:build test
Run the project's CI pipeline and build a JAR (this will fail until you edit the tests to pass):
$ clojure -T:build ci
This will produce an updated pom.xml file with synchronized dependencies inside the META-INF
directory inside target/classes and the JAR in target. You can update the version (and SCM tag)
information in generated pom.xml by updating build.clj.
Install it locally (requires the ci task be run first):
$ clojure -T:build install
Deploy it to Clojars -- needs CLOJARS_USERNAME and CLOJARS_PASSWORD environment
variables (requires the ci task be run first):
$ clojure -T:build deploy
Your library will be deployed to com.github.ssisksl77/pattern-match on clojars.org by default.
Copyright 2013 Mir Ikram Uddin
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.