Influence of J?
Influence of J?
Out of curiosity: How influential has J been on the design of D-{fns, ops}, the inclusion of the power operator (especially limits and inverses) and other functional features of "D"?
Re: Influence of J?
Hard to say; it's very easy to be influenced without realising where the influence originated.
Regarding D-fns: ⍺ and ⍵ have been used informally, to denote left and right argument, for decades. Various forms of direct definition have been proposed, most notably Iverson's in Sharp APL. Guards have been around since the 1960s http://en.wikipedia.org/wiki/Guard_(computing). People have always argued for local-names-by-default. Finally, lexical scope rules, apart from being the modern choice http://en.wikipedia.org/wiki/Scope_(computer_science), fall out nicely with lexically-nested definitions and tail-calling. If pushed, I think the main motivation in the development of D-fns came from an interest in the ideas of mainstream Functional Programming languages, such as Miranda and later Haskell.
The urge to provide function inverses via the power operator was certainly influenced by J (what a challenge!) although I was first aware of both inverse and limit from Bob Smith's work in the original NARS system from the early 1980s. Function limit (or "fixpoint") is also important in FP circles and particularly in the beautiful work from the 1930s, which forms the implementation framework for many FP systems.
Having said this, I would like to add that I for one noticed a huge burst of creativity that happened to coincide :-) with Roger Hui's joining the Dyalog development team. And, of course, the recent experiment with Function Trains is pure J.
Regarding D-fns: ⍺ and ⍵ have been used informally, to denote left and right argument, for decades. Various forms of direct definition have been proposed, most notably Iverson's in Sharp APL. Guards have been around since the 1960s http://en.wikipedia.org/wiki/Guard_(computing). People have always argued for local-names-by-default. Finally, lexical scope rules, apart from being the modern choice http://en.wikipedia.org/wiki/Scope_(computer_science), fall out nicely with lexically-nested definitions and tail-calling. If pushed, I think the main motivation in the development of D-fns came from an interest in the ideas of mainstream Functional Programming languages, such as Miranda and later Haskell.
The urge to provide function inverses via the power operator was certainly influenced by J (what a challenge!) although I was first aware of both inverse and limit from Bob Smith's work in the original NARS system from the early 1980s. Function limit (or "fixpoint") is also important in FP circles and particularly in the beautiful work from the 1930s, which forms the implementation framework for many FP systems.
Having said this, I would like to add that I for one noticed a huge burst of creativity that happened to coincide :-) with Roger Hui's joining the Dyalog development team. And, of course, the recent experiment with Function Trains is pure J.
Re: Influence of J?
Thanks for the clarification, John—interesting to hear that J inspired the implementation of function inverses.
Looking over the literature, I see that direct definitions were discussed (in print) at least as early as 1978 (http://www.jsoftware.com/papers/APLStyle.htm).
My original question was probably overly simplistic; it would have been more sensible to ask about the influence of various APL dialects (J included) on Dyalog.
Looking over the literature, I see that direct definitions were discussed (in print) at least as early as 1978 (http://www.jsoftware.com/papers/APLStyle.htm).
My original question was probably overly simplistic; it would have been more sensible to ask about the influence of various APL dialects (J included) on Dyalog.