Newsgroups: comp.lang.apl
Path: watmath!watserv2.uwaterloo.ca!torn!howland.reston.ans.net!usc!sdd.hp.com!decwrl!decwrl!csus.edu!sfsuvax1.sfsu.edu!vpcsc4
From: vpcsc4@sfsuvax1.sfsu.edu (Emmett McLean)
Subject: J FAQ
Message-ID: <1993May5.004939.24515@csus.edu>
Sender: news@csus.edu
Organization: San Francisco State University
Date: Wed, 5 May 1993 00:49:39 GMT
Lines: 202


===================================================================
1.    What's J?
2.    Where can I get it?
3.    What publications are available ? And how much do they cost ?
4.    What are the copyrights ?
5.    Is there an instruction set I can peruse?
6.    What _free_ packages are available?
===================================================================

1.    What's J?

     J is a functional shareware programming language  
     available via anonymous ftp at The University of Waterloo.


     Features include list-at-a-time processing, arrays of arrays,
     complex numbers, special features for multiplying polynomials,
     manipulating sets and generating permutations.  Although it
     provides support for numerical modeling, it is not a numerical
     modeling package.  It is a general purpose programming language.

     J was designed and developed by Ken Iverson and Roger Hui.
     It is similar to the language APL, departing from APL in using
     using the ASCII alphabet exclusively, but employing a spelling
     scheme that retains the advantages of the special alphabet 
     required by APL. It has added features and control structures 
     that extend its power beyond standard APL.  

     Although it can be used as a conventional procedural programming 
     language, it can also be used as a pure functional programming 
     language. 

     J is similar to the programming language A used at Morgan Stanley.
     A which is not commercially available.

     J is very portable and runs on : Acorn Archimedes, AT&T 3B1,
     Apple Macintosh family, Atari ST, DECstation (MIPS-based),
     DEC VAX (ULTRIX & BSD), Interactive 386/ix, IBM RISC/6000,
     IBM PC family, MIPS R3000, NeXT, Philips P9070, Silicon
     Graphics SGI Irix, Sun 3, Sun 386i, Sun 4 (SPARC), and HP95.

     If you are programming in an UNIX environment, you may wish to
     run J under j-interation-mode.el in Emacs. To get this package,
     ftp to "cmns.think.com" and get it at "gnu/dist-18.55/standard".
     If you prefer the feel of vi to Emacs, you can run vip-mode as 
     a minor mode. This will allow you to use vip's command mode to
     use commands such as z z. z- f F 0 ^ G H M etc. to move around
     the buffer and edit and re-execute commands, and to use vip's 
     insertion mode to execute instructions. Not everyone programming
     on a UNIX box takes this approach as some like running J as a 
     process under X.

     If you are programming under WINDOWS on the IBM PC, J you can 
     create graphical user interfaces with windows, buttons, menus, 
     and combo boxes. This is documented in the on-line help. The May
     1993 release will feature full DDE and OBE communication capabilities.
     
     It is possible to call C from J and J from C .
 
2.   Where can I get it?

     "ftp" to watserv1.waterloo.edu

     For an executable version cd to "languages/apl/j/exec/*"

     To look at or compile the source cd to "languages/apl/j/source"

     Sometimes the source has a more recent version. 

     To compile set the variable SYS in js.h for your system.
     Set SYS_DOUBLE to one unless when you enter a numeric vector you
     get a core dump. If this occurs set it to zero and remake.
     A shar file which allows you examine the performance of J on
     your machine is available from rockwell@socrates.umd.edu .
     Generally, J compiles nicely using gcc.

3.   What publications are available ? And how much do they cost ?

     Documentation is available from :

     Iverson Software Inc.
     33 Major Street
     Toronto, Ontario, M5S 2K9
     Phone : (416)-925-6096
     FAX   : (416)-488-7559

     The prices below are in $US. $CDN at par.
     {DISCOUNTS:  50% for 20 or more copies of any one item;
                  25% for 10 or more.
      BOOKSTORES: 50% discount}

     For $24 + postage ($10 North America , $20 Overseas) you get :

       "A Dictionary of J" a comprehensive definitions of commands 
        including a tutorial and ,
       "An Introduction to J" a 45 page adumbration of the language,
        A 3.5 DD inch system diskette of J is also provided.

     Iverson Software Inc. also sells :
 
     "Programming in J" - $15 - A general introduction to programming.
 
     "Calculus" - $25 - This monograph is broader than that found in
     other publications embracing differential, difference, fractional,
     and vector calculus.  

     "An Implementation of J" - $90 - Explanation of the source
     code and information about LinkJ, the utility by which
     C is called from J and J called from C. Contains examples of
     advanced J functional programming.

