Я только что начал изучать Haskell и написал две функции: одну для списков с четными длинами и одну для списков нечетных длин. Это означает, что «четная» функция с [0..7] возвращает [0,7,2,5,4,3,6,1], а «нечетная» функция с [0..8] возвращает [0, 7,2,5,4,3,6,1,8] - это те результаты, которые мне нужны. Однако после много работы я все еще не могу их объединить, так что для обоих списков работает только одна функция. Вот функции, и я задавался вопросом, знают ли более опытные кодировщики Haskell о решении.Определение постоянной величины при начале функции Haskell
funcOdd :: [Int] -> [Int]
funcOdd [] = []
funcOdd (x:xs) = take (n+1) ((x*2) : (pred n - x):funcOdd(xs)) where n = length xs
funcEven :: [Int] -> [Int]
funcEven [] = []
funcEven (x:xs) = take (n+1) ((x*2) : (n - x):funcEven(xs)) where n = length xs
Было бы полезно, если бы вы могли объяснить предполагаемое значение и/или цель этой функции. Это пахнет, может быть, это что-то математическое. Размышление о базовом значении может привести к более простому, более чистому решению, чем к коду. – dfeuer