Scanning usually means lexical analysis, or lexing.

Although ". or 0&". can serve as scanners, together with ;: ,
they won't be useful for something like a date format:

   ;:'2001-01-01 00:00:00'
+----+-+--+-+--+---+---+--+
|2001|-|01|-|01|00:|00:|00|
+----+-+--+-+--+---+---+--+

Regular expressions can be used and a utility
adverb rxscan which accepts a verb applied to
each submatch and produces a dyad for pattern
and input, which can be used to make specific monads.

   load'regex'
   rxscan=: 1 : ',."1@(}."2)@rxmatches u;.0 ]'

   datescan=: '(....)-(..)-(..) (..):(..):(..)' ".rxscan ]

   datescan '2001-01-01 00:00:00'
2001 1 1 0 0 0

   datescan '2001-01-01 00:00:00 2002-12-31 23:59:59'
2001  1  1  0  0  0
2002 12 31 23 59 59


--- ramacd <[EMAIL PROTECTED]> wrote:

> Amelia Stein wrote:
> > So how do you actually "scan" in a number from standard input?  What 
> > is the
> > syntax? Whether or not it is of good form in J, I have a presentation 
> > to do
> > tomorrow where I need input from the keyboard.
> 
> You don't actually scan in a number. You  get a line of input as a 
> string, or character list, to use the J term.  Then you apply a string 
> to number conversion on that string to get your numbers.
> 
>    a =: scan '' NB. Get a line of input from the keyboard
>    b =: convert a NB. convert to numbers
> or, in a shorter form:
> 
>   b =: convert scan ''
> 
> This works if you define 'convert' and 'scan', and also 'bind' which is 
> part of the J distribution, and I suspect is described there.
> 
>    convert =: ".
>    bind =: 2 : 'x@(y"_)'
>    scan =: 1!:1 bind 1
> 
> Hope this helps.
> >
> > On 4/15/07, Devon McCormick <[EMAIL PROTECTED]> wrote:
> >>
> >> Randy -
> >>
> >> I think it's a mis-characterization to say that J "isn't meant for user
> >> input".
> >> In fact, due to its interpretive nature, J handles user input 
> >> beautifully
> >> compared
> >> to any conventional language, if you use the language itself.  Of 
> >> course,
> >> as
> >> an avid APLer, I'm sure this isn't news to you.
> >>
> >> But this prompt-based notion won't die, no matter how crippled it is
> >> compared
> >> to simply using native J.  Take, for instance, the outline of the 
> >> program
> >> that
> >> Amelia is writing: allow someone to enter some numbers, then return some
> >> descriptive statistics about them.  Using J, I would naturally do
> >> something
> >> like
> >>
> >>    (<./,>./,mean,stddev) 97.1 4.7 33 1.3 22 60 27.6 96.4 87.1 67.5
> >> 1.3 97.1 49.67 36.744585
> >>
> >> However, as Amelia's professor has constrained the problem, the 
> >> "correct"
> >> session might look more like this:
> >>
> >> Enter some numbers: 97.1 4.7 33 1.3 22 60 27.6 96.4 87.1 67.5
> >> ** Error: can only accept 5 numbers.
> >> Enter some numbers: 97.1 4.7 33 1.3 22
> >> The minimum is 1.3.
> >> The maximum is 97.1.
> >> The mean is 31.62.
> >> The standard deviation is 38.813876.
> >>
> >> or some such limited, simplistic implementation.  Notice how thoroughly
> >> inadequate this prompt-based paradigm is for getting any serious work
> >> done:
> >> it's probably constrained to some fixed number of entries or 
> >> necessitates
> >> added complexity to acommodate a variable number of entries.  
> >> Furthermore,
> >> an input mistake can only be corrected by re-typing the entire set of
> >> entries
> >> and the result can only be used by manually transferring it.
> >>
> >> (Of course, using a spreadsheet may also be a good way to handle a 
> >> problem
> >> like this.)
> >>
> >> This prompt+manual input notion is a lousy paradigm that is 
> >> encumbered by
> >> widely-accepted, unnecessary limitations of the past 50 years.  
> >> Today, we
> >> have
> >> scalpels and laser beams but most people still insist on using sticks 
> >> and
> >> rocks.
> >>
> >> However true all this all is, the problem of user input seems to be a
> >> recurring one in J.
> >> Those of us who use the language a lot have solved it for ourselves 
> >> but it
> >> recurs
> >> regularly for beginners.  We've talked about this a bit in the NYCJUG 
> >> and
> >> the
> >> consensus seems to be 1) use file-based input, or 2) use a spreadsheet
> >> front-end.
> >>
> >> One other idea is to use the GUI-building capabilities of some other
> >> language,
> >> like Java or VB, and
> >> interface the resulting GUI with J.  Until get something like
> >> this fully fleshed out on the Wiki, we may have to make do by referring
> >> people to
> >> the character-based solutions for Amelie that came out of this thread.
> >>
> >> Devon
> >>
> >> On 4/15/07, ramacd <[EMAIL PROTECTED]> wrote:
> >> >
> >> >
> >> >
> >> > Dan Bron wrote:
> >> > > This is easy to see if we take a reductionist approach: a single J
> >> > > token is either a built-in J primitive, or it's a user-defined name
> >> > > with an arbitrary definition. Primitives never change their 
> >> definition
> >> > > (good thing!). And the dictionary of J explicitly states, at
> >> > > http://www.jsoftware.com/help/dictionary/dict2.htm that:
> >> > Primitives don't change their definition over a single version of  J,
> >> > that is true.  Over multiple versions it is a different story. In 
> >> fact,
> >> > I long ago coined a term ("getting henked") for the suffering one
> >> > undergoes when one assumes upward compatibility.
> >> >
> >> > On the original idea of this thread, having a REPL facility, which
> >> > doesn't come in primitive-only J, doesn't strike me as a stretch of 
> >> its
> >> > capabilities. I do wonder at the (if you want a responsive computer,
> >> > don't let a user near J) attitude, and where it comes from. Amelia's
> >> > note that J "isn't meant for user input." crystallizes a big 
> >> misgiving I
> >> > have about J, even though I have been pro-J since J has been around.
> >> >
> >> > >: ...
> >> >
> >> > ----------------------------------------------------------------------
> >> > For information about J forums see http://www.jsoftware.com/forums.htm
> >> >
> >>
> >>
> >>
> >> -- 
> >> Devon McCormick, CFA
> >> ^me^ at acm.
> >> org is my
> >> preferred e-mail
> >> ----------------------------------------------------------------------
> >> For information about J forums see http://www.jsoftware.com/forums.htm
> >>
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to