SML:如果 - >是正确的联想

时间:2015-08-19 22:32:18

标签: functional-programming sml

Ullman的书, ML编程元素,介绍了一个简单版本的地图函数,定义如下:

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) ?

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

我哪里错了?

谢谢!

1 个答案:

答案 0 :(得分:6)

在SML中,类型运算符<div id="comment_container"> <form id="comment_form"> <input class="input line1" id="nameInput" placeholder="Name"> <button id="addCommentButton" class="line1" type="submit">Comment</button> <textarea class="input" id="comment_area" placeholder="Comment here"></textarea> </form> <div id="comments"><span id="loading">Loading comments...</span></div> </div> 的绑定比*更紧密:它具有更高的优先级,就像->在算术中的优先级高于*一样。< / p>

这就是+string * string -> string相同而不是(string * string) -> string的原因。要阅读您的示例,我们需要在string * (string -> string)周围加上括号,然后再担心*如何关联:

->