sig val once : ('a -> 'b) -> 'a -> 'b end