Textual type-safe RPC via S-expressions