gpt4 book ai didi

functional-programming - SML:如果 -> 是右结合的

转载 作者:行者123 更新时间:2023-12-02 00:58:11 25 4
gpt4 key购买 nike

Ullman 的书ML Programming介绍了一个简单版本的 map 函数,定义如下:

fun simpleMap(F, nil) = nil
| simpleMap(F, x::xs) = F(x)::simpleMap(F, xs);

val map = fn : ('a -> 'b) * 'a list -> 'b list

鉴于 -> 是右结合的,你不会像这样加上括号吗:

('a -> 'b) * ('a list -> 'b list) ?

但这是不正确的,因为域类型是由函数和列表组成的元组,而范围类型只是一个列表。

我哪里错了?

谢谢!

最佳答案

在 SML 中,类型运算符 *-> 绑定(bind)得更紧密:它具有更高的优先级,就像 * 具有更高的优先级一样在算术上比+

这就是为什么 string * string -> string(string * string) -> string 而不是 string * (string -> string )。要阅读您的示例,我们需要在 * 周围加上括号,然后再担心 -> 关联方式:

(('a -> 'b) * 'a list) -> 'b list

关于functional-programming - SML:如果 -> 是右结合的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32106720/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com