21 --Primitive recursion constructor
22 pr :: ([Int] -> Int) -> ([Int] -> Int) -> ([Int] -> Int)
23 pr f g = \xs 0 -> f xs
24 pr f g = \xs (y+1) -> g xs y ((pr f g) xs y)
Я хочу, чтобы функция, которую эта функция создает, действует по-разному на разных входах, так что она может создать рекурсивную функцию. Как и ожидалось, вышеуказанный код не работает. Как мне сделать что-то вроде сопоставления с образцом, но для создаваемой функции?
Спасибо