declare class ListClass meth isNil(_) raise undefinedMethod end end meth append(_ _) raise undefinedMethod end end meth display raise undefinedMethod end end end class NilClass from ListClass meth init skip end meth isNil(B) B=true end meth append(T U) U=T end meth display {Browse nil} end end class ConsClass from ListClass attr head tail meth init(H T) head:=H tail:=T end meth isNil(B) B=false end meth append(T U) U2={@tail append(T $)} in U={New ConsClass init(@head U2)} end meth display {Browse @head} {@tail display} end end