Конечное понимание бесконечного списка

Я набрал в ghci следующее, думая, что произойдет одно из двух :1 )Интерпретатор зависнет, просматривая каждый элемент бесконечного списка в поисках совпадений с предикат; или 2 )через -за -шторы Haskell jujitsu, интерпретатор каким-то образом вычислит, что последовательность заканчивается на 4 и остановится на этом.

[x | x <- [1..],5>x]

Исход 1 был тем, что произошло. Теперь, результат 2 был много просить. Но поскольку человек может доказать, что последовательность заканчивается на 4, может ли существовать способ заставить интерпретатор сделать это? Может ли это быть переписано таким образом, чтобы оно заканчивалось? В самом деле, существует ли когда-либо предикат, который делает конечное включение из бесконечного списка?

16
задан gcbenison 26 April 2012 в 15:18
поделиться