Generalized Unpickler

fun {FromString S Stack}
   case S
   of  nil then case Stack of [V] then V end
   [] &"|S then {ReadString S nil Stack}
   [] &u|S then {FromString S unit|Stack}
   [] &t|S then {FromString S true|Stack}
   [] &f|S then {FromString S false|Stack}
   [] &n|S then {FromString S nil|Stack}
   [] &A|S then {FromString S {String.toAtom   Stack.1}|Stack.2}
   [] &I|S then {FromString S {String.toInt    Stack.1}|Stack.2}
   [] &F|S then {FromString S {String.toFloat  Stack.1}|Stack.2}
   [] &||S then {FromString S (Stack.1|Stack.2.1)|Stack.2.2}
   [] &T|S then {FromString S {List.toTuple  Stack.1.1 Stack.1.2}|Stack.2}
   [] &R|S then {FromString S {List.toRecord Stack.1.1 Stack.1.2}|Stack.2}
   end
end