Как это кажется домашнее задание упражнения я буду только дать некоторые советы:
Записывают упрощенный тип подписи для вашей функции в файле myfile.hs
module MyFile where
evalPolynomial :: Int -> [Int] -> Int
evalPolynomial x coeffs = undefined
в качестве альтернативы вы можете написать оценка
a_0 + a_1*x + a_2*x^2 + .... + a_n*x^n ==
a_0 + x*(a_1 + x*(a_2 + x*(...(x*(a_(n-1) + x * (a_n))...)))
второй является al готовый к работе как fold
.
Одна вещи, чтобы следить чтение документации - в последнее время типа подпись foldX
была изменена на более общую версию, так что посмотрят на base-4.7.0.2/Data.List вместо base-4.8.0.0/Data.List или новее, если вы запутались.
загрузить файл в GHCI и посмотреть погоду он работает
удалить тип подписи evalPoly
и загрузите файл снова в GHCi
$ > ghci myfile.hs
MyFile*> :type evalPoly
evalPoly :: Num a => a -> [a] -> a
и добавить, что в файл вместо упрощенной версии. последний шаг делает вашу функцию полиморфные, то есть, то вы можете использовать его с Double
, Int
, Integer
и все типы, которые являются экземплярами Num
класса (думаю, что-то вроде Java интерфейсов - если вы больше знакомы с этим)
так как это выглядит как упражнение/домашнее задание: что вы пробовали? – Carsten
, так что это явно не использует сгиб, но у него есть основные идеи, которые вам нужны: 'let poly x as = sum $ zipWith (*) (итерация (* x) 1) как' - так что вы можете сами думать о решении или выполните поиск документации по вышеприведенным частям и попытайтесь выяснить, как это реализовать со сгибом;) - вы узнаете в любом случае – Carsten