0
(.) :: (b -> c) -> (a -> b) -> a -> c
f . g = \x -> f(g x)

我不太明白如何阅读函数类型。

  • (b -> c)是一个函数接受一个参数 b,返回 c,我假设这是函数 f
  • (a -> b)是一个函数接受一个参数a,返回b,我假设这是函数g

不确定 c in (b -> c ) 和 a in ( a -> b) 与a -> c有何关系

任何帮助将不胜感激,谢谢!

4

1 回答 1

5

多加括号可能会更好,

(.) :: (b -> c) -> (a -> b) -> (a -> c)

并阅读:

(.)接受两个参数,

  • 一个函数 ( f) 类型b -> c
  • 一个函数 ( g) 类型a -> b

并返回一个函数 ( f . g) 类型a -> c

结果函数的参数类型a是 的(.)第二个参数 (的参数类型g,它首先应用于 的参数f . g),组合的结果类型是(.)的第一个参数 (的结果类型f,即然后应用于g参数的应用结果)。

于 2013-02-05T13:59:06.400 回答