Haskell では参照透明性をくずすものは trace のみなんだっけ?