простые функции Haskell в стиле point-free

Я пытаюсь понять, как преобразовать функции к бессмысленной нотации в Haskell. Я видел этот пример, но он сложнее, чем то, что я ищу. Мне кажется, что я понимаю логику, но когда я пытаюсь выполнить несколько простых примеров в коде, я получаю ошибки компиляции. Я хочу попробовать написать эту функцию в стиле point-free:

f x = 5 + 8/x, которую я переформулировал как f x = (+) 5 $ (/) 8 x

Итак, я подумал, что это может быть что-то вроде этого:

f = (+) 5 $ (/) 8

но когда я запускаю это в ghci, я получаю следующее сообщение:

No instance for (Num (a0 -> a0))
  arising from the literal `5' at Test.hs:3:9
Possible fix: add an instance declaration for (Num (a0 -> a0))
In the first argument of `(+)', namely `5'
In the first argument of `($)', namely `(+) 5'
In the expression: (+) 5 $ (/) 8
Failed, modules loaded: none.

Я не понимаю сообщения "No instance for...". Что мне нужно сделать, чтобы написать эту функцию в стиле point-free?

11
задан Community 23 May 2017 в 12:14
поделиться