Jump to content

Category:J: Difference between revisions

529 bytes added ,  11 years ago
Line 59:
 
By themselves, these experiments mean nothing, but if you know that +/ was finding the sum of a list and # was finding the length of a list and that % was dividing the two quantities (and looks almost like one of the classical division symbols) then these experiments might help confirm that you have understood things properly.
 
== Some Perspective ==
 
If you wish to use J you will also have to learn a few grammatical rules (J's parser has [http://www.jsoftware.com/help/dictionary/dicte.htm 9 reduction rules] and "shift" and "accept" - the above examples use four of those rules). J verbs have two definitions - a single argument "monadic" definition and a two argument "dyadic" definition. These terms are borrowed from music and are distinct from Haskell's use of the word "monad". The dyadic definitions are in some sense related to LISP's "cons cell" but are implemented as grammar rather than data structure, and are a pervasive part of the language.
 
Another pervasive feature of the language is [[wp:Rank_(J_programming_language)|rank]].
 
Perhaps also worth noting is that the underlying language concepts are meant to represent the capabilities of hardware. For example, in principle, you could implement and use the language without a stack - this would mean that a word's definition could not be used during the execution of that word. All current J implementations support recursion, but in some sense this is a convenience, and it's reasonable to imagine J implementations which do not (perhaps in a "compile to silicon" implementation).
 
== J on RosettaCode ==
6,962

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.