Hi, I am getting familiar with Clojure's core.match and
simply starting with something simple and familar (some Scala match 
expressions)
and translating that to core.match variant:
Check out this function which checks whether sequence starts with another:

def startsWith[A](l: List[A], prefix: List[A]): Boolean = (l,prefix) match {
    case (_,Nil) => true
    case (Cons(h,t),Cons(h2,t2)) if h == h2 => startsWith(t, t2)
    case _ => false
  }

and my core.match attempt which works but I am not really sure
about it as wiki page is not yet exhaustive enough:

(defn starts-with [l prefix]
  (match [l prefix]
*    [_ ([] :seq :<< empty?)] true*
    [([h & t] :seq) ([h2 & t2] :seq)] (if (= h h2)
                                        (starts-with t t2)
                                        false)
    :else false))

second and third one are nothing special, former is just match continuation.
First one is of particular interest for me...
Matching to Nil sequence in clojure is not appropriate as empty sequence 
simply is not nil
whereas it is handled differently in scala.

What I wanted here is to check with empty? function if second argument 
(prefix)
is empty sequence... Like I said...it works but I am not sure if there is 
better 
way to achieve function application to :seq pattern. I don't need to 
destructure or bind
that to any particular var just to check if it is empty.

Any tip, suggestion or critic is welcome and appreciated.

Thanks in advance.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to