On Monday, October 27, 2014 3:00:40 AM UTC-4, Marcus Magnusson wrote:
>
> I don't see how the macro version would offer any performance benefits -
> in both cases, x is evaluated once and pred is called once. Am I missing
> something?
>
Nah. Someone upthread suggested a macro, for some reason. I
I don't see how the macro version would offer any performance benefits - in
both cases, x is evaluated once and pred is called once. Am I missing
something?
Den fredagen den 24:e oktober 2014 kl. 15:47:50 UTC+2 skrev Fluid Dynamics:
>
> (defn if-its [pred x]
> (if (pred x) x))
>
> => (if-its e
(defn if-its [pred x]
(if (pred x) x))
=> (if-its even? 4)
4
=> (if-its even? 5)
nil
Or, if you want a macro for performance reasons or something, and don't
mind the loss of e.g. (filter identity (map (partial if-its pred) coll)):
(defmacro if-its [pred x]
`(let [a# ~x]
(if (~pred a#)
On 24 Oct 2014, at 15:05, Sam Raker wrote:
> "I think the point is to get nil if x does not satisfy some predicate." <--
> exactly.
… and shorter than (when (p x) x)? If you can come up for a good name for that,
I guess you could macro it? :-)
hth
lvh
signature.asc
Description: Message sign
"I think the point is to get nil if x does not satisfy some predicate." <--
exactly.
I basically want something like `if-let`, but which returns x instead of
f(x). `(if-let [m-with-k (contains? m k)]...` results in `m-with-k`
evaluating to `true`, not `m`. I *think* it's better to reject someth
I think the point is to get nil if x does not satisfy some predicate.
The best option would depend on the context in which these expressions are
used, but one option would be to write your predicates to return the input
as the truthy value (and nil otherwise).
On Friday, 24 October 2014, Laurens
Hi Sam,
I’m not sure I understand. If not for sequences, then what for? `(if (pred x)
x)` looks like it’s missing an else-clause; so I don’t know what happens when
(not (pred x)).
From the rest of your e-mail it sounds a little bit like you might want (get m
x x)? (i.e. get me x if x isn’t in
Is there anything simpler/more idiomatic than `(if (pred x) x)`? What I
really want is something better than `(if (= (get a-map a-key) a-val)
a-map)`/`(if (= (get-in a-map some-keys) a-val) a-map)`, but that might be
too specific to have been 'cached' somewhere.
--
You received this message be