[Python-ideas] Another way to avoid clumsy lambdas, while adding new functionality

David Mertz mertz at gnosis.cx
Wed Mar 5 02:23:13 CET 2014


On Tue, Mar 4, 2014 at 4:06 PM, Cameron Simpson <cs at zip.com.au> wrote:

> On 04Mar2014 17:57, Ryan Gonzalez <rymg19 at gmail.com> wrote:
> > Only problem is that it looks a tad perlish...Of shellish.
>
> But worse, does nothing even remotely loke what that does in perl
> or shell (or basic or...).
>
> I was going to remark that in my mind I would always see:
>
>   a = $foo + 1
>
> and (1) mentally bind the "$" to "foo" alone, not treat it as a
> prefix to the whole expression and (2) expect "a" to evaluate right
> now, regardess.
>

I think I could be +0 for a bit different spelling that *is* actually
shell-ish.  I.e. as a way to handle snippets, this doesn't seem so bad:

  foo = 1
  a = $(foo + 1)
  b = eval(a) * 6
  c = $(foo + a/2)
  print(c, eval(c))
  # <thunk object at NNNN> 2
  print(a + 1)
  # TypeError, incompatible types for '+' operation, thunk and int

That is, the whole "thunk" or really just "code-snippet" could be a
shorthand way to refer to a segment of (dynamically scoped, basically) code
we might use in different places.  It's a lot like Ruby blocks, of course,
but the difference is that it's not only in the final position of a call,
but anywhere anything might be used or passed.

On the other hand, this isn't *really* different from just putting snippets
in strings like we can do now.  The one difference I envision is that maybe
these "thunks" would be completely resolved by an eval(), unlike a string.
 That is, 'c' is a thunk, but it's a thunk that contains another thunk.  So
the eval() function becomes a recursive-unthunk.

 Well, maybe I'm -0 rather than +0.  I'm definitely -1 on the "thunks taint
all expressions" approach suggested initially, which seems far too magical
and implicit.

-- 
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons.  Intellectual property is
to the 21st century what the slave trade was to the 16th.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20140304/a8d49d75/attachment.html>


More information about the Python-ideas mailing list