you can just use (every? true? '(arg1 arg2 ....)) or def a simple function
.
i think the Core is powerful enough.


2013/6/11 Cedric Greevey <cgree...@gmail.com>

> There's also the defmacro route:
>
> (defmacro if-and [test-expr binding & tests]
>   `(let [~binding ~test-expr]
>      (and ~@(concat tests [binding]))))
>
> Evaluates test-expr, then evaluates to the result of that if the tests all
> pass, and to a falsey value otherwise (in fact, the first falsey value
> returned by any of the tests). If you want only nil or the value, the and
> sexp can be changed to (if (and ~@tests) binding). Short-circuits at the
> first falsey test of course. Might be more convenient (fewer lambdas
> needed) sometimes and more efficient sometimes -- on the other hand, to use
> as a function itself it will need wrapping in a lambda: #(if-and % %
> tests-using-%).
>
>
>
> On Mon, Jun 10, 2013 at 4:31 PM, Ben Wolfson <wolf...@gmail.com> wrote:
>
>> On Mon, Jun 10, 2013 at 1:20 PM, Steven Degutis <sbdegu...@gmail.com>wrote:
>>
>>> Sometimes I've wanted a function that takes a value and a bunch of
>>> tests, and returns it if it passes every test, otherwise nil.
>>>
>>> So I wrote if-and:
>>>
>>> (if-and "foo"
>>>
>>>         string?
>>>         #(.startsWith % "f")
>>>
>>>         #(.contains % "oo"))
>>>
>>> ;; => "foo"
>>>
>>>
>>> (if-and "foo"
>>>         string?
>>>         #(.startsWith % "f")
>>>
>>>         #(.contains % "NOT IN THE STRING"))
>>>
>>> ;; => nil
>>>
>>>
>>> Source:
>>> https://github.com/evanescence/if-and/blob/master/src/if_and/core.clj
>>>
>>> Does this seem useful enough to put into core?
>>>
>>>
>> "Takes a value and a bunch of tests, and returns [the value] if it passes
>> every test" implies that (if-and false false?) should return false, but:
>>
>> user> (if-and false false?)
>> nil
>>
>> It's also kind of confusing to me *anyway* that (if-and false false?)
>> would return false and not true (to indicate that the supplied value passed
>> every test). Something like this seems more intuitive to me:
>>
>> user> (defn allpreds [x & ts] (every? #(% x) ts))
>> #'user/allpreds
>> user> (allpreds false false?)
>> true
>> user> (allpreds nil false?)
>> false
>>
>> With if-and being definable in terms of allpreds:
>>
>> user> (defn if-and* [x & ts] (when (apply allpreds x ts) x))
>> #'user/if-and*
>> user> (if-and* false false?)
>> false
>> user> (if-and* false nil?)
>> nil
>>
>> --
>> Ben Wolfson
>> "Human kind has used its intelligence to vary the flavour of drinks,
>> which may be sweet, aromatic, fermented or spirit-based. ... Family and
>> social life also offer numerous other occasions to consume drinks for
>> pleasure." [Larousse, "Drink" entry]
>>
>>  --
>> --
>> 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/groups/opt_out.
>>
>>
>>
>
>  --
> --
> 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/groups/opt_out.
>
>
>



-- 

------------------------------------****

刘家齐 (Jacky Liu)

**

手机:15201091195        邮箱:liujiaq...@gmail.com

Skype:jacky_liu_1987   QQ:406229156

-- 
-- 
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/groups/opt_out.


Reply via email to