Im "Welcome workspace" von Squeak 4.1 lesen wir:
"Squeak 4.1 includes the closure implementation from Cog as a prerequisite for full Cog adoption later. With this implementation Squeak finally has 'full' closures, allowing classic recursive examples ...".
Betrachten wir folgendes Beispiel (Summe der echten Teiler einer Zahl):
teilersumme := [:zahl | |p g s | p := 2. g := zahl // 2. s := 1. [p < g] whileTrue: [ p * g = zahl ifTrue: [s := s + p + g]. p := p + 1. g := zahl // p. ]. "Ende whileTrue" p * p = zahl ifTrue: [s := s + p]. ^s]. "Ende Teilersumme"
ts := teilersumme value: 1024. ts (Strg-P) liefert 1023 (korrekt!)
Aber Transcript show: ts (Strg-D) liefert nichts (das Transcriptfester bleibt leer) - nicht mal eine Fehlermeldung!
Was soll man davon halten? Wer ist hier zuständig? wen (von der internationalen Entwicklergemeinschaft) kann man diesbezüglich ansprechen?
Ratlos
R. Baumann
On 25.07.2010, at 04:21, R. Baumann wrote:
Im "Welcome workspace" von Squeak 4.1 lesen wir:
"Squeak 4.1 includes the closure implementation from Cog as a prerequisite for full Cog adoption later. With this implementation Squeak finally has 'full' closures, allowing classic recursive examples ...".
Betrachten wir folgendes Beispiel (Summe der echten Teiler einer Zahl):
Dieses Beispiel funktioniert auch ohne "full closures", da der Block nicht mehrfach ausgewertet wird.
teilersumme := [:zahl | |p g s | p := 2. g := zahl // 2. s := 1. [p < g] whileTrue: [ p * g = zahl ifTrue: [s := s + p + g]. p := p + 1. g := zahl // p. ]. "Ende whileTrue" p * p = zahl ifTrue: [s := s + p]. ^s]. "Ende Teilersumme"
ts := teilersumme value: 1024. ts (Strg-P) liefert 1023 (korrekt!)
Aber Transcript show: ts (Strg-D) liefert nichts (das Transcriptfester bleibt leer) - nicht mal eine Fehlermeldung!
Was soll man davon halten? Wer ist hier zuständig?
Der Autor des Bespiels - überflüssigerweise wurde ein "non-local return" in den Block eingefügt. Korrekt wäre "s" statt "^s". Das return bewirkt, dass das DoIt an der Stelle abgebrochen wird.
wen (von der internationalen Entwicklergemeinschaft) kann man diesbezüglich ansprechen?
Alle:
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/squeak-dev
- Bert -
Vielen Dank für den Rat - es funktioniert jetzt (auch in Squeak 3.9).
R. B.
squeak-ev@lists.squeakfoundation.org