let list_map : 'a list repr -> f:('a -> 'b) repr -> 'b list repr = fun l ~f -> match l with | List l -> List (List.map ~f:(fun v -> apply f v) l) | _ -> assert false