我必须定义此函数的类型配置文件:
compose(f, g, x) = f(g(x))
结果应该如下,但我不明白为什么。
(’a -> ’b) * (’c -> ’a) * ’c -> ’b
答案 0 :(得分:0)
如果您查看r1[qend] < r2[qend]
的定义,首先将compose
(g
)应用于x,这样您就可以从(’c -> ’a)
转到{ {1}}。然后,'c
('a
)会应用于所述f
并返回(’a -> ’b)
,因此整个'a
函数会从'b
转到{{} 1}}。
答案 1 :(得分:0)
推理与您的其他问题几乎相同:How to define the type profile for this function?
a -> c -> e -> f
a = a -> b
和c = c -> d
) - 签名(a -> b) -> (c -> d) -> e -> f
e = c
) - 签名(a -> b) -> (c -> d) -> c -> f)
d = a
) - 签名(a -> b) -> (c -> a) -> c -> f
f = b
) - 签名(a -> b) -> (c -> a) -> c -> b
请在下次尝试自己提供一些推理
编辑:上面的推理是Haskell的结束(问题在开头被标记),对于ML还有一个步骤:*
而不是->
,签名变为(a -> b) * (c -> a) * c -> b