)
通过模式匹配从左向右遍历对比元素是否相等,每次取List首元,此时才真正需要List,才被“创造”出来
用非惰性的JS来描述就像这样:
function unshift(x, xs) {
return...return true;
return s.value == a.value && eq(s.tail(), a.tail());
}// test
eq(str, charList);
用“懒”链表来模拟只在真正需要的时候才去创造的...所以,为了解决这个问题,就像引入foldl的严格版本(非惰性版本)foldl'一样,我们引入了ByteString
P.S.上面提到的“承诺”,其实在Haskell有个对应的术语叫thunk
ByteString..., init, null, length, map, reverse, foldl, foldr, concat, takeWhile, filter
所以先要避免命名冲突:
-- 惰性ByteString...NODE_ENV production
testArgs.hs -b -c
此时getExecutablePath返回的是ghc(可执行文件)的绝对路径
四.随机数
除了I/O,另一个铁定不纯的场景就是随机数了