PLQ #5Done on:   Tuesday, October 25th

Question 1 @ 2022-10-25 18:18

I don’t use the word “transparency” because…

  1. … I’m not transparent.
  2. … I want to keep the option of hiding information.
  3. … it’s such a cultural cliche, that its value is degraded.
  4. … it’s a property of physical objects only.

Question 2 @ 2022-10-25 18:20

If I’m so flexible for stuff you want (i.e., “democracy”), why won’t I post a poll and ask if you want to get HW-based grades only? (Or even just give everyone A’s and be done with it.)

  1. You’re students => you should suffer the same way I/everyone did.

  2. I’m old and wise, you’re young and naive => I know what’s best for you more than you do.

  3. Democracy is good, but similar to a majority vote to exclude miority right, not all questions should be by-majority.

  4. Democracy is good, but crowd manipulation is easy.

  5. Because I care about the material and if there’s a lack of motivation many people will not know it.

  6. Because I refuse to become a rubber stamp for a piece of paper that will get you money in a form of a good job.

Question 3 @ 2022-10-25 19:22

Will the eager version of our Flang language be the same no matter what language we use to implement it?

(Assuming a straightforward translation of the Racket code that we have. Also, assume the substitution-based evaluator if it matters.)

Choose all correct answers.

A1. Basic arithmetic properties (integer size, exact fractions, etc) will be the same in every translation A2. Basic arithmetic properties (integer size, exact fractions, etc) may change depending on the language

E1. The resulting language evaluator will be eager in every translation E2. The resulting language may be eager or lazy depending on the language

S1. The resulting language will be lexically scoped in every translation S2. The resulting language may be lexically- or dynamically-scoped depending on the language

Question 4 @ 2022-10-25 19:25

What was the obvious use we had for the following function definition in Schlac?

(define secret (lambda (x y) (lambda (s) (s x y))))

  1. add1
  2. sub1
  3. multiplication
  4. addition
  5. list
  6. cons
  7. if

Question 5 @ 2022-10-25 19:27

What is this ((x=>x(x))(x=>x(x))) that found at the bottom of Eli’s emails.

Choose the best answer.

  1. A fun emoticon

  2. A piece of JavaScipt Code

  3. The Racket Y combinator

  4. The Y combinator translated to Javascript

  5. A recursion-less infinite loop

  6. A recursion-less infinite loop in JS

  7. A browser stack overflow trap

Question 6 @ 2022-10-25 19:29

Why does having an eager language pose an issue when implementing the Y combinator?

Reminder, the original simple version was:

(define Y
  (lambda (f)
    ((lambda (x) (x x))
    (lambda (x) (f (x x))))))

Choose the best answer.

  1. There was no issue with this definition, it was just too short to be clear.

  2. There was no issue with this definition WRT eagerness – it was rather the lexical scope which was a problem.

  3. The self-application will make the expression reduce to itself, leading to an infinite loop.

  4. When used in an eager language, the self-application happens prematurely, leading to an infinite loop.

  5. Using the above definition as is leads to different (and wrong) resulting values.