ocaml定义函数';a->';B

ocaml定义函数';a->';B,ocaml,Ocaml,我的任务是定义两个函数,一个是类型: ('a-> 'b) -> ('c -> 'a) -> 'c -> 'b 还有第二个,只有一个 'a -> 'b 第一个功能是合成,我是这样做的: let compose f g arg = f(g(arg)) 我被第二个卡住了。谁能告诉我正确的答案?我做了这个: let a x = List.hd [] 但是我很确定还有更简单的例子。第一个函数不是curry,而是函数组合。咖喱的类型为('a*'b->'c)->'

我的任务是定义两个函数,一个是类型:

 ('a-> 'b) -> ('c -> 'a) -> 'c -> 'b
还有第二个,只有一个

'a -> 'b
第一个功能是合成,我是这样做的:

let compose f g arg = f(g(arg))
我被第二个卡住了。谁能告诉我正确的答案?我做了这个:

let a x = List.hd []

但是我很确定还有更简单的例子。

第一个函数不是curry,而是函数组合。咖喱的类型为
('a*'b->'c)->'a->'b->'c

您对
'a->'b
的解决方案非常好。请注意,
List.hd[]
引发异常。因此,另一个实现是:

let f x = raise Not_found

需要认识到的是,任何“nice”函数都不可能具有给定的类型。它从哪里得到返回的
'b
类型的实际值?它必须是一个可以有任何类型的值。

编辑了我的帖子以更正“咖喱”错误。谢谢你的回答。
让rec fx=fx
:-)没错,是的。不是一个好函数:-)