Рассмотрим следующую функцию лямбда в Haskell:Что возвращает следующая функция лямбды в Haskell?
(\x g n -> g (x * n))
Он принимает два параметра: Num
имени x
и функция g
которая принимает Num
имени n
и возвращает что-то другое. Лямбда-функция возвращает другую функцию того же типа, как g
:
(\x g n -> g (x * n)) :: Num a => a -> (a -> t) -> a -> t
То, что я не понимаю, что означает выражение g (x * n)
на самом деле представляют. Для примера рассмотрим следующий случай использования:
((\x g n -> g (x * n)) 2 id)
В этом случае x
является 2
и g
является id
. Однако что такое n
? Что представляет собой g (x * n)
? Путем простой подстановки его можно свести к id (2 * n)
. Это то же самое, что и id . (2 *)
? Если да, то почему бы просто не написать (\x g -> g . (x *))
?
функция принимает * три * параметры. – chirlu