You want an anonymous function:

(fn [x] (= x 2))

or the equivalent shorthand form:

#(= % 2)

Sent from my iPhone

On Sep 6, 2011, at 9:35 AM, Dennis Haupt <d.haup...@googlemail.com> wrote:

> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> figured it out, i the () were a bit messed up. the working code:
> 
> (def open 0)
> (def p1 1)
> (def p2 2)
> (def emptyfield [open open open open open open open open open])
> 
> (defn indexOf [x y] (+ x (* y 3)))
> 
> (defn withmove [x,y,player,field]
>  (assoc field (indexOf x y) player))
> 
> (defn winner [field]
>  (letfn [(slashOwnedBy [player] (= [player] (distinct [(nth field 0)
> (nth field 4) (nth field 8)])))
>          (backslashOwnedBy [player] (= [player] (distinct [(nth field
> 2) (nth field 4) (nth field 6)])))
>          (rowOwnedBy [row player]
>            (let [beginIndex (indexOf 0 row)
>                  currow (subvec field beginIndex (+ 3 beginIndex))]
>              (= [player] (distinct currow))))
>          (colOwnedBy [col player]
>            (let [beginIndex (indexOf col 0)
>                  curcol (take-nth 3 (drop beginIndex field))]
>              (= [player] (distinct curcol))))
>          (winPred [player]
>            (loop [cnt 0]
>              (if (= cnt 3)
>                (or (slashOwnedBy player) (backslashOwnedBy player))
>                (or (rowOwnedBy cnt player) (colOwnedBy cnt player)
> (recur (inc cnt))))))]
>    (let [winnerIfExists (filter winPred [p1 p2])]
>      (if (empty? winnerIfExists) open (first winnerIfExists)))))
> 
> 
> (let [moves [[2 0 p1] [1 1 p1] [0 2 p1]]]
>  (defn fold [field nextmove]
>    (withmove (nth nextmove 0) (nth nextmove 1) (nth nextmove 2) field))
>  (let [endstate (reduce fold emptyfield moves)]
>    (println (winner endstate))))
> 
> a few questions:
> is there a better way than
> (= player (distinct currow))
> ?
> 
> i'd like to write something like:
> (every? (= parameter player) currow
> 
> do i have to define the function via letfn before, or is there a way
> to do it nested in the code?
> 
> and more importantly: is there an ide that can point out syntax
> errors? intellij idea can detect some parentheses/braces problems, but
> i managed to trick it by adding too many ( and ). i got weird
> exceptions and had to check everything manually.
> 
> Am 04.09.2011 19:57, schrieb Sergey Didenko:
>> Dennis, may I suggest you to read this great article on Clojure: 
>> http://java.ociweb.com/mark/clojure/article.html
>> 
>> 
>> 
>> -- 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
> 
> 
> - -- 
> 
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v2.0.14 (MingW32)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
> 
> iQIcBAEBAgAGBQJOZiGMAAoJENRtux+h35aGuSwP+gPkuR9tAyHUKUhqCrkFgtiJ
> cuuD47EHMyws/IMwqra1RTBaCAaZbJLx9m4sFn9/KLhbGni7fzTt+zAJy1yxyW21
> RaqZJC43VgG6xmDQYVt54aY9zzHz3MkI3eXZBY6Wsd0yquu2NZjnleEvoUNzwsnI
> nLi0nsyLkLMX6b/QdDj48XaatfeG48i5M+H9MlF7EpesoIntUEHhXRVhK1BnOeCk
> ctd4bo0brdszBes7UhZl9abisaiW1vf+rWAAD8HPqcFg4tWUS//SRRmFyEUJtusc
> GXwiPI5Meu0fKHKJv5EhQl87BD3lG+vLUn1XspYYmrZKn5G0ZxL7v/L5ol1g7Zs4
> doSVsWCkR3zMwyaQgrvj/IuvIMxhWhgXGYwdEBHstPJephlwCRC5sOQCLvjwJB6H
> LEV0nx3m2GiWGH+jOqJ2M+j/OwsYNfPxEPRICLpUjm3lR+Whb1l+OL0fMwREgYkS
> ySeto5Q2pI+pkwZc1PsM2YMUEBjBToZroIlMZw6N6IUuQPFNJBcHPakRNDUs93Du
> nmg8kCGy+thBedbky7KxDW1bmBNFYxEWR2iASXkkIjhUdyrn3hVOxz1D1a6rM3Cb
> S2CdXZG5HeiCsqghyQ/m36bqlLf8CTsFz60lb4Q0Wncpn/EDTSyYq76RRPfGoMBu
> Nec7CzUkF8sat1lrZKxy
> =v1mG
> -----END PGP SIGNATURE-----
> 
> -- 
> 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 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

Reply via email to