oops sorry - should have said  www.learningj.com/W0.zip

On Sep 29, 2017 11:37 AM, "roger stokes" <[email protected]> wrote:

> J with the original parsing rules which Henry and Bill mention is still
> available today.
>
> For Windows,   www.learning.com/W0.zip
>
> For Linux,    www.learningj.com/L0.zip
>
> These are recompilations (by me) of the source files released by ISI in
> about 1993,
> documented in Roger Hui's "An Implementation of J".
> Each includes standalone executable J interpreter,  read.me file, source
> files
> and build script.
>
> A 1993 Dictionary (photographed inexpertly by me from a paper copy)
> is at  www.learningj.com/JDOC1993.zip . It is 46 Mb of jpegs.
>
> Regards
>
>
>
>
> On Fri, Sep 29, 2017 at 3:58 AM, 'Jon Hough' via Programming <
> [email protected]> wrote:
>
>>  >Note for those who have not been using J for
>>  >more than 10 years: the
>>  >original tacit
>>  >language allowed trains that produced modifiers.
>>
>> What is the latest J version that had this? Is it available somewhere?
>>
>> --------------------------------------------
>> On Fri, 9/29/17, Henry Rich <[email protected]> wrote:
>>
>>  Subject: Re: [Jprogramming] Tacit Expressions with Explicit J Syntax
>>  To: [email protected]
>>  Date: Friday, September 29, 2017, 11:45 AM
>>
>>  Taking your last sentence first,
>>  you would have to supply some evidence
>>  to
>>  make me believe that tacit forms have any intrinsic
>>  performance penalty.
>>
>>  It is
>>  dawning on me that you want fast function definition, but
>>  that you
>>  want it to produce tacit code.
>>  You find the current tacit language
>>  difficult, and you propose to replace it with
>>  something that looks more
>>  like the explicit
>>  language.  That seems like a mistake to me, because:
>>
>>  1. Most of the responders on
>>  this Forum don't agree with you that the
>>  tacit language is opaque
>>
>>  2. Even with a fast function definition, many J
>>  programmers (I dare not
>>  say all J
>>  programmers with a soul) will always prefer (+ i.) to (. x +
>>
>>  i. y).
>>
>>  3.
>>  Tacit code is a different mindset from explicit code.
>>  It's
>>  functional.  It doesn't have
>>  assignments or control words
>>
>>  4. Operands to modifiers cannot be arguments to
>>  tacit code
>>
>>  5. Explicit
>>  syntax is an improvement in some cases, not all.  +/ *: y
>>  is
>>  a little lighter than +/@:* y but (+/ y)
>>  % #y is heavier than (+/ % #) y
>>
>>  6. So: even if I were redesigning the language
>>  from scratch, I wouldn't
>>  represent
>>  tacit forms your way.  I would, as Roger has observed,
>>  switch
>>  the meanings of (u v) and (u@:v),
>>  but I would keep the rest as is.
>>
>>  [Note for those who have not been using J for
>>  more than 10 years: the
>>  original tacit
>>  language allowed trains that produced modifiers.  That
>>  was, to me, Ken's finest achievement: a
>>  really beautiful language,
>>  immensely
>>  supple, even though it had no syntactic elements but the
>>  primitives and parentheses.  I never found it
>>  wanting.  It was fully
>>  understood by no
>>  more than half a dozen people, I think.  It was removed
>>  from J because explicit forms could produce the
>>  same results: a good
>>  business decision, but
>>  a loss to computer science and art.]
>>
>>  7. The bottom line: tacit forms work pretty
>>  well as they are, and an
>>  incompatible
>>  change to them could be justified only by a huge
>>  improvement in readability or efficiency.  You
>>  haven't shown that.
>>
>>  Henry Rich
>>
>>  On
>>  9/28/2017 10:09 PM, Erling Hellenäs wrote:
>>  > Hi all !
>>  >
>>  > Is improving explicit J the way forward?
>>  Or is tacit J and improving
>>  > tacit J
>>  the way forward?
>>  > I also think that
>>  "Henry's" proposal, which is similar to what I
>>  have
>>  > been writing about for a long
>>  time, is great.  It is easy to do and
>>  >
>>  have great benefits for people working in explicit J. They
>>  will not
>>  > have to type lots of double
>>  quotes, or write their own J versions with
>>  > special duplicate quote functionality.
>>  > That doesn't mean that tacit J could
>>  not also be improved?
>>  > Henry's
>>  proposal is nearly identical to my proposal but mine is
>>  about
>>  > tacit J, it is addressing
>>  problems with tacit J. His is about explicit
>>  > J. It is addressing problems with explicit
>>  J, the quote duplication
>>  > problem. I am
>>  addressing problems with tacit J, mainly  the problem
>>  > which makes people write cross-compilers
>>  from explicit to tacit J or
>>  > programs
>>  to automatically pack verb sequences in tacit J into their
>>
>>  > packages of brackets and phony
>>  "compositors", like this -
>>  >
>>  f@:(g@:(h@:(i@:(j@:])))). People who are working
>>  professionally with
>>  > tacit J and who
>>  knows that cheating and writing tacit J like most
>>  > other people do will slow their programs
>>  much too much?
>>  >
>>  >
>>  Cheers,
>>  > Erling
>>  >
>>  > On 2017-09-29 03:13, Joe Bogner wrote:
>>  >> I also like Henry's suggestion of
>>  fast function definition. It's also
>>  >> unclear to me on how the Erling's
>>  suggestion improves upon that.
>>  >>
>>  >> On Thu, Sep 28, 2017 at 5:45 PM, Louis
>>  de Forcrand <[email protected]>
>>
>>  >> wrote:
>>  >>
>>  >>> I don't really understand what
>>  you wish to add either, Erling.
>>  >>>
>>  >>> If
>>  you want to use explicit J syntax, you could write an
>>  explicit verb.
>>  >>>
>>  >>> You write:
>>  >>>> Particularly to create what
>>  you most commonly need, a sequence of
>>  >>>> monadic verbs, each acting on
>>  the result of the verb to the right.
>>  >>>> Well, it is not complicated as
>>  such, but for some reason people don't
>>  >>> like
>>  >>>> the obvious way to do it,
>>  which is [: f [: g [: h ]. Then they dive
>>  >>>> into
>>  >>> a
>>  >>>>
>>  mess of complications. I mean the cap should not be
>>  necessary. That
>>  >>> simple
>>  >>>> right to left execution should
>>  be the default, possibly modified with
>>  >>>> parenthesis. That tacit and
>>  explicit J should have the same basic
>>  >>>> syntax.
>>  >>> f@:g@:h?
>>  >>> In addition, I disagree with your
>>  last two sentences. What's the
>>  >>> point of
>>  >>> having tacit syntax if it's
>>  the same as explicit syntax? If you want
>>  >>> explicit syntax, write an explicit
>>  verb; other times tacit syntax is
>>  >>> really
>>  >>> practical.
>>  >>> In an explicit verb, simple right
>>  to left execution *is* the default.
>>  >>>
>>  >>> In
>>  any case I don't really see how the rest of your
>>  suggestion differs
>>  >>> from
>>  Henry's (.). verbs, which I like very much by the
>>  way.
>>  >>>
>>  >>> Cheers,
>>  >>> Louis
>>  >>>
>>  >>>>
>>  On 28 Sep 2017, at 14:53, Raul Miller <[email protected]>
>>  wrote:
>>  >>>>
>>  >>>> Jose's work is impressive,
>>  but I try to avoid it because of the extra
>>  >>>> complexity it creates when I
>>  want to (for example) provide a parameter
>>  >>>> in clauses for conjunctions
>>  like &. -- the extra complexity can be a
>>  >>>> nice mental exercise and maybe
>>  even a cure for boredom, but I feel
>>  >>>> that I have the right to treat
>>  it as unnecessary.
>>  >>>>
>>  >>>> Thanks,
>>  >>>>
>>  >>>> --
>>  >>>> Raul
>>  >>>>
>>  >>>>
>>  >>>> On Thu, Sep 28, 2017 at 8:33
>>  AM, Erling Hellenäs
>>  >>>> <[email protected]>
>>  wrote:
>>  >>>>> Hi all !
>>  >>>>>
>>  >>>>> I am very impressed by
>>  Jose's work and I think it is an excellent
>>  >>>>> illustration to why we
>>  need the modification to J I propose.
>>  >>>>> It is extremely
>>  complicated to do these things which should be
>>  >>>>> simple,
>>  >>> as I
>>  >>>>> see it. Particularly to
>>  create what you most commonly need, a
>>  >>>>> sequence
>>  >>> of
>>  >>>>> monadic verbs, each acting
>>  on the result of the verb to the right.
>>  >>>>> Well, it is not
>>  complicated as such, but for some reason people don't
>>  >>> like
>>  >>>>> the obvious way to do it,
>>  which is [: f [: g [: h ]. Then they dive
>>  >>> into a
>>  >>>>> mess of complications. I
>>  mean the cap should not be necessary. That
>>  >>> simple
>>  >>>>> right to left execution
>>  should be the default, possibly modified with
>>  >>>>> parenthesis. That tacit
>>  and explicit J should have the same basic
>>  >>> syntax. I
>>  >>>>> tried my ideas of a
>>  different tacit J in a test implementation and it
>>  >>> was
>>  >>>>> great.
>>  >>>>>
>>  >>>>> Cheers,
>>  >>>>> Erling Hellenäs
>>  >>>>>
>>  >>>>>
>>  >>>>>> On 2017-09-28 05:29,
>>  Jose Mario Quintana wrote:
>>  >>>>>>
>>  >>>>>> Hi Erling,
>>  >>>>>>
>>  >>>>>> You are right, the
>>  adverb (At) produces tacit sentences but it is
>>  >>> really
>>  >>>>>> an
>>  >>>>>> implementation of
>>  Dan's pipeline proposal using strand notation
>>  >>>>>> via a
>>  >>>>>> Curried adverb (aka,
>>  recurrent adverb and multiple adverb).
>>  >>>>>>
>>  >>>>>> However, I have
>>  written (tacitly) a tacit Curried adverb (xi) which,
>>  >>> using
>>  >>>>>> a lambda-style syntax,
>>  produces a tacit verb which in turn, given
>>  >>>>>> its
>>  >>>>>> arguments, produces
>>  tacit entities.  You might find xi
>>  >>>>>> interesting; the
>>  >>>>>> general form is,
>>  >>>>>>
>>  >>>>>> t=. [: v0 v1 ... vn
>>  '...' xi
>>  >>>>>>
>>  >>>>>> The names v0 v1 ... vn
>>  should be syntactically verbs (recall, xi
>>  >>>>>> is a
>>  >>>>>> Curried adverb) but
>>  they can represent nouns, verbs, adverbs, or
>>  >>>>>> conjunctions.  I use
>>  undefined names since those are regarded by
>>  >>> default
>>  >>>>>> as
>>  >>>>>> verbs (even if xi does
>>  not affect in any way the named verbs).  The
>>  >>>>>> literal
>>  >>>>>> '...'
>>  represents a quoted J (or more generally a Jx) sentence.
>>  >>>>>>
>>  >>>>>> This is how your
>>  example can be written using xi,
>>  >>>>>>
>>  >>>>>>     erase 'b
>>  v'
>>  >>>>>>
>>  >>>>>>     [: v '([: b
>>  ''<:b++/\b-~-.b'' xi
>>  <''\''=v){."0 v' xi
>>  >>>>>>
>>  <'\\\//\\\//'
>>  >>>>>> \
>>  >>>>>>   \
>>  >>>>>>    \
>>  >>>>>>    /
>>  >>>>>>   /
>>  >>>>>>   \
>>  >>>>>>    \
>>  >>>>>>     \
>>  >>>>>>     /
>>  >>>>>>    /
>>  >>>>>>
>>  >>>>>> There is the nuisance
>>  of quotes within quotes and the argument
>>  >>>>>> must be
>>  >>>>>> boxed; however, this
>>  allows, in general, the verb (t) to produce a
>>  >>> noun, a
>>  >>>>>> verb, an adverb, or a
>>  conjunction and to take multiple boxed nouns,
>>  >>> verbs,
>>  >>>>>> adverbs, or
>>  conjunctions as its argument.  The following verb (t)
>>  >>>>>> acts
>>  >>>>>> directly on a couple
>>  of (boxed) verbs and produces a verb,
>>  >>>>>>
>>  >>>>>>     t=. [: u v
>>  'u/@:v' xi
>>  >>>>>>
>>  >>>>>>     t[:+*:]: NB.
>>  Sum of squares
>>  >>>>>>
>>  +/@:*:
>>  >>>>>>
>>  t[:+*:]: 1 2 3 4 5
>>  >>>>>>
>>  55
>>  >>>>>>
>>  >>>>>>     t[:-%:]: NB.
>>  Difference of square roots
>>  >>>>>> -/@:%:
>>  >>>>>>     t[:-%:]: 1 2 3
>>  4 5
>>  >>>>>> 1.55390522
>>  >>>>>>
>>  >>>>>> Note that the Curried
>>  higher-order verb (t) is, in effect, acting on
>>  >>> two
>>  >>>>>> arguments: [:-%:]: and
>>  1 2 3 4 5; furthermore, t [:-%:]: performs a
>>  >>>>>> partial
>>  >>>>>> application of the
>>  verb (t) acting on [:-%:]: .
>>  >>>>>>
>>  >>>>>> The following are
>>  variations of the verb produced in [0], the
>>  >>>>>> verb (t)
>>  >>>>>> acts on a (boxed)
>>  conjunction and produces an adverb,
>>  >>>>>>
>>  >>>>>>     t=. [: u
>>  '(ver adv u)&:train/adv' xi
>>  >>>>>>
>>  >>>>>>     ]`{.`{:`{: (t
>>  [:(<adv@:)]:)  NB. Use [:(<'@:')sb in J
>>  >>>>>> ]@:({.@:({:@:{:))
>>  >>>>>>
>>  >>>>>>     ]`{.`{:`{: (t
>>  [:(<adv@ )]:)  NB. Use [:(<'@ ')sb in J
>>  >>>>>> ]@({.@({:@{:))
>>  >>>>>>
>>  >>>>>>     ]`{.`{:`{: (t
>>  [:(<adv&:)]:)  NB. Use [:(<'&:')sb in
>>  J
>>  >>>>>>
>>  ]&:({.&:({:&:{:))
>>  >>>>>>
>>  >>>>>> These non-compliant
>>  features are not provided by the Jx interpreter;
>>  >>> they
>>  >>>>>> are, in fact,
>>  inherited from the J interpreter, the Jx facilities
>>  >>>>>> just
>>  >>>>>> make
>>  >>>>>> them a lot more
>>  accessible.  Actually, I have written a version
>>  >>>>>> (admittedly
>>  >>>>>> cumbersome) of xi in
>>  J; see [1] for a link to a zip archive and the
>>  >>> path
>>  >>>>>> to
>>  >>>>>> a script where xi is
>>  defined.
>>  >>>>>>
>>  >>>>>> PS.
>>  >>>>>>     erase'u0 u1
>>  u2'
>>  >>>>>> 1 1 1
>>  >>>>>>     [: u0 u1 u2
>>  'u0 + u1 + u2' xi 1 ; 2 ; 3
>>  >>>>>> 6
>>  >>>>>>
>>  >>>>>>     erase'α β
>>  γ'
>>  >>>>>> 1 1 1
>>  >>>>>>     [: u0 u1 u2
>>  'u0 + u1 + u2' xi [:α β γ]:
>>  >>>>>> α + β + γ
>>  >>>>>>
>>  >>>>>> References
>>  >>>>>>
>>  >>>>>> [0] [Jprogramming]
>>  Gerund composed application
>>  >>>>>> http://www.jsoftware.com/pipermail/programming/2017-
>>  >>>>>>
>>  September/048797.html
>>  >>>>>>
>>  >>>>>> [1] J Wicked
>>  Toolkit
>>  >>>>>>      http://www.2bestsystems.com/foundation/j/Jx.zip
>>  >>>>>>      \Jx\J\J
>>  Wicked Toolkit.ijs
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>>
>>  >>>>>> On Wed, Sep 27, 2017
>>  at 5:10 AM, Erling Hellenäs
>>  >>>>>> <[email protected]>
>>  >>>>>> wrote:
>>  >>>>>>
>>  >>>>>>> Hi all !
>>  >>>>>>>
>>  >>>>>>> Pascal, I will
>>  come back to your post later.
>>  >>>>>>>
>>  >>>>>>> Here is a little
>>  compiler written in Jx and compiling, as I
>>  >>>>>>> understand
>>  >>>>>>> it,
>>  >>>>>>> tacit code with
>>  explicit J syntax into tacit J. I did not test
>>  >>>>>>> it, I
>>  >>> just
>>  >>>>>>> read the post.
>>  >>>>>>> http://www.jsoftware.com/pipermail/programming/2017-
>>  >>> August/048143.html
>>  >>>>>>> The code snippet
>>  Farey is an example of the source code of the
>>  >>>>>>> little
>>  >>>>>>> compiler.
>>  >>>>>>> I just think we
>>  should not have to use a tacit J compiler from
>>  >>> explicit J
>>  >>>>>>> to be able to use
>>  explicit J syntax and get a tacit result, a
>>  >>>>>>> single
>>  >>>>>>> verb.
>>  >>>>>>> It would obviously
>>  be better to use explicit J  syntax in the first
>>  >>>>>>> place,
>>  >>>>>>> as i see it.
>>  >>>>>>>
>>  >>>>>>> Cheers,
>>  >>>>>>>
>>  >>>>>>> Erling
>>  >>>>>>>
>>  >>>>>>>
>>  >>>>>>>
>>  ------------------------------------------------------------
>>  >>> ----------
>>  >>>>>>> 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
>>  >>>>
>>  ----------------------------------------------------------------------
>>  >>>> 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/forum
>> s.htm
>>  >
>>  >
>>  >
>>  ----------------------------------------------------------------------
>>  > For information about J forums see http://www.jsoftware.com/forums.htm
>>
>>
>>  ---
>>  This email has been checked for viruses by
>>  AVG.
>>  http://www.avg.com
>>
>>  ----------------------------------------------------------------------
>>  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

Reply via email to