News for hackers. Stuff that matters.
Re:Show HN: Python-to-Python compiler for some 3.6 features ... by recursive on Thursday April 27, 2017 @12:09PM (#14212585)
> I like lambda a, b: a + b syntax better than lambda a_b: a_b[0] + a_b[1]

It already works this way.

    Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> add = lambda a, b: a + b
    >>> add(1, 2)
    3
> I prefer map/reduce/filter to return lists rather than iterable

You can produce a list from any iterable by passing it to `list()`. You cannot take a materialized list and make it lazy though.

> I prefer dict.keys/values/items to return sets/lists rather than iterables, unless I call dict.iter[keys/values/items]

Why? Sets are mutable. What happens when you mutate dict.values? It doesn't make sense.

Re:Show HN: Python-to-Python compiler for some 3.6 features ... by Marat_Dukhan on Thursday April 27, 2017 @12:15PM (#14212638)
lambda a, b: a + b kind of works, but you can't call it with tuple argument (which you could in Python 2.7). This hurts when e.g. you have a list of pairs and try to map when via lambda, e.g.: map(lambda a, b: a+b, [(1, 2), (3, 4)]). Even worse, this won't fail right away in Python 3 (thanks, lazy evaluation in map), but will raise when you try to use the result of map
Re:Show HN: Python-to-Python compiler for some 3.6 features ... by ben-schaaf on Thursday April 27, 2017 @01:36PM (#14213298)
That doesn't work in the python 2.7 that I'm running, just like python 3 it complains that I don't have enough arguments.
Re:Show HN: Python-to-Python compiler for some 3.6 features ... by Marat_Dukhan on Thursday April 27, 2017 @01:48PM (#14213383)
Right, needs brackets: lambda (a, b)
Re:Show HN: Python-to-Python compiler for some 3.6 features ... by recursive on Thursday April 27, 2017 @02:38PM (#14213742)
As far as I can tell, you're complaining about one character. This works.

    >>> add = lambda a, b: a + b
    >>> t = (1, 2)
    >>> add(*t)
    3
Is that extra asterisk the problem? Again, if you want a materialized list, pass it to `list()`. Projection failures will raise then.
Re:Show HN: Python-to-Python compiler for some 3.6 features ... by Marat_Dukhan on Thursday April 27, 2017 @12:17PM (#14212649)
Yes, sets are mutable, but if I call dict.keys, I expect to get a copy of keys.