722 Chapter 15 Functional Programming Languages
- Why are CAR and CDR so named?
- If CONS is called with two atoms, say 'A and 'B, what is the returned?
- Describe the syntax and semantics of LET in Scheme.
- What are the differences between CONS, LIST, and APPEND?
- Describe the syntax and semantics of mapcar in Scheme.
- What is tail recursion? Why is it important to define functions that use
recursion to specify repetition to be tail recursive? - Why were imperative features added to most dialects of LISP?
- In what ways are Common LISP and Scheme opposites?
- What scoping rule is used in Scheme? In Common LISP? In ML? In
Haskell? In F#? - What happens during the reader phase of a Common LISP language
processor? - What are two ways that ML is fundamentally different from Scheme?
- What is stored in an ML evaluation environment?
- What is the difference between an ML val statement and an assignment
statement in C? - What is type inferencing, as used in ML?
- What is the use of the fn reserved word in ML?
- Can ML functions that deal with scalar numerics be generic?
- What is a curried function?
- What does partial evaluation mean?
- Describe the actions of the ML filter function.
- What operator does ML use for Scheme’s CAR?
- What operator does ML use for functional composition?
- What are the three characteristics of Haskell that make it different
from ML? - What does lazy evaluation mean?
- What is a strict programming language?
- What programming paradigms are supported by F#?
- With what other programming languages can F# interoperate?
- What does F#’s let do?
- How is the scope of a F# let construct terminated?
- What is the underlying difference between a sequence and a list in F#?
- What is the difference between the let of ML and that of F#, in terms of
extent? - What is the syntax of a lambda expression in F#?
- Does F# coerce numeric values in expressions? Argue in support of the
design choice.