Есть ли в 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) аргумент функции?