【问题标题】:SML function typeSML 函数类型
【发布时间】:2013-10-22 13:55:38
【问题描述】:

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

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

我应该如何阅读这篇文章以及如何创建一个匹配的函数?

我从以下简单代码开始:

fun helper(x,y)=x>y

但是现在我应该有这个方法来返回一个字符串列表,然后是一个字符串。但我似乎在这里遗漏了一些要点。

【问题讨论】:

    标签: sml


    【解决方案1】:

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

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

    例如,在Programming Languages(这似乎是问题的来源)的过程中,有问题的函数应该看起来有点像:

    fun longest_string_helper f xs = ...

    在哪里

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

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

    请注意,函数声明中的参数由空格分隔,而不是在元组模式中。这证明这是一个柯里化函数。您可以在第 3 部分的课程阅读笔记中了解这一点,在另一个闭包成语:柯里化和部分应用程序(第 11 页)下。

    【讨论】:

    • 非常感谢。现在很清楚了。这几乎与我解决了第一部分相似。可能是因为我的困惑:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-16
    • 2016-03-19
    • 2019-11-28
    • 1970-01-01
    • 2020-08-07
    • 2016-05-17
    • 1970-01-01
    相关资源
    最近更新 更多