X-Git-Url: https://scm.cri.ensmp.fr/git/Faustine.git/blobdiff_plain/440ca0ba93966e89b68dc54207c461afc0d56264..0a259beff10a55b87cdbd1a836f4c01162fdd73d:/interpretor/signal.ml diff --git a/interpretor/signal.ml b/interpretor/signal.ml index b493b6c..a32923e 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 () @@ -90,6 +90,8 @@ class signal : int -> (time -> value_type) -> signal_type = method _mod = self#prim2 (fun t -> (self#at t)#_mod) method larger = self#prim2 (fun t -> (self#at t)#larger) method smaller = self#prim2 (fun t -> (self#at t)#smaller) + method max = self#prim2 (fun t -> (self#at t)#max) + method min = self#prim2 (fun t -> (self#at t)#min) method delay : signal_type -> signal_type = fun (s : signal_type) -> @@ -98,13 +100,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 +143,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