As an added note, you can see how the parser breaks a sentence up into words or tokens or whatever you want to call them by experimenting with the monadic implementation of ;:
I hope this helps, -- Raul On Wed, Jul 8, 2020 at 11:00 AM Raul Miller <[email protected]> wrote: > > I think I can address some of your questions (but my statements will > not be in order): > > (*) The fold conjunction is a generalization of the (/) adverb. It was > designed to address a number of issues which have been encountered > over the years. Only time will tell how useful it may become. > > (*) The current implementation is a prototype. The parsing stage is > hard-coded into the interpreter, but the actual implementation is > "just plain old J". So that 'whole lot of "code"' you're seeing is the > actual current (prototype) implementation of Fold. > > (*) While the J parser supports both one character tokens and multiple > character words, much like most other languages, it also does a few > things differently, including: > > ((+)) The . and/or : character can extend an existing token. These are > analogous to inflection marks used with human languages. Thus, A::::: > has always been recognized by the parser as a token -- it just has > never had any meaning assigned to it. > > ((+)) Any alphabetic character can be a part of a number, not just e. > Thus, 1xyz0 has always been recognized by the parser as a number -- it > just never has had any meaning assigned to it. > > ((+)) Spaces can be part of a numeric word. Thus 1 2 3 is a single > word in the parser, which is a list of numbers. This is analogous to > how '1 2 3' is a single word in the parser, which is a list of > characters -- it just has a different length. > > (*) The documentation can be improved. > > Thanks, > > -- > Raul > > On Wed, Jul 8, 2020 at 8:13 AM Piet de Jong <[email protected]> wrote: > > > > I've been experimenting with the new fold conjunction F:. . I think it's > > a very useful addition to J and thank all those who have made this > > possible. Nevertheless I have some comments/reactions. These are made > > in a constructive spirit. Perhaps these comments just display my own > > ignorance and J ineptitude. I make these comments as someone who has > > worked in Kalman filtering and smoothing which seem perfect candidates for > > Fold. In fact I implemented Kalman filtering with F:. and found a > > dramatic increase in both computational speed and ease of coding, and a > > drastic reduction in J code clutter. > > > > 0) Is the monadic case useful? To my mind it just creates potential > > confusion and "clutter": most iterations can be thought of as an initial > > condition (x) with iterations which consume y. > > 1) Why have Fold forward AND Fold reverse. Can't you just have Fold > > forward leaving the reverse to be treated as (u F:. v |.) I realise this > > assumes the dyadic case (see 0) > > 2) When you type u F:. v into the interpreter I get a whole lot of > > "code" rather than the usual boxed representation. Is this intentional? > > 3) I made the comment in a previous post that the switching of x an y > > between (u F:. v) and v is very confusing to me. It just doesn't seem > > natural. The x in x (u F:. v) y is the natural "initial condition". In > > each iteration the "natural" initial condition is the output of the > > previous iteration and I suspect most people would think this way. > > 4) Is F.. really useful? Why can't users just implement {:@(u F:. v), > > picking off the last result. > > 5) The documentation section "which primitive should I use", refers to > > F:... -- I don't understand what the three dots stand for. Nor do I > > understand what eg "Fold Multiple *" means (ie the *). > > 6) The documentation section "Common uses" part 1, gives, according to me > > a confusing and perhaps non constructive example. The y (from the point > > of view of u F:. v ) sequence is not used at all other than being printed > > out (as the x of v). Perhaps a more instructive example would be > > iteration of the form z_t=1/z_{t-1} + y_t. > > implemented as (]F:.((%@[+])~)). (As per 3 I really dislike having to > > use ~) > > 7) Somewhere in the documentation it states that "The first application of > > v consumes 2 items of y." If I understand things correctly this is only > > true for the monadic case. > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
