Хорошо, в принципе, у меня проблема с пониманием того, применяется ли вариант 1 или 2 в следующем случае:
naturals = 0 : map (+ 1) naturals
Где есть варианты:
1. Исполнение ужасное, все пересчитывается на каждом шаге:
naturals = [0]
naturals' = 0:map (+ 1) [0] // == [0, 1]
naturals'' = 0:map (+ 1) [0, 1] // == [0, 1, 2]
naturals''' = 0:map (+ 1) [0, 1, 2] // == [0, 1, 2, 3]
naturals'''' = 0:map (+ 1) [0, 1, 2, 3] // == [0, 1, 2, 3, 4]
2. Выполнение не ужасное, список всегда бесконечен и map
применяется только один раз
naturals = 0:something
|
naturals' = 0: map (+ 1) (0: something)
|
naturals'' = 0:1: map (+ 1) (0:1: something')
|
naturals''' = 0:1:2: map (+ 1) (0:1:2: something'')
|
naturals'''' = 0:1:2:3:map (+ 1) (0:1:2:3:something''')
с |
, указывающим, где map
находится в его выполнении.
Я знаю, что ответы могут быть только 1 или 2 , но я был бы признателен за некоторые указатели на хорошие объяснения со -рекурсии, чтобы развеять последние сомнения :)
-. ] 121 ---933633-
Я разрабатываю приложение QuiZ. Ему нужен таймер обратного отсчета. Я хочу запустить таймер на 75 :00,00 (мм :сс.СС )и уменьшить его до 00 :00,00 (мм :сс.SS ), уменьшив 1 миллисекунду. Я хочу отображать предупреждение о том, что Time UP! когда время достигает 00 :00,00 (мм :сс.СС ).
Время отображается по ссылке ниже.
Секундомер, использующий NSTimer, неправильно отображает время паузы