Haskellだと参照透明性が「必ず」保証される
MLとかは参照透明性は必要であればプログラマが保証する必要がある

と思いきやUnsafeIOとかあるしな