Erebus Mons <[email protected]> writes:
> I am reading in a csv-file, and then transform the attributes into a
> hash-map:
>
> __________________________________________________________________________
> name,property1,property2,etc
> John,drunk,stinks,etc.
> etc.
> __________________________________________________________________________
>
> {"John" {:property1 "drunk", :property2 "stinks"} etc
Why a map of maps and not a map of sets, e.g.:
{"John" #{"drunk" "stings"}}
Then your predicates just turn into membership checks instead of having
to search through the values of the properties map. That is, drunk? is
just:
(defn drunk? [person-prop-map person]
(contains? (person-prop-map person) "drunk))
> then I create with a function functions like drunk?, so that I can
> check whether John is drunk
>
> (drunk? "John")
> true
>
> I need to be able to get all properties in the map but
> drunk?. Therefore, I thought it would be handy to be able to filter
> out drunk? from the functions, but I figured I can only do that if I
> can treat the function-name like a name...
You need to filter it out in order not to define the same function
several times, or do I get you wrong?
If so, why not get the unique set of properties after building the map,
and then generate one predicate for any property that occured?
;; If the props are storted as sets like suggested above, then...
(apply clojure.set/union (vals person-prop-map))
;; ...gives you the set of unique property names.
HTH,
Tassilo
--
--
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
---
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.