Я пытаюсь создать последовательность дат, разделенных через регулярные промежутки времени, например, начиная с этого момента, я хочу, чтобы произвести список:Как выразить интервалы времени в Haskell?
[now, now + 10 minutes, now + 20 minutes, now + 30 minutes, ...]
Моя функция будет основываться на iterate
и имеют два аргумента, start
и interval
, но какие типы этих аргументов должны быть? Я блуждал по библиотеке и вики, но безуспешно. Кажется, что рекомендуемый способ кодирования времени - использовать UTCTime
от Data.Time.Clock
, а рекомендуемый способ кодирования разницы во времени - NominalDiffTime
, но как мне создать номинальную разницу во времени за один день? Например?
Похоже, что time-lens
пакета предоставляет способы сделать это, но, насколько я знаю линза способ улучшить выразительность, я был бы удивлен, если с помощью линз была единственным способом решить эту проблему
Это было запутанным для меня тоже. Обратите внимание, что 'NominalDiffTime' является экземпляром' Num', что означает, что он поддерживает числовые литералы. Например. '1 :: NominalDiffTime'. Не уверен, что это значит, но это, вероятно, достаточно, чтобы вы начали. – luqui
Спасибо. Правильно, если я ошибаюсь: это не видно в документации [сгенерированной Haddock] (http://hackage.haskell.org/package/time-1.2.0.3/docs/Data-Time-Clock.html#t:NominalDiffTime), поэтому нужно посмотреть на источник, верно? – danza
@danza В документации для типа он перечисляет классы, это экземпляр, включая 'Num', поэтому эта информация действительно находится в сгенерированных пикшах. В письменной документации также написано: «Функции преобразования будут обрабатывать ее как секунды». –