【发布时间】:2015-04-02 05:28:44
【问题描述】:
我很难理解这一点。问题:
我有
datatype 'a tree= Leaf of 'a | Node of 'a tree * 'a * 'a tree
我必须使用二进制搜索在其中找到值。这是我的代码。
fun binSearch ((Leaf n), x) = if n=x then true else false
| binSearch ((Node (left, n, right)), x) =
if n=x then true else
if n>x then binSearch (left, x) else
binSearch (right, x)
但我应该用这个签名写函数:
val binSearch : int tree -> int -> bool
我得到了int tree * int -> bool 部分,但我该怎么做'a -> 'b -> 'c
【问题讨论】:
-
路过评论:
if C then true else false是写C的复杂方式。 ;) 同样,if C then true else E只是C orelse E。 -
@AndreasRossberg 所以如果我做对了,
1=1 orelse false返回 true,1=2 orelse false返回 false。如果我写代码而不是false怎么办? -
C orelse false返回的结果与C相同,所以你不会写那个。C1 orelse C2是if C1 then true else C2的缩写。同样,C1 andalso C2是if C1 then C2 else false的缩写。与 C 中的||和&&相同。
标签: sml