标签: haskell
cons运算符用于向列表添加元素,因此1:2:[]等于[1,2]但是为什么以下代码可以正常工作;
1:2:[]
[1,2]
foo :: [a] -> [[a]] foo [] = [] foo (x:xs) = [x]:foo xs
这里我们将[x]添加到foo xs,它将评估为[],因此最终它将成为[x]:[],这在Haskell中是允许的。但[x]:[1,2,3]是不允许的,为什么会这样?
[x]
[]
[x]:[]