alist and functional programming style

alist in lisp is kinda like hash.

funcitonal programming style: you should only refer parameter or
variables inside the function, and the funciton only return value