That's the one I remember from college. Not sure how it should be extended to arrays like J does. But "operator" is the one who's definition that goes all over the place.
On Thu, Nov 23, 2017 at 3:17 PM, Raul Miller <[email protected]> wrote: > When I was in college, I was taught that a function is a relation > between domain and range where each item in the domain corresponds to > exactly one item in the range. > > (Some people call domain "input" and range "output".) > > Thanks, > > -- > Raul > > > On Thu, Nov 23, 2017 at 3:31 PM, Don Guinn <[email protected]> wrote: > > Years ago got involved with what functions and operators are. I don't > > remember them being defined when I was in school. Teachers just started > > using the names. So, I got hold of several textbooks from early > elementary > > school to college looking for definitions. Never found one. Googled it. > > Lots more than I ever wanted to know. > > > > On Thu, Nov 23, 2017 at 1:17 PM, Raul Miller <[email protected]> > wrote: > > > >> Note that verbs, adverbs and conjunctions are all functions. This > >> includes both the primitive, derived tacit and explicit variants. > >> Also, gerunds represent functions. > >> > >> That said, the definition of a first class citizen at > >> https://en.wikipedia.org/wiki/First-class_citizen seems hostile to > >> some concepts of pure functional languages. In particular, the > >> requirement that first class citizens be "modifiable". So I'd be a bit > >> hesitant to rely on that conception. > >> > >> Thanks, > >> > >> -- > >> Raul > >> > >> On Thu, Nov 23, 2017 at 10:25 AM, Erling Hellenäs > >> <[email protected]> wrote: > >> > Hi all! > >> > > >> > https://en.wikipedia.org/wiki/Scope_(computer_science)# > >> Lexical_scope_vs._dynamic_scope > >> > > >> > AddScan =: 3 : 0 > >> > add=.4 : 'x + y' > >> > add/\y > >> > ) > >> > AddScan 2 3 4 > >> > 2 5 9 > >> > > >> > I don't understand how your example shows lexically scoped functions, > >> but as > >> > far as I understand, "add" in the example above is an explicit > >> definition of > >> > a lexically scoped function. > >> > > >> > I don't think functions are first class citizens in J according to > this > >> > definition. https://en.wikipedia.org/wiki/First-class_citizen > >> > > >> > Functions can not return functions. They can take functions as > arguments, > >> > but resolution is normally done in some pre-interpretation stage, like > >> with > >> > macros in other languages. > >> > > >> > There are ways in explicit code to establish functions from from ascii > >> > representation in runtime. Here is an example: > >> > > >> > Scan =: 3 : 0 > >> > a=.1!:1 [1 > >> > f=. a 5!:0 > >> > f/\y > >> > ) > >> > Scan 2 3 4 > >> > * > >> > 2 6 24 > >> > Scan 2 3 4 > >> > + > >> > 2 5 9 > >> > > >> > This function establishes a function from terminal ascii input. > >> > > >> > So, with explicit code you can manipulate ascii representations of > >> functions > >> > and create new functions at what is similar to "runtime". You can pass > >> these > >> > ascii representations as variables. The functions you create can be > used > >> as > >> > parameters to functions, as the example shows. > >> > > >> > Cheers, > >> > > >> > Erling Hellenäs > >> > > >> > > >> > Den 2017-11-21 kl. 19:56, skrev Alex Shroyer: > >> >> > >> >> @AndrewD: I've been using J casually for about 2 years, and consider > >> >> myself > >> >> an "intermediate beginner". I also use Python, and my impression is > >> that > >> >> Python makes it easy to see what the author *wanted* the program to > do, > >> >> but > >> >> J makes it easier to see what the program *actually does*. > >> >> > >> >> However, one frustration I still have is regarding explicit > definitions. > >> >> IMO they should be replaced with something more like what the K > language > >> >> provides, namely first-class, lexically-scoped functions: > >> >> > >> >> add: {x+y} > >> >> scan: {x\y} > >> >> scan [add; 2 3 4] > >> >> 2 5 9 > >> >> > >> >> Perhaps J's syntax could be extended someday, to recognize this type > of > >> >> function in an explicit definition, for example: > >> >> > >> >> add =: dyad def 'x+y' > >> >> scan =: HOF def 'x\y' NB. in this scheme, HOF stands for > >> >> 'higher-order > >> >> function' and tells interpreter to not evaluate x or y until both > >> >> arguments > >> >> are bound > >> >> add scan 2 3 4 > >> >> 2 5 9 > >> >> > >> >> There are a few other things I'd like J to take from K, but that's > the > >> big > >> >> one. > >> >> > >> >> On Mon, Nov 20, 2017 at 11:16 AM, chris burke <[email protected]> > >> >> wrote: > >> >> > >> >>> Dear All > >> >>> > >> >>> My attempt to move this thread over to programming failed, but > please > >> >>> note > >> >>> for future use that discussions like this on the language are much > >> better > >> >>> addressed to the programming forum. Not least, they will then reach > >> all J > >> >>> forum readers, not just those subscribed to general. See > http://code. > >> >>> jsoftware.com/wiki/System/Forums . > >> >>> > >> >>> Thanks. > >> >>> > >> >>> Chris > >> >>> ------------------------------------------------------------ > ---------- > >> >>> 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/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
