[ruby-de] Denkfehler gefunden - und auch die Ursache fuer selbigen...

Wolfgang Nádasi-Donner ruby at wonado.de
Mi Aug 30 23:36:05 JST 2017


Am 30.08.2017 um 15:57 schrieb Norbert Melzer:
> Wolfgang Nádasi-Donner <ruby at wonado.de> schrieb am Mi., 30. Aug. 2017 um
> 15:05 Uhr:
> 
>> Ich habe natürlich einen ganz dicken Denkfehler gemacht, weil ich seit
>> geraumer Zeit daran gewöhnt bin, dass die Auswertung von Aufrufen "lazy"
>> vor sich geht.
>>
> 
> Haskells lazy evaluation (oder auch verzögerte Ausführung) hat damit nichts
> zu tun.
> 
> Sie bedeutet lediglich, dass `upcase "\\1"` nur dann ausgeführt wird, wenn
> es auch zuvor einen Match gab und man das Substitutionspattern benötigt. Um
> tatsächlich den Match mit von `upcase` betroffen zu machen, braucht es in
> Haskell eine Funktion oder ein Lambda das statt des Patterns übergeben wird
> und den Match als Argument entgegennimmt. Also genau wie in Ruby auch.
> 
Ich bin ich implizit davon ausgegangen ausgegangen, dass es so
funktioniert. Ich benutze diese Form der Ersetzung in Ruby nicht,
sondern arbeite mit Blöcken, also Lambdas, weil das expliziter ist.

Aber wie gesagt - hat sich erledigt und dem Urheber der ganzen Frage
kann man nur antworten: nimm einen Block, dann hast Du den Ablauf
explizit unter Kontrolle.

Viele Grüsse, WoNáDo




Mehr Informationen über die Mailingliste ruby-de