Например, у меня есть таблица tab = [(1,11), (2,22), (3,33)]
и две функции. Первый будет принимать в качестве параметра таблицу и целое число и заменит целое число на значение из таблицы. Предположим, что Integer будет на столе.Можно ли написать любую функцию без явных параметров в Haskell?
replace :: [(Int, Int)] -> Int -> Int
replace t i = snd $ head [x | x <- t, fst x == i]
Вторая функция заменит все вхождения 1, 2, 3
из списка со значениями из таблицы.
replaceAll :: [(Int, Int)] -> [Int] -> [Int]
Сначала я получил:
replaceAll = \tab lst -> foldl(\acc x -> acC++ [replace tab x]) [] lst
тогда
replaceAll = \tab -> foldl(\acc x -> acC++ [replace tab x]) []
Есть ли способ, чтобы написать это без лямбда-функции? РЕДАКТИРОВАНИЕ: Не нужно использовать функцию сгиба.
Вы действительно не хотите [pointfree version этого кода] (http://pointfree.io/): 'replaceAll = flip foldl ([]). flip ((.). (++)). flip flip ([]). ((:).). replace' – Zeta