CS251 Jeopardy
Spring 2005
CS251 Jeopardy Spring’05 – p.1/42
CS251 Jeopardy Spring 2005 CS251 Jeopardy Spring05 p.1/42 - - PowerPoint PPT Presentation
CS251 Jeopardy Spring 2005 CS251 Jeopardy Spring05 p.1/42 Gameboard Data Naming Laziness Xforms Imperative Control Types Potpourri 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5
CS251 Jeopardy Spring’05 – p.1/42
Data Naming Laziness Xforms Imperative Control Types Potpourri
1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5
CS251 Jeopardy Spring’05 – p.2/42
CS251 Jeopardy Spring’05 – p.3/42
CS251 Jeopardy Spring’05 – p.4/42
OCAML and (ii) JAVA?
CS251 Jeopardy Spring’05 – p.5/42
CS251 Jeopardy Spring’05 – p.6/42
CS251 Jeopardy Spring’05 – p.7/42
CS251 Jeopardy Spring’05 – p.8/42
PASCAL C JAVA OCAML SCHEME
CS251 Jeopardy Spring’05 – p.9/42
CS251 Jeopardy Spring’05 – p.10/42
CS251 Jeopardy Spring’05 – p.11/42
CS251 Jeopardy Spring’05 – p.12/42
CS251 Jeopardy Spring’05 – p.13/42
CS251 Jeopardy Spring’05 – p.14/42
CS251 Jeopardy Spring’05 – p.15/42
CS251 Jeopardy Spring’05 – p.16/42
Extra: : What if the operand evaluation order is right-to-left?
CS251 Jeopardy Spring’05 – p.17/42
CS251 Jeopardy Spring’05 – p.18/42
CS251 Jeopardy Spring’05 – p.19/42
CS251 Jeopardy Spring’05 – p.20/42
CS251 Jeopardy Spring’05 – p.21/42
CS251 Jeopardy Spring’05 – p.22/42
SCHEME OCAML JAVA HASKELL C
CS251 Jeopardy Spring’05 – p.23/42
CS251 Jeopardy Spring’05 – p.24/42
CS251 Jeopardy Spring’05 – p.25/42
CS251 Jeopardy Spring’05 – p.26/42
(bind f (bind a 0 (fun () (seq (<- a (+ a 1)) (bindpar ((b a) (c 0)) (fun () (seq (<- c (+ c b)) c)))))) (bindseq ((p (f)) (q (f))) (list (p) (q) (p) (q))))
Extra: What if (+ c b) were changed to (+ c a)?
CS251 Jeopardy Spring’05 – p.27/42
CS251 Jeopardy Spring’05 – p.28/42
PASCAL’s goto construct? SCHEME’s error SCHEME’s call-with-current-continuation OCAML’s raise JAVA’s break JAVA’s try/catch
CS251 Jeopardy Spring’05 – p.29/42
SCHEME supporting raise and handle?
(handle err (lambda (y) (+ y 200)) (let ((f (lambda (x) (+ (raise err x) 1000)))) (handle err (lambda (z) (+ z 50)) (f 4)))
Extra: what if the handles are replaced by traps?
CS251 Jeopardy Spring’05 – p.30/42
(define test (lambda (x) (+ 1 (label a (+ 20 (label b (+ 300 (jump a (label c (if (> x 0) (+ 4000 (jump c x)) (jump b x)))))))))))
CS251 Jeopardy Spring’05 – p.31/42
SCHEME supporting label and jump?
(let ((twice (lambda (f) (lambda (x) (f (f x))))) (inc (lambda (x) (+ x 1)))) (let ((g (label a (lambda (z) (jump a z))))) (((g twice) inc) 0)))
CS251 Jeopardy Spring’05 – p.32/42
CS251 Jeopardy Spring’05 – p.33/42
CS251 Jeopardy Spring’05 – p.34/42
CS251 Jeopardy Spring’05 – p.35/42
(’a -> ’b list) -> (’b -> ’c list) -> (’a -> ’c list)
CS251 Jeopardy Spring’05 – p.36/42
CS251 Jeopardy Spring’05 – p.37/42
CS251 Jeopardy Spring’05 – p.38/42
CS251 Jeopardy Spring’05 – p.39/42
CS251 Jeopardy Spring’05 – p.40/42
CS251 Jeopardy Spring’05 – p.41/42
POSTFIX programs. Answer both of the following:
CS251 Jeopardy Spring’05 – p.42/42