type S = SNil
| SAtom { CString }
| SCons { S[], S[] }
| SPointer { ?[] }
print : S -> Nil
to-string : S -> String
== : (S, S) -> Bool
!= : (S, S) -> Bool
< : (S, S) -> Bool
<= : (S, S) -> Bool
> : (S, S) -> Bool
>= : (S, S) -> Bool