Train: Difference between revisions

Jump to navigation Jump to search
1,601 bytes added ,  16:25, 8 August 2022
History
(→‎References: External links)
(History)
Line 1: Line 1:
A '''train''' is a compound function made up of a series of functions. It's written as an isolated expression (surrounded by parentheses or named) ending in a function. Defined by [[Ken Iverson]] and [[Eugene McDonnell]] in 1988 and added to [[Dyalog APL]] in 2014, trains are considered important for [[tacit programming]] and a characteristic of modern APL.
A '''function train''' is a compound function made up of a series of functions. It's written as an isolated expression (surrounded by parentheses or named) ending in a function. Defined by [[Ken Iverson]] and [[Eugene McDonnell]] in 1988 and added to [[Dyalog APL]] in 2014, trains are considered important for [[tacit programming]] and a characteristic of modern APL.


== Definition ==
== Definition ==
Line 42: Line 42:


No problem presents when left argument is supplied as an array (literal or by name reference) and when the hybrid is the leftmost token. For example, <source lang=apl inline>1 0 1/⌽</source> and <source lang=apl inline>/,⊃</source> are parsed as forks.
No problem presents when left argument is supplied as an array (literal or by name reference) and when the hybrid is the leftmost token. For example, <source lang=apl inline>1 0 1/⌽</source> and <source lang=apl inline>/,⊃</source> are parsed as forks.
== History ==
Function trains were first presented under the name "Phrasal forms" by [[Ken Iverson]] and [[Eugene McDonnell]] in a 1989 paper of the same name. They called the 2-function form a "hook" and the 3-function form a "fork" based on the shapes of the function call diagrams. On the return flight from [[APL88]], Iverson found the idea when he woke up from a nap and then developed it together with McDonnell. The use of syntax for trains followed a long history of attempts to define train-like behavior in terms of operators.<ref>[[Roger Hui]] and [[Morten Kromberg]]. [https://dl.acm.org/doi/abs/10.1145/3386319 ''APL since 1978'']. §3.8 Trains Encore. ACM [[HOPL]] IV. 2020-06.</ref>
Trains as defined in Phrasal Forms were included in the first versions of [[J]] in 1990. They were added to [[NARS2000]] by 2009,<ref>NARS2000 Wiki. [http://wiki.nars2000.org/index.php?title=Trains&oldid=438 Trains]. Old revision: 2009-02-18.</ref> and [[ngn/apl]] had partial support in 2013. [[K]] defined a different and simpler kind of function train based on linear evaluation.
The train definition used in most APL dialects changes the 2-train from a hook to an [[Atop]] in behavior. This change was made in [[Dyalog APL 14.0]] in 2014, under the direction of [[Roger Hui]], who had argued for it by 2006.<ref>[[Roger Hui]]. [https://code.jsoftware.com/wiki/Essays/Hook_Conjunction%3F Hook Conjunction?] J Wiki. First published 2006-05-24.</ref> It now appears in [[APL\iv]], [[dzaima/APL]], [[April]], and [[BQN]], and also matches the function composition featured in [[I]] in 2012.


== External links ==
== External links ==

Navigation menu