解释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是[]:

[]::[]::[]::[] = [[],[],[]]

相关内容

  • 没有找到相关文章

最新更新