Currying in Lambda Calculus and OCaml

plutos

_Вечный_Студент_
Мудрец
Сообщения
56
Реакции
557
Вопрос к знатокам OCAML'a. Написал по-английски, потому что многие термины звучат очень коряво и неестественно в переводе и получается какая-то мешанина из русских и английских слов. Но, думаю, что все понятно. ;)

When we define a function like below

# let compose f g x = f(g x) ; ;
val compose : (’a -> ’b) -> (’c -> ’a) -> ’c -> ’b = <fun>


we use functions composition.

We define a function with a name "compose", which takes three parameters: f, g, and x (all of anonymous type) and returns "f" as a function of g and x.

How to interpret the second line, produced by the ocaml interpreter?

Looks like "('a -> 'b)" denotes a function, which takes an anonymous parameter 'a and returns another anonymous value 'b, which is then fed into another function ('c ->'a), etc.

But why does an 'a, the first function's parameter become a return value of the second function?
What is the mapping between a, b, c and f, g, x?
 

mak

Соломенные сандалии
Администратор
Сообщения
410
Реакции
167
OCAML не знаю, но запись нормальная будет такая compose(f, g) (x) = f(g(x))
 
Верх Низ