История изменений
Исправление pseudo-cat, (текущая версия) :
Или я тебя как-то не так понял?
я не понял вот это:
iterate f a = [a, f a, f (f a), f (f (f a)),...]
Таким образом, если мы сделаем iterate (map next . filter test) seq (знак $ тут не обязателен, стоит для красоты — он означает просто применение функции к аргументу, но со специальным приоритетом), то получим список, элементами которого будут списки: сначала — сам seq, затем — то, что из него получается, если отфильтровать и применить next, затем — то, что получается из этого той же операцией, и так далее.
то есть a - это начальная последовательность, f a - это последовательность после применения к каждому элементу next и так далее. То есть f имеет тип seq -> seq? Тогда я вроде могу написать так -
// pseudo code data = [7; 1; 5; 4; 10] next x = filter (nx -> |x - nx| <= 3.0) data //--- intervalSortedSeq = concat $ takeWhile (not . null) $ iterate next $ [0] // sortedSeq : [0] @ [1] @ [4] @ [5, 7] @ [10] = [0 1 4 5 7]
И откуда у тебя взялось nx?
это аргумент анонимной функции
(nx -> |x - nx| <= 3.0)
Исходная версия pseudo-cat, :
Или я тебя как-то не так понял?
я не понял вот это:
iterate f a = [a, f a, f (f a), f (f (f a)),...]
Таким образом, если мы сделаем iterate (map next . filter test) seq (знак $ тут не обязателен, стоит для красоты — он означает просто применение функции к аргументу, но со специальным приоритетом), то получим список, элементами которого будут списки: сначала — сам seq, затем — то, что из него получается, если отфильтровать и применить next, затем — то, что получается из этого той же операцией, и так далее.
то есть a - это начальная последовательность, f a - это последовательность после применения к каждому элементу next и так далее. То есть f имеет тип seq -> seq? Тогда я вроде могу написать так -
// pseudo code data = [7; 1; 5; 4; 10] next x = filter (nx -> |x - nx| <= 3.0) data //--- intervalSortedSeq = concat $ takeWhile (not . null) $ iterate next $ [0]
// sortedSeq : [0] @ [1] @ [4] @ [5, 7] @ [10] = [0 1 4 5 7]
И откуда у тебя взялось nx?
это аргумент анонимной функции
(nx -> |x - nx| <= 3.0)