Есть ли способ в Haskell связать второй аргумент, но не первый из функции без использования лямбда-функций или определения другой "локальной" функции?
Пример. У меня есть двоичная функция вроде:
sub :: Int -> Int -> Int
sub x y = x - y
Теперь, если я хочу связать первый аргумент, я могу сделать это с помощью (sub someExpression):
mapSubFrom5 x = map (sub 5) x
*Main> mapSubFrom5 [1,2,3,4,5]
[4,3,2,1,0]
Это отлично работает, если я хочу привязать первые n аргументов без "пробела".
Если я хочу связать второй аргумент, но не первый, два параметра, о которых я знаю, более подробные:
Либо через другую, локальную, функцию:
mapSub5 x = map sub5 x
where sub5 x = sub x 5
*Main> mapSub5 [1,2,3,4,5]
[-4,-3,-2,-1,0]
Или используя лямбда:
mapSub5 x = map (\x -> sub x 5) x
В то время как обе работают нормально, мне нравится элегантность "sub 5" и интересно, есть ли такой же элегантный способ привязать n-й (n > 1) аргумент функции?