Die Zukunft von Reduce

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Kurz was anderes, wollte dafür jetzt kein neues Thema eröffnen:

reduce soll mit python3k entfernt werden, richtig? Warum? Ich empfinde es inzwischen als ziemlich nützlich. Oder kann man Dinge, die man mit Reduce machen kann, besser / durchschaubarer mit anderen Dingen machen, und es ist damit praktisch ein "unnützes Spezialwerkzeug"?

Wenn das für ein neues Thema wert genug erscheint, tut's mir leid.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

reduce wird nicht entfernt, sondern nur nach functools verschoben

und ja du hättest dafür ein neues Thema auf machen sollen. Nicht unbedingt weil es das wert wäre sondern weils hier überhaupt nicht zugehört.
BlackJack

@str1442: `reduce()` wird nicht entfernt, sondern nur in ein Modul (`functools`) verschoben. Empfohlene Alternative ist eine explizite ``for``-Schleife. Weil angeblich zu viele Leute zu doof sind `reduce()` zu verstehen. Sagt Guido.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

str1442 hat geschrieben:Kurz was anderes, wollte dafür jetzt kein neues Thema eröffnen:

reduce soll mit python3k entfernt werden, richtig? Warum? Ich empfinde es inzwischen als ziemlich nützlich. Oder kann man Dinge, die man mit Reduce machen kann, besser / durchschaubarer mit anderen Dingen machen, und es ist damit praktisch ein "unnützes Spezialwerkzeug"?

Wenn das für ein neues Thema wert genug erscheint, tut's mir leid.
Naja import reduce from functools ;) Wobei ich es inkonsequent finde reduce zu verbannen und map da zu lassen. Ich tendiere ja eh schon fast dazu ein import * from functools; import * from itertools; in mein Template aufzunehmen..
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

veers hat geschrieben:Ich tendiere ja eh schon fast dazu ein import * from functools; import * from itertools; in mein Template aufzunehmen..
__builtins__ patchen :twisted: Oder, naja, eine funktionale Sprache verwenden ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Ich finds nicht schlecht das sie die Generator Expressions die besser lesbar sind mehr in den Vordergrund bringen. Und Guido meint das reduce auch für ihn kompliziert ist
So now reduce(). This is actually the one I've always hated most, because, apart from a few examples involving + or *, almost every time I see a reduce() call with a non-trivial function argument, I need to grab pen and paper to diagram what's actually being fed into that function before I understand what the reduce() is supposed to do. So in my mind, the applicability of reduce() is pretty much limited to associative operators, and in all other cases it's better to write out the accumulation loop explicitly.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Leonidas hat geschrieben:
veers hat geschrieben:Ich tendiere ja eh schon fast dazu ein import * from functools; import * from itertools; in mein Template aufzunehmen..
__builtins__ patchen :twisted: Oder, naja, eine funktionale Sprache verwenden ;)
Die rein Funktionalen sprachen sind mir dann eben doch zu funktional und meist zu unleserlich ;)
[url=http://29a.ch/]My Website - 29a.ch[/url]
"If privacy is outlawed, only outlaws will have privacy." - Phil Zimmermann
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Code: Alles auswählen

from itertools import *
from functools import *
from functional import *
import operator as op
Und schon ist man gewappnet ;)

Im nachinein kann man die Imports immer noch sortieren :]
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

veers hat geschrieben:Die rein Funktionalen sprachen sind mir dann eben doch zu funktional und meist zu unleserlich ;)
Ich muss ja sagen, dass das Chaining in Scala mir doch durchaus gut gefallen hat, ebenso die Range-Syntax. OCaml hingegen ist typisch-funktional mit konfuser Syntax :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Das Entfernen von `reduce` aus `__builtins__` ist Teil von Googles geheimer Strategie, den Leuten es schwerer zu machen, den Map-Reduce-Algorithmus selbst zu implementieren, was sie (noch) stärker an Google bindet und abhängiger macht. Merke: Giuogle weiß, was gut für dich ist. ;)

Ich find's bedauerlich, denn selbst das eine notwendige import ist lästig.

Stefan
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

`reduce()` habe ich erst kürzlichst benutzt und es macht den Code kürzer, aber zugegeben auch komplizierter zu verstehen. Whatever. Durch den später notwendigen Import würde ich wohl auch eine for-Schleife vorziehen, allerdings hält hier einige auch `from operator import attrgetter, itemgetter` nicht ab ;)

veers hat geschrieben:Ich tendiere ja eh schon fast dazu ein import * from functools; import * from itertools; in mein Template aufzunehmen..
Hab ich was in den Py3K-PEPs übersehen oder kann man jetzt "rückwärts" importieren?


sma:
In other news, das Ding heißt jetzt nicht mehr MapReduce, sondern MapFor ;)
Antworten