【发布时间】:2016-09-08 14:58:57
【问题描述】:
在下面的 sn-p 中,我不明白为什么我必须像函数 foo 那样编写 f 和 g,以及为什么它不能像函数 bar 那样工作。
let f a b = a,b
let g (a : 'a) (b : 'a) = a
let (>!) f1 f2 =
fun a b ->
let (x,y) = f1 a b
f2 x y
let foo = fun a b -> (f >! g) a b
let bar = f >! g
谁能向我解释一下,为什么bar 不起作用?鉴于 foo 也有泛型类型,这对我来说毫无意义。
【问题讨论】:
-
您添加了一个限制,即 g 的参数具有相同的类型,而
f接受两种不同的类型 -
@PanagiotisKanavos 没有
g的args 上的注释,推断的类型是'a -> 'b -> 'a。所以我不明白为什么会改变事情,因为现在是'a -> 'a -> 'a。
标签: f#