Я играю с языком, чтобы начать учиться, и я озадачен своим умом о том, как работает рекурсивное определение.Как работает (co) рекурсивное определение в Haskell?
Например, давайте рассмотрим последовательность треугольных чисел (TN n = sum [1..n]
)
Решение, предложенное было:
triangularNumbers = scanl1 (+) [1..]
До сих пор, так хорошо.
Но решение я придумал было:
triangularNumbers = zipWith (+) [1..] $ 0 : triangularNumbers
Что тоже правильно.
Теперь мой вопрос: как это перевести на более низкую реализацию уровня? Что происходит именно за сценой, когда такое рекурсивное определение выполняется?
Возможно, это было задано и ответили ранее, но поиск «рекурсивного определения» вызывает только вопросы, связанные с рекурсией в алгоритмическом смысле. –
[это] (https://hackhands.com/lazy-evaluation-works-haskell/) может помочь. – Alec
Начните с понимания '[1 ..]'. –