我想问一下在SML/NJ中[]::[]
和[]::[]::[]
是如何在概念上解释的。
我的想法:
我认为[]::[]
会产生错误或生成空列表,但实际上它生成了val it = [[]] : 'a list list
。
当我知道[]::[]
生成[[]] : 'a list list
后,我以为[]::[]::[]
会生成[[[]]] : 'a list list list
,但实际上它生成了[[],[]] : 'a list list
::
是右结合的:在a::b::c::[]
中,a,b,c必须是相同类型的元素,
a::b::c::[] = a::(b::(c::[]))
= a::(b::[c])
= a::[b,c]
= [a,b,c]
即使a,b,c是[]:
[]::[]::[]::[] = [[],[],[]]