如何阅读运营商。功能类型

时间:2013-02-05 13:56:31

标签: haskell

(.) :: (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 )和in( a - > b)是如何与 a - > C

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

1 个答案:

答案 0 :(得分:5)

或许最好再加上括号,

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

并阅读:

(.)有两个参数,

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

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

结果函数的参数类型a(.)的第二个参数(g的参数的类型,它首先应用于{{1}的参数}),并且组合的结果类型是f . g的第一个参数((.)的结果类型,然后将其应用于f的应用结果到参数)。