SMLでsleep sort
書いてみた。
sleep sortとは
コード
open Posix; fun allwait () = let val _ = (Process.wait (); ()) handle SysErr => () in allwait () end fun sleep_print x = (Process.sleep (Time.fromSeconds (LargeInt.fromInt x)) ;print (Int.toString x)) fun sleep_sort [] = allwait() | sleep_sort (x::xs) = case Process.fork () of NONE => sleep_print x | SOME pic => sleep_sort xs
実行例。
- sleep_sort [ 5, 3, 6, 3, 6, 3, 1, 4, 7]; 1val it = () : unit - 3val it = () : unit - 3val it = () : unit - 3val it = () : unit - 4val it = () : unit - 5val it = () : unit - 6val it = () : unit - 6val it = () : unit - 7val it = () : unit -
うーむ。こなれて無い感がすごい(汗