1

我想问一下在 SML/NJ 中如何[]::[]以及如何在概念上进行解释。[]::[]::[]

我的想法 :

我认为这[]::[]会产生错误或生成一个空列表,但实际上它会生成val it = [[]] : 'a list list.

在我知道[]::[]生成之后[[]] : 'a list list,我认为[]::[]::[]会生成[[[]]] : 'a list list list,但实际上它会生成[[],[]] : 'a list list

4

1 回答 1

7

::是右结合的:在a::b::c::[]a,b,c 中必须是相同类型的元素并且

a::b::c::[] = a::(b::(c::[]))
            = a::(b::[c])
            = a::[b,c]
            = [a,b,c]

即使 a,b,c 是 [],这仍然成立:

[]::[]::[]::[] = [[],[],[]]
于 2015-10-13T19:25:04.477 回答