recently, start to learn Scheme (has been a week with my attention), so everything is really confusing and mixed up in my head. now realized that the expression "evaluation" is the main focus in the scheme.. compare with other "procedural language" languages, Scheme is a different world(yes, "functional language").
start to know new language, "back to the basics". I have read some other questions and answers but it is not exactly what I want to know or what I am confusing (for now... maybe later, can be better..)
Question 1. What exactly "evaluation" means in Scheme ? and Scheme also using "evaluation of environment" = putting in stack?? assign memory???. how differ from execution?
Question 2. Is environment similar definition to "agreement , parameters" in a function?
Question 3. "initial value" in Scheme, and "initial value" other procedural programming (c/c++) are same meaning? usually initial value in procedural language is the value you have to assign before the program run... usually 0, null,... the starting address of memory... etc... but my impression in Scheme's "initial value" is a bit different. Scheme "initial value" = the function itself (at least in recursion)... Can anyone explain this clear with very plain expression (no "buzz Scheme" words) ???
Question 4. then it seems you can explain the difference between let, letrec, let* with evaluation. (not sure..yet). something like this (could be completely wrong...),
4-1) ["When a normal "let" is evaluated, the initial value expressions are evaluated before binding is done."] means? = (with my words) when let is executed?? and I don't understand.. this "the initial value expressions are evaluated before binding is done." How it can evaluate before binding is done...?? what exactly mean "binding is done"???
4-2) ["let*": when an order is important, evaluates the environment (parameter?) step by step along with the order program lines(???) ] by this explanation, to me, evaluates = executes.... => (my interpretation, "let*" assign memory and executes for each parameters step by step along with the order of program line???
4-3) "letrec" : ["letrec lets us create an environment before evaluating the initial value(??) expressions, so that the initial value computations execute inside the new environment(my interpretation this sounds for tail recursion)]." => creates an environment before evaluating the initial value, how?
Question 5. There is no initialization, declaration... in Scheme?
Sorry for a long question and it maybe too basic to others. but it will help me clear things out in Scheme.