Hi sun,
This sounds related to tree-flattening. If you search the google
group with keyword "flatten", I think you'll discover some indirectly
useful information.
Kev
On Feb 16, 3:55 am, wubbie <[email protected]> wrote:
> So destructuring is essentially doing (first coll) for each parameter
> and the rest is assigned (rest coll)?
>
> On Feb 15, 11:48 am, wubbie <[email protected]> wrote:
>
> > Also how left and right gets mapped magically to (first tree) and
> > (rest tree)?
> > Is it destructuring? I have some ideas on destructuring but this left
> > and right things confuses me...
>
> > thanks
> > sun
>
> > On Feb 15, 11:31 am, wubbie <[email protected]> wrote:
>
> > > thanks,
> > > it works, although it does not count nil node.
> > > Anyway, what's the motivation behind using "sequential?" ?
> > > thanks
> > > sun
>
> > > On Feb 15, 11:23 am, Vincent Foley <[email protected]> wrote:
>
> > > > Sorry about the erroneous function, I think this is more likely what
> > > > you want:
>
> > > > (defn count-leaves [[left & right :as tree]]
> > > > (if (seq tree)
> > > > (+ (if (sequential? left)
> > > > (count-leaves left)
> > > > 1)
> > > > (count-leaves right))
> > > > 0))
>
> > > > user> (count-leaves [])
> > > > 0
> > > > user> (count-leaves [1 [2 [3]]])
> > > > 3
> > > > user>
>
> > > > On Feb 15, 10:55 am, wubbie <[email protected]> wrote:
>
> > > > > Hi,
>
> > > > > Trying to convert to clojure but stumbled on it...
>
> > > > > (defun count-leaves (tree)
> > > > > (if (atom tree)
> > > > > 1
> > > > > (+ (count-leaves (car tree))
> > > > > (or (if (cdr tree) (count-leaves (cdr tree)))
> > > > > 1))))
>
> > > > > > (count-leaves ’((a b (c d)) (e) f))
>
> > > > > 10
>
> > > > > My clojure version is:
>
> > > > > user=> (defn count-leaves
> > > > > [tree]
> > > > > (if (seq tree)
> > > > > (+ (count-leaves (first tree))
> > > > > (or (if (rest tree) (count-leaves (rest tree)))
> > > > > 1))
> > > > > 1))
> > > > > #'user/count-leaves
> > > > > user=> (count-leaves [1 2 3])
> > > > > java.lang.IllegalArgumentException: Don't know how to create ISeq
> > > > > from: Integer (NO_SOURCE_FILE:0)
>
> > > > > But not working. I'm wondering why...
>
> > > > > thanks,
> > > > > -sun
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---