这本书的目的是教人学会递归的思考(think recursively, think different)
有三种方式阐述这一问题:自然语言、形式化数学(formal mathematics),或者一门程序语言;自然语言模糊、不精确而且罗唆,容易引起歧义;形式化数学正好想反,它只用少许的符号就能强有力的表示形式化的主意,但是不经过专门的训练很难掌握;所以这本书选择用程序语言讲述递归的概念。程序语言可以像形式化数学那样使用一套符号进行形式化表达,但不像形式化数学,这种表达是可以通过自己做实验来体会的
有三种方式阐述这一问题:自然语言、形式化数学(formal mathematics),或者一门程序语言;自然语言模糊、不精确而且罗唆,容易引起歧义;形式化数学正好想反,它只用少许的符号就能强有力的表示形式化的主意,但是不经过专门的训练很难掌握;所以这本书选择用程序语言讲述递归的概念。程序语言可以像形式化数学那样使用一套符号进行形式化表达,但不像形式化数学,这种表达是可以通过自己做实验来体会的
car([Head|_]) -> Head.
cdr([_|Tail]) -> Tail.
cons(S, L) when is_list(L) -> [S|L];
cons(S, L) -> throw(must_be_list).