fun putStrLn str = (TextIO.output (TextIO.stdOut, str); TextIO.output (TextIO.stdOut, "\n")) fun putStr str = (TextIO.output (TextIO.stdOut, str)) fun showReal n = let open StringCvt open Real in (if n < 0.0 then "-" else "") ^ (fmt (FIX (SOME 12)) (abs n)) end fun printstate (input) = ( (showReal (#t(input))) ^ " " ^ (showReal (#V(input)))) fun start (initial,tmax,f) = let fun run (input as {h,t,st,refractoryEnd,spike,V, Vreset,gL,vL,Isyn,C,theta,t_rpend,tau_rp}) = let val nstate = f input val nstate1 = {h=(#h(nstate)),t=(#t(nstate)),st=(#st(nstate)),V=(#V(nstate)),refractoryEnd=(#refractoryEnd(nstate)),spike=(#spike(nstate)),theta=(#theta(initial)),Isyn=(#Isyn(input)),vL=(#vL(initial)),gL=(#gL(initial)),Vreset=(#Vreset(initial)),C=(#C(initial)),tau_rp=(#tau_rp(initial)),t_rpend=(#t_rpend(nstate))} in putStrLn (printstate nstate1); if (#t nstate) > tmax then (putStrLn "# All done!"; nstate) else (run nstate1) end in printstate initial; run initial end val _ = start (Model.LeakyIF_initial,240.0,Model.LeakyIF)