17. 部品化と遅延評価
仕様:
replicate 5 ’*’ → "*****"
手続型でのLoop:
replicate (n, x) {
var ret = "";
for (var i = 0; i < n; i++)
ret = push(x,ret);
return ret;
}
遅延評価による部品化:
repeat ’*’
→ [’*’,’*’,’*’,’*’,’*’, …]
take 5 [’*’,’*’,’*’,’*’,’*’, …]
→ [’*’,’*’,’*’,’*’,’*’]
→ "*****"
replicate n c = take n (repeat c)