When I a wanted to try out your interesting example here I discovered
that it needed a bit more to run.

To begin with the dir command is missing

require'dir'

Then a simple example

   aa=.dir climb 'C:\j601'

And something to display the results

   ,.aa



So like this to start with

require'dir'

climb=: 1 : 0
  svdir=. 1!:43 ''
  1!:44 svdir [ rr=. u y [ 1!:44 y
  subds=. ((('d'e.&>4{"1])#0{"1])@:(1!:0@<)) y,'\*.*' NB. Only subdir names
  if. 0~:#subds do. rr=. rr;(u climb)&.>(<y,'\'),&.>subds end.
)

   aa=.dir climb 'C:\j601'
   $aa
5
   $ &.> aa
┌─────┬─┬─┬─┬─┐
│25 54│5│6│2│6│
└─────┴─┴─┴─┴─┘

   ,.aa

The results from the example is still a bit complicated for a beginner
I guess but it sure looks interesting.




2009/7/17 Devon McCormick <[email protected]>:
> Members of the Forum -
>
> I've recently been playing with a useful utility I'm calling "climb" because
> it climbs a directory tree, doing something at each node.  This "doing
> something" is user-specifiable, so this naturally lends itself to an
> adverbial construction, to whit:
>
> climb=: 1 : 0
>   svdir=. 1!:43 ''
>   1!:44 svdir [ rr=. u y [ 1!:44 y
>   subds=. ((('d'e.&>4{"1])#0{"1])@:(1!:0@<)) y,'\*.*' NB. Only subdir names
>   if. 0~:#subds do. rr=. rr;(u climb)&.>(<y,'\'),&.>subds end.
> )
>
> The only very complicated line is the one assigning the subdirectory
> variable "subds".  I had originally written this
>
>   subds=. jd dir y,'\*.*' NB. Only subdir names
>
> but have since substituted the definitions for "jd" (just directories) and
> "dir" since this makes the function self-contained.
>
> I'm interested in comments on a couple of design choices.  First of all, is
> the name good?  The more normal terminology has one "walk" a directory
> tree.  In fact, the Rosetta code page "Walk Directory Tree" (
> http://rosettacode.org/mw/index.php?title=Walk_Directory_Tree) presents an
> application of this code though the problem statement is poorly worded.  It
> states that this algorithm will "[w]alk a given directory tree and print
> files matching a given pattern" when it apparently means not "print files"
> but "display file information", based on the submissions.
>
> Of course, the J function here is more general as it allows one to do
> anything while climbing the tree.
>
> Another design choice has us changing directories to run the supplied verb
> but it's not clear this is really necessary.
>
> Yet another choice is to make this recursive in order to simplify the
> logic.  However, if we were to handle the sub-directory navigation more
> explicitly, this opens up the possibility of being able to specify either
> "depth-first" or "breadth-first" processing of the tree rather than the
> implicit "depth-first" approach of recursion.
>
> Finally, when I first attempted to use this to list files matching a certain
> pattern, I had an initial problem specifying my verb.  My first attempt,
>
>   aa=. (dir&'*Bis-B*.csv') climb 'C:\amisc'
>
> failed.  When I examined the behavior of my verb - which intentionally
> ignores the default argument inside "climb" of the current directory path -
> I found this:
>   (dir&'*Bis-B*.csv') 'C:\amisc'
> |length error: dir
> |       (dir&'*Bis-B*.csv')''
>
> Playing around with some variations led me to this
>
> aa=. ((dir@:])&'*Bis-B*.csv') climb 'C:\amisc'
>
> which worked fine but I'm not clear on why my initial attempt to bind the
> right argument of "dir" fails.
>
> In any case, this is a useful utility that offers some room for improvement
> but I've already used it successfully in a couple of different ways.
>
> --
> Devon McCormick, CFA
> ^me^ at acm.
> org is my
> preferred e-mail
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>



-- 
Björn Helgason, Verkfræðingur
Fugl&Fiskur ehf,
Þerneyjarsundi 23, Hraunborgum
Po Box 127,801 Selfoss ,
t-póst: [email protected]
gsm: +3546985532
Landslags og skrúðgarðagerð, gröfuþjónusta
http://groups.google.com/group/J-Programming


Tæknikunnátta höndlar hið flókna, sköpunargáfa er meistari einfaldleikans

góður kennari getur stigið á tær án þess að glansinn fari af skónum
          /|_      .-----------------------------------.
         ,'  .\  /  | Með léttri lund verður        |
     ,--'    _,'   | Dagurinn í dag                     |
    /       /       | Enn betri en gærdagurinn  |
   (   -.  |        `-----------------------------------'
   |     ) |         (\_ _/)
  (`-.  '--.)       (='.'=)   ♖♘♗♕♔♙
   `. )----'        (")_(") ☃☠
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to