Ich habe Probleme mit der folgenden Passage aus Learn You A Haskell (Großartiges Buch imo, ohne es zu dissen):
Ein großer Unterschied ist, dass rechte Falten auf unendlichen Listen funktionieren, linke nicht! Um es klar auszudrücken: Wenn Sie irgendwann eine unendliche Liste nehmen und sie von rechts zusammenfalten, erreichen Sie schließlich den Anfang der Liste. Wenn Sie jedoch an einem Punkt eine unendliche Liste nehmen und versuchen, sie von links zusammenzufalten, werden Sie niemals ein Ende erreichen!
Ich verstehe das einfach nicht. Wenn Sie eine unendliche Liste nehmen und versuchen, sie von rechts zusammenzufalten, müssen Sie an der Stelle im Unendlichen beginnen, was einfach nicht geschieht (Wenn jemand eine Sprache kennt, in der Sie dies tun können, sagen Sie: p ). Zumindest müssten Sie dort gemäß der Implementierung von Haskell beginnen, da in Haskell foldr und foldl kein Argument verwenden, das bestimmt, wo in der Liste sie mit dem Falten beginnen sollen.
Ich würde dem Zitat zustimmen, wenn foldr und foldl Argumente verwendet haben, die bestimmt haben, wo in der Liste sie mit dem Falten beginnen sollen, da es sinnvoll ist, wenn Sie eine unendliche Liste nehmen und direkt von einem definierten Index aus falten, wird sie schließlich enden, während dies nicht der Fall ist Es spielt keine Rolle, wo Sie mit einer linken Falte beginnen. Sie werden in Richtung Unendlichkeit falten. Foldr und Foldl nehmen dieses Argument jedoch nicht an, und daher macht das Zitat keinen Sinn. In Haskell wird sowohl eine linke als auch eine rechte Falte über eine unendliche Liste nicht beendet .
Ist mein Verständnis richtig oder fehlt mir etwas?