如何用英语阅读函数类型

use*_*753 3 f#

let compose f g = fun x -> f (g x)
let mal2 x = 2 * x
let plus1 x = x + 1
let mal2Plus1 = compose plus1 mal2

val compose : ('b -> 'c) -> ('a -> 'b) -> ('a -> 'c)
Run Code Online (Sandbox Code Playgroud)

任何人都可以教我如何阅读撰写的功能类型

Tom*_*cek 7

根据您的使用方式,有多种方法可以读取函数类型.但是如果你以你的例子(compose plus1 mal2)中演示的方式使用它,那么下面的阅读是有意义的:

compose 是一个功能:

  • 接受一个参数'b -> 'c,它本身就是一个知道如何将类型值'b转换为不同类型值的函数'c

  • 采用另一个参数'a -> 'b,它是(再次)一个可以将值'a转换为类型值的函数'b.

给定这两个函数,可以按顺序运行它们 - 如果你有一个值,'a你可以应用第二个函数来获得一个类型的值,'b这个值可以传递给第一个得到的函数'c.这正是compose如此:

  • 结果是一个带有'a和产生的组合函数'c(只能通过将第二个函数'a应用于结果然后将第一个函数应用于结果来完成)