это тип.)

ю, что если бы я вычислил список квадратов в Хаскеле, я мог бы сделать это:

squares = [ x ** 2 | x <- [1 ..] ]

Затем, когда я называю квадраты, как это:

print $ take 4 squares

И это распечатало бы [1.0, 4.0, 9.0, 16.0]. Это оценивается как [1 ** 2, 2 ** 2, 3 ** 2, 4 ** 2]. Теперь, поскольку Haskell функционален и результат будет одинаковым каждый раз, если бы мне пришлось снова вызывать квадраты где-нибудь еще, пересмотрел бы ли он уже вычисленные ответы? Если бы я использовал повторно квадраты после того, как уже назвал предыдущую строку, будет ли он пересчитывать первые 4 значения?

print $ take 5 squares

Будет ли он оценивать [1,0, 4,0, 9,0, 16,0, 5 ** 2]?

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

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