У меня есть список целых чисел на основе букв. Например:Складывание в Haskell с использованием нескольких функций
let charlist = map (ord) "ABCDEF"
charlist
будет выглядеть следующим образом:
[65,66,67,68,69,70]
У меня есть список из трех функций: (+)
, (-)
и (*)
. Список в этом примере выглядит следующим образом
let funclist = [(+), (-), (*)]
Я хочу, чтобы применить функции в порядке между элементами в charlist
(если есть больше «пространства» в charlist
чем есть элементы funclist
, вы начать с начала funclist
) и вычислить окончательное значение слева направо, как в следующем:
s = ((((((65) + 66) - 67) * 68) + 69) - 70)
Я думал об использовании foldl
, б ut foldl
, похоже, работает только с одной функцией. Есть ли другой способ сделать это? Я хотел бы обобщить весь этот процесс в одной функции, если это возможно, хотя это не требование.
Я предлагаю вам попробовать реализовать это с использованием сопоставления шаблонов и явной рекурсии. Когда у вас есть решение, которое работает, еще есть время, чтобы понять, подходит ли он шаблону для функции более высокого порядка, например 'foldl'. – kosmikus
Вы можете использовать 'цикл' для реализации функции, которую вы начинаете с начала« funclist », когда у вас заканчиваются элементы. – kosmikus