CHAPTER 15 REVIEW
QUESTIONS
5. Explain why QUOTE is needed for a parameter that is a
data list.
- To avoid evaluating a parameter, it is first given as a
parameter to the primitive function QUOTE, which simply returns it without
change.
6. What is a simple list?
- A list which membership of a given atom in a given list
that does not include sublists.
7. What does the abbreviation REPL stand for?
- REPL stand for read-evaluate-print loop.
11. What are the two forms of DEFINE?
- The simplest form of DEFINE is one used to bind a name
to the value of an expression. This form is
(DEFINE symbol expression)
The general form of such a DEFINE is
(DEFINE (function_name parameters)
(expression)
)
18. What is tail recursion? Why is it important to define
functions that use recursion to specify repetition to be tail recursive?
- A function is tail recursive if its recursive call is
the last operation in the function. This means that the return value of the
recursive call is the return value of the nonrecursive call to the function. It
is important to specify repetition to be tail recursive because it is more
efficient(increase the efficiency).
19. Why were imperative features added to most dialects
of LISP?
- LISP began as a pure functional language but soon
acquired some important imperative features to increased its execution
efficiency.
27. What is the use of the fn reserved word in ML?
- The predicate function is often given as a lambda
expression, which in ML is defined exactly like a function, except with the fn
reserved word, instead of fun, and of course the lambda expression is nameless.
29. What is a curried function?
- Curried functions are interesting and useful because
new functions can be constructed from them by partial evaluation.
30. What does partial evaluation mean?
- Partial evaluation means that the function is evaluated
with actual parameters for one or more of the leftmost formal parameters.
31. Define reader macros.Reader macros or read macros,
that are expanded during the reader phase of a LISP language processor.
- A reader macro expands a specific character into a
string of LISP code. For example, the apostrophe in LISP is a read macro that
expands to a call to QUOTE. Users can define their own reader macros to create
other shorthand constructs.
32. What is the use of the evaluation environment table?
- A table called the evaluation environment stores the
names of all implicitly and explicitly declared identifiers in a program, along
with their types. This is like a run-time symbol table.
33. Explain the process of currying.
- The process of currying replaces a function with more
than one parameter with a function with one parameter that returns a function
that takes the other parameters of the initial function.
Problem Set
2 . Give a general form of function declaration in ML.
- Function declarations in ML appear in the general form
fun function_name(formal parameters) = expression;
8. How is the functional operator pipeline ( |> ) used
in F#?
- The pipeline operator is a binary operator that sends
the value of its left operand, which is an expression, to the last parameter of
the function call, which is the right operand. It is used to chain together
function calls while flowing the data being processed to each call.
9. What does the
following Scheme function do?
- (define ( y s lis)
(cond
(( null? lis) ‘ () )
((equal? s (car lis)) lis)
(else (y s (cdr lis)))
))
y returns the given list with leading elements removed up
to but not including the first occurrence of the first given parameter.
10.What does the
following Scheme function do?
(define ( x lis)
(cond
(( null? lis) 0 )
(( not(list? (car lis)))
(cond
((eq? (car lis) #f) (x (cdr lis)))
(else (+1 (x (cdr lis))))))
(else (+ (x (car lis))
(x (cdr lis))))
x returns the number of non-#f atoms in the given list
10. What does the following Scheme function do?(define (x
lis)
- (cond
((null? lis) 0)
((not (list? (car lis)))
(cond
((eq? (car lis) #f) (x (cdr lis)))
(else (+ 1 (x (cdr lis))))))
(else (+ (x (car lis)) (x (cdr lis))))
x returns the number of non-NIL atoms in the given list.