Auch das geht bei mir nicht, da die URL im Browser decodiert wird (und ich zum url-encoden zu faul warmkesper hat geschrieben:mkesper hat geschrieben:@jerch: Dank des Umlauts musst du die URL von Hand eingeben: Schönfinkeln.Ich mache das immer so: Wort(e) markieren, URL-Knopf drücken und dann in dasCode: Alles auswählen
[url=http://de.wikipedia.org/wiki/Sch%C3%B6nfinkeln]Schönfinkeln[/url]die URL nach dem = reinkopieren.Code: Alles auswählen
[url=]
lambda und Funktionen
Zum offtopic:
).
Mertz ist ja so gut und stellt ein paar (für mich knackige) Zusatzaufgaben (leider ohne Lösungen, auch bei Google bin ich nicht fündig geworden). Unter anderem folgende:
Hier nochmal die Original-Funktionen:
PS: Ich nehme auch Vorschläge mit Lambda...
(soviel zur ursprünglichen Intention)
Kann mir hierzu jemand einen Hinweis geben? Ich hab keinen Schimmer, wie ich das anstellen soll (Rekursion?)...6: Unlike the functions all() and some(), the functions compose() and compose3() take a fixed number of input functions as arguments. Create a generalized composition function that takes a list of input functions, of any length, as an argument.
Hier nochmal die Original-Funktionen:
Code: Alles auswählen
from operator import mul, add, truth
apply_each = lambda fns, args=[]: map(apply, fns, [args]*len(fns))
bools = lambda 1st: map(truth, 1st)
bool_each = lambda fns, args=[]: bools(apply_each(fns, args))
conjoin = lambda fns, args=[]: reduce(mul, bool_each(fns, args))
all = lambda fns: lambda arg, fns=fns: conjoin(fns, (arg,))
both = lambda f,g: all((f,g))
all3 = lambda f,g,h: all((f,g,h))
and_ = lambda f,g: lambda x, f=f, g=g: f(x) and g(x)
disjoin = lambda fns, args=[]: reduce(add, bool_each(fns, args))
some = lambda fns: lambda arg, fns=fns: disjoin(fns, (arg,))
either = lambda f,g: some((f,g))
anyof3 = lambda f,g,h: some((f,g,h))
compose = lambda f,g: lambda x, f=f, g=g: f(g(x))
compose3 = lambda f,g,h: lambda x, f=f, g=g, h=h: f(g(h(x)))
ident = lambda x: x
So ähnlich wie all und conjoin(->reduce)(wobei ich die Aufgabenstellung unschön finde, ich würde eher dazu tendieren keine Liste von Argumenten zu erwarten sondern eine Variable Anzahl an Parametern *fns).Stex hat geschrieben:Kann mir hierzu jemand einen Hinweis geben? Ich hab keinen Schimmer, wie ich das anstellen soll (Rekursion?)...
Code: Alles auswählen
#Lösungsvorschlag(reversed)
)snf + ),gra( ,)x(f :f ,x adbmal(ecuder :gra adbmal :snf adbmal = esopmoc
Darii, danke für den Vorschlag. Ich krieg's zwar noch nicht zum Laufen aber jetzt hab ich zumindest schonmal eine Ahnung, wie es aussehen könnte (Du hast Mertz schon durchgearbeitet?
). Aber ich glaube, ich sollte mir vorerst noch ein paar einfachere Bücher vornehmen - diese Dauermeditationen sind extrem zeitintensiv...
(vielleicht sollte ich auch erst SICP durcharbeiten, aber das ist gewiß nicht einfacher...
)
Die Frage war rhetorisch. Da Du es schon beherrschst: garnichts.
Aber was empfiehlst Du dann, um auf dem Gebiet möglichst schnell sehr gut zu werden? Maximize(zeit_mit_python)? Beschäftigung mit einer "richtigen" funktionalen Sprache? Anderes Buch? Kurs über funktionale Programmierung an der Uni?
Aber was empfiehlst Du dann, um auf dem Gebiet möglichst schnell sehr gut zu werden? Maximize(zeit_mit_python)? Beschäftigung mit einer "richtigen" funktionalen Sprache? Anderes Buch? Kurs über funktionale Programmierung an der Uni?
Learning by doing. Das ist das einzige was hilft.Stex hat geschrieben:Die Frage war rhetorisch. Da Du es schon beherrschst: garnichts.
Aber was empfiehlst Du dann, um auf dem Gebiet möglichst schnell sehr gut zu werden? Maximize(zeit_mit_python)? Beschäftigung mit einer "richtigen" funktionalen Sprache? Anderes Buch? Kurs über funktionale Programmierung an der Uni?
Zumindest eine Buchempfehlung kann ich aussprechen: "Programming F#" von O'Reilly. Gefällt mir bis jetzt (habe erst ein paar Kapitel durch) sehr gut. Der Autor schreibt sehr verständlich und arbeitet mit kompakten eingängigen Beispielen.Stex hat geschrieben:Beschäftigung mit einer "richtigen" funktionalen Sprache? Anderes Buch? Kurs über funktionale Programmierung an der Uni?
Was den Kurs an der Uni betrifft: Wenn der so ist, wie die deutschsprachigen bücher zum Thema - dann spart man es sich besser. Völlig abstrakt und sehr mathematisch orientiert. Das ist der extreme Unterschied zwischen amerikanischen und deutschen Autoren: letztere meinen oft (jedenfalls wenn sie aus dem akademischen Umfeld stammen), dass sie den heiligen Kral der Wissenschaftlichkeit vor sich hertragen müssten - anstatt einfach mal in leicht verständlichen Worten zu erklären worum es geht.
Alternativ kann ich auch noch: http://learnyouahaskell.com/ empfehlen, um einen Einstieg zu finden.
Achtung: User ist ein Python-Lehrling!
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Das wäre machbar, aber fürchterlich inkonsistent. Rechts von einer Zuweisung stehen schließlich Ausdrücke, das "def():" kann aber kein Ausdruck sein.Defnull hat geschrieben:Das wäre durchaus machbar und würde das "Funktionen sind auch nur Objekte" Prinzip konsequenter umsetzen finde ich. Es spart einfach den Umweg über den lokalen Namensraum.Code: Alles auswählen
d = dict() d['func1'] = def(): pass ...
Was syntaktisch möglich wäre, ist
Code: Alles auswählen
def target(args): ...
-
Leonidas
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du könntest theoretisch auch SICP durcharbeiten, jedoch ist der Fokus von SICP nicht funktionale Programmierung, eher Lisp-Magie. Ich hatte keine Zeit das gesamte Buch durchzulesen, habe mir dafür die alten Videos angeschaut - das lohnt sich schon.Ronnie hat geschrieben:Zumindest eine Buchempfehlung kann ich aussprechen: "Programming F#" von O'Reilly. Gefällt mir bis jetzt (habe erst ein paar Kapitel durch) sehr gut. Der Autor schreibt sehr verständlich und arbeitet mit kompakten eingängigen Beispielen.Stex hat geschrieben:Beschäftigung mit einer "richtigen" funktionalen Sprache? Anderes Buch? Kurs über funktionale Programmierung an der Uni?
Aber das hängt auch ab was du machen willst: "Programming Scala" hat etwa ein schönes Einführungskapitel in Funktionale Programmierung, ML for the Working Programmer ist ein brauchbares Einführungsbuch in die ML-Sprachenfamilie.
Kann ich bei unserem Kurs an der Uni nicht bestätigen: da wird halbwegs verständlich erklärt um was es geht (aber das ist abängig vom Professor, denn ein anderer macht es tatsächlich so wie du schreibst - abstrakt und mathematisch orientiert). Der Nachteil ist, dass die Musterlösungen der Hausaufgaben teilweise so dermaßen schlecht und undiomatisch sind dass man sich echt wundert was da für Leute am Werk waren.Ronnie hat geschrieben:Was den Kurs an der Uni betrifft: Wenn der so ist, wie die deutschsprachigen bücher zum Thema - dann spart man es sich besser. Völlig abstrakt und sehr mathematisch orientiert. Das ist der extreme Unterschied zwischen amerikanischen und deutschen Autoren: letztere meinen oft (jedenfalls wenn sie aus dem akademischen Umfeld stammen), dass sie den heiligen Kral der Wissenschaftlichkeit vor sich hertragen müssten - anstatt einfach mal in leicht verständlichen Worten zu erklären worum es geht.
Also falls Interesse besteht: die Vorlesung wird aufgezeichnet und alle Materialien wie Skript und Aufgaben sind öffentlich verfügbar...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Was ist das denn für eine Veranstaltung?Leonidas hat geschrieben:Also falls Interesse besteht: die Vorlesung wird aufgezeichnet und alle Materialien wie Skript und Aufgaben sind öffentlich verfügbar...
@Stex: Was ist denn dein Ziel? Das Lernen einer Funktionalen Sprache? Das Lernen von Python? Oder das lernen der funktionalen Aspekte von Python?
Falls es um ersteres geht, kann ich Haskell und http://book.realworldhaskell.org/ sehr empfehlen. Bei 2&3 sollte die Python Doku greifen, bei 3 insbesondere http://docs.python.org/howto/functional.html
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Danke für die Hinweise!
Meine Erfahrungen mit Uni: Ich komme eigentlich von einer anderen Wissenschaft, nicht Informatik (also Laie), bin aber über die Arbeit zur Programmierung gekommen. Hab dann festgestellt, dass ich da noch verborgene Leidenschaften habe und eigentlich Informatik hätte studieren sollen. Mittlerweile hab ich die Programmierkurse (imperative Programmierung, OOP) von der Fernuni Hagen absolviert und die fand ich von der Qualität schon sehr gut; zumindest haben sie mir mehr gebracht als die meisten Bücher, die ich davor gelesen habe. Aber vermutlich ist es bei Informatik/Programmieren so ähnlich wie in allen anderen Wissenschaften: 99% der Bücher (in "normalen" Buchhandlungen) kann man sowieso vergessen und auf die Perlen müssen einen erst die Eingeweihten (sprich Fachleute) bringen.
Was das Learning by Doing anbelangt: In der Arbeit muss ich mich (leider) überwiegend mit VBA, VB und Sprachen rumschlagen, die die meisten hier garnicht kennen (Quantum, SPSS). Zu Python bin ich über SPSS gekommen, da dieses ab Version 14 integriert wurde und völlig neue Möglichkeiten bietet. Aber sehr viel spielt sich eben im Office-Umfeld ab und da greift man dann doch besser zu VBA. Mehr als fast meine komplette Freizeit zu investieren kann ich nicht
@cofi (gerade aktualisiert): Mein Ziel? *g* Siehe oben - Leidenschaft ausleben; Freak sein; besser werden
Leider hat der Tag nur 24 Stunden und mit dem ganzen Gemisch aus Arbeit (wo ich zuhause auch noch sehr viel mache) und privaten Interessen (Informatik allgemein, Software Engineering, Programierung) wird's immer schwierig, sich nicht zu verzetteln. Bei Wirtz dachte ich mir jetzt mal, dass es sehr brauchbar für die Arbeit wäre, weil wir auch viel mit ASCII-Files machen; aber für seine Herangehensweise brauche ich anscheinend noch mehr Know How über funktionale Programmierung. SICP hab ich zwar seit einem Jahr im Regal stehen, aber - siehe oben (Zeitmangel...
; abgesehen davon kann ich Lisp halt überhaupt nicht in der Arbeit einsetzen. Mich würde ja auch z.B. Bertrand Meyer "Touch of Class" interessieren, aber wenn ich alles durcharbeiten möchte, was mich interessiert, müßte ich 200 werden... 
PS: @Leonidas: Interesse besteht! Hast Du einen Link für mich?
Meine Erfahrungen mit Uni: Ich komme eigentlich von einer anderen Wissenschaft, nicht Informatik (also Laie), bin aber über die Arbeit zur Programmierung gekommen. Hab dann festgestellt, dass ich da noch verborgene Leidenschaften habe und eigentlich Informatik hätte studieren sollen. Mittlerweile hab ich die Programmierkurse (imperative Programmierung, OOP) von der Fernuni Hagen absolviert und die fand ich von der Qualität schon sehr gut; zumindest haben sie mir mehr gebracht als die meisten Bücher, die ich davor gelesen habe. Aber vermutlich ist es bei Informatik/Programmieren so ähnlich wie in allen anderen Wissenschaften: 99% der Bücher (in "normalen" Buchhandlungen) kann man sowieso vergessen und auf die Perlen müssen einen erst die Eingeweihten (sprich Fachleute) bringen.
Was das Learning by Doing anbelangt: In der Arbeit muss ich mich (leider) überwiegend mit VBA, VB und Sprachen rumschlagen, die die meisten hier garnicht kennen (Quantum, SPSS). Zu Python bin ich über SPSS gekommen, da dieses ab Version 14 integriert wurde und völlig neue Möglichkeiten bietet. Aber sehr viel spielt sich eben im Office-Umfeld ab und da greift man dann doch besser zu VBA. Mehr als fast meine komplette Freizeit zu investieren kann ich nicht
@cofi (gerade aktualisiert): Mein Ziel? *g* Siehe oben - Leidenschaft ausleben; Freak sein; besser werden
PS: @Leonidas: Interesse besteht! Hast Du einen Link für mich?
-
Leonidas
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Würde ich nicht so sagen. Ich hatte schon mehrere Vorlesungen die man sich schenken konnte, wenn man in die Übung gegangen ist und sich das Buch angeschaut hat. Ganz besonders "Grundlagen Algorithmen und Datenstrukturen" wo ich eine sehr gute Tutorgruppe erwischt hatte und Introduction to Algorithms als Buch hergenommen habe (das ist übrigens das beste Informatikbuch, dass ich bisher in der Hand hatte, kann ich nur empfehlen).Stex hat geschrieben:Aber vermutlich ist es bei Informatik/Programmieren so ähnlich wie in allen anderen Wissenschaften: 99% der Bücher (in "normalen" Buchhandlungen) kann man sowieso vergessen und auf die Perlen müssen einen erst die Eingeweihten (sprich Fachleute) bringen.
Andererseits muss ich auch zugeben dass ich bisher noch kein gutes OOP-Buch gesehen habe. Jetzt ist das aber sowieso zu spät
Wenn du so herangehen willst, ja. Aber die meisten Perl-Programme die auf Textdateien operieren kommen völlig ohne funktionale Programmierung aus.Stex hat geschrieben:Bei Wirtz dachte ich mir jetzt mal, dass es sehr brauchbar für die Arbeit wäre, weil wir auch viel mit ASCII-Files machen; aber für seine Herangehensweise brauche ich anscheinend noch mehr Know How über funktionale Programmierung.
Warum nicht? Ich kann mir durchaus vorstellen dass man Lisps wie Clojure oder PLT Scheme oder Kawa/SISC durchaus für "real world work" verwenden kann.Stex hat geschrieben:SICP hab ich zwar seit einem Jahr im Regal stehen, aber - siehe oben (Zeitmangel...; abgesehen davon kann ich Lisp halt überhaupt nicht in der Arbeit einsetzen.
Ich denke auch dass mit F# und Scala funktionale Programmierung auch bei mainstream-Programmierung sich langsam etablieren wird, aber das wird natürlich ein langer Weg.
Zu "Touch of Class" konnte ich nicht viele Informationen finden nur eine Einführungsvorlesung an der ETHZ, aber die sieht ziemlich "Standard" aus, so wie an jeder Uni. Was Klassen angeht ist vor allem Smalltalk sehenswert, inzwischen gibt es dafür auch wahnsinnig viele Bücher frei verfügbar.Stex hat geschrieben:Mich würde ja auch z.B. Bertrand Meyer "Touch of Class" interessieren, aber wenn ich alles durcharbeiten möchte, was mich interessiert, müßte ich 200 werden...
Ja, Einführung in die Informatik 2. Dort findest du einen Link zu den Aufzeichnungen (allerdings beschäftigen sich die ersten paar mit Java-Threads, funktionale Sachen kommen etwas später). Dazu noch das Skript von 2007, was aber nach wie vor relevant ist sowie auf der Übungsseite die Tutoraufgaben sowie Hausaufgaben und Lösungen (bessere Hausaufgabenlösungen kann ich dir auch zukommen lassen, aber ich mag das nicht so öffentlich posten, da ich dort noch am arbeiten bin).Stex hat geschrieben:PS: @Leonidas: Interesse besteht! Hast Du einen Link für mich?
Achja, noch ein Tipp: viele der Bücher gibt es in der Bilbilthek der TUM in Garching (Mathe/Informatik und Maschinenbau). Dort kann man sich auch als nicht-Student anmelden und Sachen ausleihen. Nur so als Hinweise, da du ja in München zu wohnen scheinst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Die "Datenstrukturen"-Vorlesung hatte ich mir evtl. für nächstes Semester vorgenommen (oder Datenbanken, hab mich noch nicht entschieden) - danke für die Info zu dem Cormen-Buch!Ganz besonders "Grundlagen Algorithmen und Datenstrukturen" wo ich eine sehr gute Tutorgruppe erwischt hatte und Introduction to Algorithms als Buch hergenommen habe
Von der Herangehensweise hab ich mich nicht festgelegt. Allerdings wollte ich mit Perl nicht auch noch anfangen -> siehe untenWenn du so herangehen willst, ja. Aber die meisten Perl-Programme die auf Textdateien operieren kommen völlig ohne funktionale Programmierung aus.
Theoretisch sicher ja, aber ich muss auch meine Umgebung berücksichtigen. Ich arbeite in einem Umfeld mit reiner Projektarbeit und theoretisch sollte jeder jeden ersetzen können. Ich hab allerdings schon das Problem, dass ich der einzige bin, der sich mit Python wirklich eingehender beschäftigt und dies praktisch verwendet; gibt's dabei Probleme, muss ich einspringen. Ich wäre schon wahnsinnig froh, wenn die Kollegen bei Ihren Programmen die Grundprinzipien der strukturierten Programmierung einhalten würden...Warum nicht? Ich kann mir durchaus vorstellen dass man Lisps wie Clojure oder PLT Scheme oder Kawa/SISC durchaus für "real world work" verwenden kann.
Danke für den Link! Bzgl. Bibliothek schaue ich mal, ob ich bei Gelegenheit nach Garching rauskomme (hätte auch noch einen Ausweis für die StaBi; allerdings bin ich eh einer, der fast alles elektronisch macht/hat
-
Leonidas
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Die Datenabnken-Vorlesung finde ich etwas öde und einseitig. Da gibt es zwar den Teil mit Relationaler Algebra, aber SQL und ER-Modellierung überzeugt mich eher weniger (also von der Theorie ist Relationales Modell ok, aber in der Praxis wenig flexibel). Ich bin sowieso auf dem Weg zu Map/Reduce und NoSQL-Datenbanken bekehrt zu werdenStex hat geschrieben:Die "Datenstrukturen"-Vorlesung hatte ich mir evtl. für nächstes Semester vorgenommen (oder Datenbanken, hab mich noch nicht entschieden) - danke für die Info zu dem Cormen-Buch!
Perl war ja auch nur ein Beispiel dass man auch viel Textverarbeitung nicht-funktional machen kann.Stex hat geschrieben:Von der Herangehensweise hab ich mich nicht festgelegt. Allerdings wollte ich mit Perl nicht auch noch anfangen -> siehe unten
Ich denke die Theorie greift da sowieso etwas kurz. Ich denke kein Projekt sollte so gelöst werden, dass auch die größte Pfeife damit zurechtkommtStex hat geschrieben:Theoretisch sicher ja, aber ich muss auch meine Umgebung berücksichtigen. Ich arbeite in einem Umfeld mit reiner Projektarbeit und theoretisch sollte jeder jeden ersetzen können.
Die StaBi hat nicht so viele interessante Bücher und vorallem kann man nicht zwischen den Regalen rumgehen und auf interessante Dinge stoßenStex hat geschrieben:Danke für den Link! Bzgl. Bibliothek schaue ich mal, ob ich bei Gelegenheit nach Garching rauskomme (hätte auch noch einen Ausweis für die StaBi; allerdings bin ich eh einer, der fast alles elektronisch macht/hat).
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Volle ZustimmungIch denke die Theorie greift da sowieso etwas kurz. Ich denke kein Projekt sollte so gelöst werden, dass auch die größte Pfeife damit zurechtkommt
Ich habe das SICP (in deutsch) hier stehen und es ist auf meiner TODO-Liste. DrScheme ist auch schon installiert. Alles was jetzt noch fehlt sind Zeit und Muße! Das SICP ist halt nix, was man mal so nebenher durchackert - das braucht ein wenig Raum. Allerdings steht da oft das Tageswerk im Weg.Leonidas hat geschrieben:Du könntest theoretisch auch SICP durcharbeiten, jedoch ist der Fokus von SICP nicht funktionale Programmierung, eher Lisp-Magie. Ich hatte keine Zeit das gesamte Buch durchzulesen, habe mir dafür die alten Videos angeschaut - das lohnt sich schon.
Achtung: User ist ein Python-Lehrling!
