> It's not a unit if you're using `if-let` and expect nil to represent
failure and {} to represent a success that establishes no bindings.
You mean, something like this, right? :
(if-let [{:keys [a]} {}] "Hi"); => "Hi"
(if-let [{:keys [a]} nil] "Hi"); => nil
Interesting example!
In my own code, however, I wouldn't use a collection (in this case, a map)
as a test expression inside if (which happens here under the hood).
Exactly because in many cases empty sequence is equivalent to nil.
Instead, I would explicitly test for emptiness: (if (seq my-map) this that).
On Thursday, August 30, 2012 12:46:05 AM UTC+2, Brian Marick wrote:
>
>
> On Aug 29, 2012, at 2:08 PM, dmirylenka wrote:
>
> > I would say, they treat nil as an empty sequence, which makes nil,
> effectively, a unit:
> >
> > (assoc nil :a :b) ; => {:a :b}
> > (merge nil {:a :b}) ; => {:a :b}
>
> It's not a unit if you're using `if-let` and expect nil to represent
> failure and {} to represent a success that establishes no bindings.
>
> -----
> Brian Marick, Artisanal Labrador
> Contract programming in Ruby and Clojure
> Occasional consulting on Agile
>
>
>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en