破壊的代入このページは最後に更新されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。 last mod. 2008-04-07 (月) 15:56:55
OCaml参照型の変数を用いることで破壊的代入ができます。 # let x = ref 0;; val x : int ref = {contents = 0} # x := !x + 1;; - : unit = () # !x;; - : int = 1 標準ライブラリの一部(ストリームやハッシュテーブルなど)は、破壊的代入を用いています。 SMLOCamlと同様に、参照型を用いることで破壊的代入ができます。 - val x = ref 0; val x = ref 0 : int ref - x := !x + 1; val it = () : unit - !x; val it = 1 : int Haskellできません。ただし、IORefモナドを用いることで似たことができます。 import IORef import Monad main :: IO () main = do x <- newIORef 0 writeIORef x 1 modifyIORef x (+1) writeIORef x . (+1) =<< readIORef x putStrLn.show =<< readIORef x |