Без использования импортированного кода (я могу использовать голову, tail
, init
, last
, filter
, map
, fold
, .
, обычноосновные функции haskell) Я хочу создать функцию высшего порядка int, типа hof :: [Integer->Integer]->(Integer->Integer)
, с hof s = \n ->....
(используя лямбду), которая реализует следующую математическую формулу
(извините, это написано от руки)
Нужны некоторые базовые рекомендации для запуска, я думал о том, чтобы каждый раз выполнять рекурсивный вызов функции hof, которая сама должна реализовывать измененную математическую формулу (которую я дал), подходящуюдля рекурсивных хвостовых вызовов.
некоторые результаты, которые должны быть получены:
Main> map (hof [(+1)]) [1..10]
[2,3,4,5,6,7,8,9,10,11]
Main> map (hof [(+1),(+2)]) [1..10]
[3,4,6,7,9,10,12,13,15,16]
Main> map (hof [(2^),(2^),(2^),(2^),(2^)]) [5..12]
[42,85,170,341,682,1364,2728,5456]
Main> map (hof [(*2),(+100),(^3),negate,(mod 100)]) [24..40]
[2768,3151,3567,4020,4509,5038,5609,6221,6876,7575,8322,9117,9960,10855,11805,
12806,13863]
Main> map (hof [(mod 100),negate,(+100),(^3),(*2)]) [24..40]
[1181,1351,1562,1767,1989,2230,2490,2771,3071,3395,3774,4145,4539,4958,5402,5873,6369]
Main> map (hof [(‘mod‘ i) | i<-[50..100] ]) [1000..1030]
[23,24,27,28,30,32,35,36,39,40,37,38,40,41,44,45,47,48,52,53,55,31,33,35,37,39,42,
45,46,48,47]
Спасибо за чтение!