zerm schrieb:
ies vielleicht einmal etwas Einführendes
*lol*
zerm schrieb:
ies vielleicht einmal etwas Einführendes
zerm schrieb:
Das liegt wahrscheinlich daran, dass Blocks keine Closures sind.
mattik schrieb:
zerm schrieb:
Das liegt wahrscheinlich daran, dass Blocks keine Closures sind.
Das ist ja mal spannend. Warum sind Blocks keine Closures? In meiner einführenden Literatur steht das nirgendwo.
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Amin Negm-Awad ()
In computer science, a closure is a first-class function with free variables that are bound in the lexical environment
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von zerm ()
Amin Negm-Awad schrieb:
Nein, sie müssen es nicht zwangsläufig.
Übrigens wird auch ohne __block eine Bondung erzielt.
Halten wir fest: Es erfolgt eine Bindung, unabhängig von __block. Jeder Block bindet, sobald er sich auf $irgendwas außerhalb seines Scopes biezieht. Damit ist es ein Closure.
Schreib doch einfach mal deine Definition in drei, vier Begriffen untereinander und sage mir, was ein Block davon nicht erfüllt. Ist doch ganz einfach, oder?
mattik schrieb:
Genau. Außerdem: Die Menge der upvalues einer Closure kann nichtleer sein, muss sie aber nicht. Eine Closure ohne upvalues ist eine Closure ohne upvalues.

mattik schrieb:
Genau. Außerdem: Die Menge der upvalues einer Closure kann nichtleer sein, muss sie aber nicht. Eine Closure ohne upvalues ist eine Closure ohne upvalues.
zerm schrieb:
mattik schrieb:
Genau. Außerdem: Die Menge der upvalues einer Closure kann nichtleer sein, muss sie aber nicht. Eine Closure ohne upvalues ist eine Closure ohne upvalues.
Nein, dann ist es keine Closure mehr
Oder dann ist
auch eine.
Amin Negm-Awad schrieb:
Nein, du diskutierst den grenzwertigen Fall. Du hast ihn überhaupt ins Spiel gebracht.
Gib mir einfach eine Definition und sage mir, an welchem Merkmal es scheitert.
Amin Negm-Awad schrieb:
Funktionen ergeben nur Sinn, wenn sie Anweisungen enthalten.
Blablablablablablabla
mattik schrieb:
Ist doch alles Käse, ääh, Wurst. Wenn ich mit Menschen rede, die ein Grundverständnis von dem Thema haben, ist die Diskussion um die Wortwahl "Blocks sind Closures" oder "Blocks ermöglichen Closures" oder "Blocks ist das Sprachkonstrukt, das das Closure-Konzept implementiert" hinfällig. Das ist insofern klar, als dass eine Closure ein Konzept ist, das mit programmiersprachlichen Mitteln realisiert wird. Darüber muss und will ich aber nicht diskutieren, weil es a) selbstverständlich, b) klar, c) albern und d) haarspalterisch ist. Ich habe nichts gegen Haarspalterei, aber dann doch bitte zu einem Thema, das des Haarespaltens wert ist. Ich hatte jedenfalls das Gefühl, dass Amin und ich über das gleiche geredet haben (und glaub' mir: das tun wir nicht immer).
mattik schrieb:
Was ich mit diesem Hintergrund nicht verstehe, ist die Aussage "Blocks sind keine Closures". Blocks setzen Closures um wie in vielen anderen Sprachen auch. Ich kenne keine Sprache, die meckert, wenn ich in einem entsprechenden Konstrukt nicht mindestens einen Upvalue verwende. Sicherlich: Eine Closure ohne Upvalues ist ein besonderer Fall, genauso wie die leere Menge eine besondere Menge ist. Oder eine leere Anweisung oder die Identitätsfunktion. Trotzdem gehören sie dazu. Und es ändert nichts an der Sache.