4.   What are the copyrights?

     Printed Iverson Software documentation is copyrighted. The copyright
     for the source is shown below.

/* ----------------------------------------------------------------------- */
/* J-Source Version 6.2 - COPYRIGHT 1992 Iverson Software Inc.             */
/* 33 Major Street, Toronto, Ontario, Canada, M5S 2K9, (416) 925 6096      */
/*                                                                         */
/* J-Source is provided "as is" without warranty of any kind.              */
/*                                                                         */
/* J-Source Version 6.2 license agreement:  You may use, copy, and         */
/* modify the source.  You have a non-exclusive, royalty-free right        */
/* to redistribute source and executable files.                            */
/* ----------------------------------------------------------------------- */
/*                                                                         */

5.   Is there an instruction set I can peruse?

     Here is a list. If you would like a pretty printed reference card
     of instructions (beautifully implemented in LaTeX by Christopher
     Browne) ftp to "watserv1.waterloo" and cd into "languages/apl/j/help
     /reference.card"
   
     For example, to create the instruction "From" enter "{", to create 
     "Head" enter "{." , and to create "Tail" enter "{:" .      
+---------------------------+------------------------+-----------------------+
| Language Summary          | Iverson Software       |                       |
+---------------------------+------------------------+-----------------------+
|                           |.                       |:                      |
+---------------------------+------------------------+-----------------------+
| = SelfClassify Equal      | IsLocal                |Is(Global)             |
| < Box          LessThan   | Floor       LesserOf   |Decrem       LessOrEq  |
| > Open         LargerThan | Ceiling     LargerOf   |Increm       LargerOrEq|
| _ NegativeSign_Infinity   | Indeterminate          |Infinity               |
| + Conjugate    Plus       | Real_Imag   GCD_Or     |Double       NotOr     |
| * Signum       Times      | Polar       LCM_And    |Square       NotAnd    |
| - Negate       Minus      | Not         Less       |Half         Match     |
| % Reciprocal   Divide     | MatrixInv   MatDivide  |SquareRoot   Root      |
| ^ Exponential  Power      | NatLog      Log        |Power        Chain     |
| $ ShapeOf      Shape      | Suite                  |SelfReference          |
| ~ Evoke        Reflex     | Nub                    |NubSieve     NotEq     |
| | Magnitude    Residue    | Reverse     Rotate     |Transpose              |
| . Dot          DotProduct | Even                   |                       |
| : ExplicitDefinition      | Obverse                |Adverse                |
| , Ravel        AppendItems| RavelItems  Append     |Itemize      Laminate  |
| ; Raze         Link       | Cut                    |WordFormation          |
| # Tally        Copy       | Base2       Base       |Antibase2    Antibase  |
| ! Factorial    OutOf      | Fit_Customize          |Foreign                |
| / Insert       Table      | Oblique     Key        |GradeUp      Sort      |
| \ Prefix       Infix      | Suffix      Outfix     |GradeDown    Sort      |
| [ SameLeft                | Lev                    |                       |
| ] SameRight               | Dex                    |                       |
| { Catalogue    From       | Head        Take       |Tail                   |
| } Amend                   | Behead      Drop       |Curtail                |
| " Rank                    | Do          DoLeftIfErr|Format                 |
| ` Tie_Gerund              |                        |                       |
| @ Atop                    | Agenda                 |At                     |
| & Bond_Compose            | Under_Dual             |Appose                 |
| ? Roll         Deal       |                        |                       |
+----------------------------------------------------------------------------+
|)  label                   a. Alphabet                  A. Atomic Permute   |
|b. Boolean                 c. Characteristic            C. Cyc-Dir * Permute|
|e. RazeIn MemberIn         E. Member of Interval        f. Fix Verb         |
|i. Integers IndexOf        o. PiTimes  Circle           p. Polynomial       |
|x. LeftArgument            y. Right Argument            0: Zero  1: one     |
+----------------------------------------------------------------------------+

6.   What packages are available?

     A graphics package is available for plotting under XWindows.
     E-mail  sam@kalessin.Jpl.Nasa.Gov for details.

     J has been successfully imbedded into Gambit Scheme  by 
     Dennis Neal Holmes (now at IBM) and Dr. John Howland at
     Trinity University.  The resulting language is called
     APROL for Array Processing Lisp. This language is currently
     available on the MAC. Email jhowland@ariel.cs.trinity
     for details.

     A set of programs for the implementation of keyed files
     written my Mike Powell is available.  These routines
     provide the basic components for implemention a relational
     database for your applications.  These routines will
     eventually make their way to the archive at watserv1.
     For now email emclean@sfsuvax1.sfsu.edu for details.

     On going projects include a possible J-LAPACK interface,
     a reference package for LinkJ, and advanced inter-process
     communications for the PC .
