Hi all, thanks a lot for your help in this travel through OCaML but I have still a question. I have tried to write a polymorphic stack code attached but I don't understand its behavior: # open Stack;; # let s = empty;; val s : '_a Stack.stack = {c = []} # push s 7;; - : unit = () # push s 25;; - : unit = () # let s1 = empty;; val s1 : int Stack.stack = {c = [25; 7]} # push s1 "Hello";; Error: This expression has type string but an expression was expected of type int Apparently seems that I can have only a variable of type stack and any other call to its constructor links the new variable to the old one. This means that once I have put an int inside I can't have a second stack for characters or what else? This behavior is completely unexpected and I can't explain it. I'm sure I'm doing something wrong but I can't say what it is. Do you have any idea about? TIA Walter --