copy from ch11
through 'function type'
adding assert macros
added lambda function
through 'parent environment'
through 'function calling' and everything is compiling
done with ch12