Split the data types, functions and global variables into five parts
The first version to pass all the test cases
将处理参数错误的prerr_string调用改为invalid_arg的调用
将处理dotted pair的代码从read_pair剥离出来实现为一个单独的函数
将打印字符对象的代码从write函数中剥离出来实现为函数write_character
预先创建一些符号类型的对象，如quote、set!、define和ok。
创建表示逻辑真和逻辑假的单例对象
将一些重复的car和cdr操作替换为cadxr系列的函数调用
Use the channel data type for inputing.

Replace the use of Stream module in source code.