在 sml 中解释 []::[]、[]::[]::[]
Interpreting []::[], []::[]::[] in sml
我想问一下[]::[]
和[]::[]::[]
在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 是 [],这仍然成立:
[]::[]::[]::[] = [[],[],[]]
我想问一下[]::[]
和[]::[]::[]
在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 是 [],这仍然成立:
[]::[]::[]::[] = [[],[],[]]