X-Git-Url: https://svn.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/440ca0ba93966e89b68dc54207c461afc0d56264..e5552e34f62e4d8f39040419999b3395879f36c0:/interpretor/signal.ml?ds=sidebyside diff --git a/interpretor/signal.ml b/interpretor/signal.ml index b493b6c..2dd9f73 100644 --- a/interpretor/signal.ml +++ b/interpretor/signal.ml @@ -32,7 +32,7 @@ class signal : int -> (time -> value_type) -> signal_type = else raise (Signal_operation "frequency not matched.") in List.fold_left check self#frequency sl - method private add_memory : int -> unit = + method add_memory : int -> unit = fun (length : int) -> assert (length >= 0); if memory_length >= length then () @@ -98,13 +98,13 @@ class signal : int -> (time -> value_type) -> signal_type = let func : time -> value_type = fun (t : time) -> let i = (s#at t)#to_int in - self#delay_by t i in + self#delay_by i t in new signal freq func method mem : signal_type = let freq = self#frequency in let () = self#add_memory 1 in - let func = fun (t : time) -> self#delay_by t 1 in + let func = fun (t : time) -> self#delay_by 1 t in new signal freq func method rdtable : signal_type -> signal_type -> signal_type = @@ -141,10 +141,11 @@ class signal : int -> (time -> value_type) -> signal_type = method prefix : signal_type -> signal_type = fun (s_init : signal_type) -> + let () = self#add_memory 1 in let func : time -> value_type = fun t -> if t = 0 then s_init#at 0 - else if t > 0 then self#at t + else if t > 0 then self#at (t - 1) else raise (Signal_operation "prefix time < 0.") in new signal self#frequency func