datatype inttree = Empty | Node of int * inttree * inttree
fun insert(t,i)= if t=Empty then Node(i,Empty,Empty)
else if t=Node(j,l,r):
if (i=j)
then t
else if (i < j)
then Node(j,insert l i,r)
else Node(j,l,insert r i)
语法错误
stdIn:8.7-19.4 Error: syntax error: deleting ELSE ID stdIn:25.15-25.25 Error: syntax error: deleting FUN ID stdIn:25.32-25.36 Error: syntax error: deleting IF ID
答案 0 :(得分:3)
哦,SML错误消息的快乐。
我会回避你的语法错误(参见Gabe的回答)并提出一个不同的解决方案。
使用模式匹配解决这个问题更容易(和惯用):
fun insert (Empty, i) = Node (i, Empty, Empty)
| insert (Node (j, l, r), i) = <your code here>
(道歉,如果语法关闭,我的SML有点生疏。)
我留下了一个案例供你填写,以免完全破坏你的乐趣。
答案 1 :(得分:1)
格式正确,这是你的功能:
fun insert(t,i) =
if t = Empty then
Node(i,Empty,Empty)
else if t = Node(j,l,r):
if (i=j) then
t
else if (i < j) then
Node(j,insert l i,r)
else
Node(j,l,insert r i)
你看到了什么问题吗? if t = Node(j,l,r):
没有else
来匹配它。此外,它应该有then
而不是冒号(:
)。