Может ли способность обнаруживать циклические списки в Haskell нарушать какие-либо свойства языка?

В Haskell некоторые списки являются циклическими:

ones = 1 : ones

Другие не являются:

nums = [1..]

И тогда есть такие вещи:

more_ones = f 1 where f x = x : f x

Это обозначает то же значение, что иonesи, конечно, это значение является повторяющейся последовательностью. Но сомнительно, представлено ли это в памяти как циклическая структура данных. (Реализация может сделать это, ноэтот ответ объясняет, что «это вряд ли произойдет на практике».)

Предположим, мы берем реализацию на Haskell и взламываем в нее встроенную функциюisCycle :: [a] -> Bool который исследует структурупредставление в памяти аргумента. ВозвращаетсяTrue если список является физически циклическим иFalse если аргумент имеет конечную длину. В противном случае оно не прекратится. (Я представляю, как «взломать», потому что невозможно написать эту функцию на Хаскеле.)

Не нарушит ли существование этой функции какие-либо интересные свойства языка?

Ответы на вопрос(2)

Ваш ответ на вопрос