On Feb 14, 12:21 pm, Chouser <chou...@gmail.com> wrote:

> > (defn count-instances [obj lsts]
> >   (let [instances-in (fn [lst]
> >                        (if (cons? lst)
> >                          (+ (if (= (first lst) obj) 1 0)
> >                             (instances-in (rest lst)))
> >                          0))]
> >   (map instances-in lsts)))
>
> ...doesn't work.  You can't refer to the 'let' local from within the
> fn definition.  You can however give the fn a name, like thisfn:
>
> (defn count-instances [obj lsts]
>   (let [instances-in (fn thisfn [lst]
>                        (if (seq lst)
>                          (+ (if (= (first lst) obj) 1 0)
>                             (thisfn (rest lst)))
>                          0))]
>         (map instances-in lsts)))

Notwithstanding your more idiomatic implementation (snipped), wouldn't
"recur" be better than "thisfn"?

 (defn count-instances [obj lsts]
   (let [instances-in (fn [lst]
                        (if (seq lst)
                          (+ (if (= (first lst) obj) 1 0)
                             (recur (rest lst)))
                          0))]
         (map instances-in lsts)))

Gavin
--~--~---------~--~----~------------~-------~--~----~
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
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