このためlispやmlなどは原則として関数型ながら、副作用を許容する設計になっている。