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
