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) ?
但这是不正确的,因为域类型是由函数和列表组成的元组,范围类型只是一个列表。
我哪里错了?
谢谢!
答案 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)
周围加上括号,然后再担心*
如何关联:
->