hen*_*nry 1 haskell types functional-programming ml
这个问题来自考试.我不知道该怎么做.:-(
问题:给出一个类型为haskell或ml函数的示例
(a - > b) - >(c - > a) - > c - > b
怎么做?
什么有意义的功能可以有类型mystery :: ( a -> b ) -> ( c -> a ) -> c -> b?
让我们看看,有什么可以
mystery f g x
Run Code Online (Sandbox Code Playgroud)
是?
它有三件事可以使用,
x类型的值c,g类型c -> a和功能的功能f类型的功能a -> b.它应该产生一个类型的值b.
唯一与之有关的参数b是函数f,因此结果必须是f ???.
f这里的论点是什么?它必须有类型a,并且从给定的参数(忽略底部undefined,error "foo")生成该类型的值的唯一方法是应用于g某些东西,所以它必须是
mystery f g x = f (g ??)
Run Code Online (Sandbox Code Playgroud)
但什么可以g适用于?那必须是类型的值c.除了底部之外c,可以从参数构造的唯一类型值是x,所以
mystery f g x = f (g x)
Run Code Online (Sandbox Code Playgroud)
必须是函数组合(或未定义).