SML功能类型

JMa*_*Man 1 sml

我很难理解我需要创建的某个SML函数的类型.

它是一个辅助函数,应该从字符串列表中返回最长的字符串.类型应该是:(int * int -> bool) -> string list -> string

我应该怎么读这个,如何创建一个匹配的功能?

我开始遵循简单的代码:

fun helper(x,y)=x>y
Run Code Online (Sandbox Code Playgroud)

但是现在我应该让这个方法返回一个字符串列表然后返回一个字符串.但我似乎在这里遗漏了一些观点.

Edw*_*rzo 5

这是一个curried函数的签名: (int * int -> bool) -> string list -> string

  • (int * int -> bool):这是第一个参数,它是一个接收两个整数的元组并返回一个布尔值的函数.看起来像一个谓词函数.
  • string list:这是第二个参数,一个字符串列表
  • string:这是你的函数的结果类型.

例如,在编程语言(这似乎是问题的来源)的过程中,有问题的功能应该看起来像:

fun longest_string_helper f xs = ...

哪里

  • f 是类型的函数值 (int * int -> bool)
  • xs 是类型的列表值 string list

当然,该函数返回一个string值.

请注意,函数声明中的参数由空格分隔,而不是在元组模式中.这证明这是一个有条理的功能.您可以在阅读第3部分的课程中阅读相关内容,在另一个封闭成语:Currying和Partial Application(第11页)下.