On ne donne que la solution pour des classes paramétriques représentées par des listes.
exception Vide;;
class ['a] pile =
  object
    val mutable p : 'a list =  []
    method ajouter x = p <- x :: p
    method retirer = 
      match p with
      | [] -> raise Vide
      | x::t -> p <- t; x
  end;;