News for hackers. Stuff that matters.
Re:What's Coming in Python 3.8 by mehrdadn on Wednesday July 17, 2019 @09:38PM (#20465890)
A little off-topic but how does that work? Is 'it' a magic variable referring to the first argument? Never seen magic variables that blend into lambdas like that before... would've expected $1 or something like that.
Re:What's Coming in Python 3.8 by sls on Thursday July 18, 2019 @01:53AM (#20467113)
The idea of anaphoric macros[1] is first found in Paul Graham's "On Lisp"[2] and is based on the linguistic concept of anaphora, an expression whose meaning depends on the meaning of another expression in its context. An anaphor (like "it") is such a referring term.

I think if you like this idea, you will really like the book. Better still, you can download the pdf for free.

[1] https://en.wikipedia.org/wiki/Anaphoric_macro [2] http://www.paulgraham.com/onlisp.html

Re:What's Coming in Python 3.8 by RhodesianHunter on Thursday July 18, 2019 @11:22PM (#20475936)
Inside of any lambda that takes a single parameter you can refer to the parameter as 'it'. If you prefer to name your parameters you can do so as well, it's just slightly more verbose:

  users.asSequence()
    .filter { user -> 
      user.lastName.startsWith("S") 
    }
    .sortedBy { user -> 
      user.lastName 
    }
    .take(3)
Re:What's Coming in Python 3.8 by kragen on Wednesday July 17, 2019 @10:17PM (#20466109)
Yeah, a bit of PG’s Arc influence in the wild.
Re:What's Coming in Python 3.8 by riffraff on Thursday July 18, 2019 @12:12AM (#20466630)
I believe groovy made this popular rather than arc, and it's likely where kotlin's come from, due to being in the java ecosystem.
Re:What's Coming in Python 3.8 by jnordwick on Thursday July 18, 2019 @01:37AM (#20467026)
Most apl deviatives (j, k, q, a) all had implicit arguments for functions that didn't explicitly declare them (up to 3: x, y, and z).

Probably before then too.

Re:What's Coming in Python 3.8 by kragen on Thursday July 18, 2019 @08:29AM (#20469039)
Dyalog APL too, but none of them call the implicit argument "it".
Re:What's Coming in Python 3.8 by kragen on Thursday July 18, 2019 @08:29AM (#20469035)
Groovy is from 2003. PG keynoted PyCon in 2003 talking about his progress on Arc: http://www.paulgraham.com/hundred.html. He had been talking about Arc online for a couple of years at that point, including in particular the convenience of "anaphoric macros" that defined the identifier "it" as an implicit argument.

(He'd also written about that more at length in the 1990s in On Lisp, but many more people became acquainted with his language-design ideas in the 2001–2003 period, thanks to Lightweight Languages and his increasingly popular series of essays.)

Re:What's Coming in Python 3.8 by earthboundkid on Thursday July 18, 2019 @10:11AM (#20469935)
But surely Perl's $_ was way more influential than an obscure PG talk. I was reading PG way back in 2004, and I had never heard of anaphoric macros until now.
Re:What's Coming in Python 3.8 by kragen on Thursday July 18, 2019 @10:19AM (#20470016)
Wait, you think that, in the context of programming language design, a PyCon keynote is an obscure talk? I don't know what to say about that. It might be possible for you to be more wrong, but it would be very challenging.

Anyway, I'm talking specifically about the use of the identifier "it" in Kotlin, not implicitly or contextually defined identifiers in general, which are indeed a much more widespread concept, embracing Perl's $_ and @_, awk's $0 (and for that matter $1 and $fieldnumber and so on), Dyalog APL's α and ω, Smalltalk's "self", C++'s "this", dynamically-scoped variables in general, and for that matter de Bruijn numbering.

Re:What's Coming in Python 3.8 by earthboundkid on Thursday July 25, 2019 @08:59AM (#20524956)
> a PyCon keynote is an obscure talk

Compared to the existence of Perl, yes. Anyone who does any amount of Perl learns that $_ is the implicit argument ("like 'it'") to most functions. It's pretty much one of Perl's main deals. The talk has about 100K views on YouTube, which is pretty good, but Perl is in another league.

Re:What's Coming in Python 3.8 by vorg on Friday July 19, 2019 @07:03PM (#20483150)
Too bad Apache Groovy itself didn't remain popular after popularizing the name "it" for the much older idea of contextually-defined pronouns in programming languages. Using the names of pronouns in English (like "this" and "it") is easier for an English-speaking programmer to understand than symbols like "$1" or "_". But because of Groovy's bad project management, another programming language (Kotlin) is becoming widely known for introducing the "it" name.