Difference between revisions of "MUPL Programs Assignment"
Jump to navigation
Jump to search
(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | [[File:Warning_icon.svg|100px]] '''WARNING''': Do '''NOT''' attempt until you have completed Parts 1, 2, and 3 of the [[MUPL_Assignment|MUPL | + | [[File:Warning_icon.svg|100px]] '''WARNING''': Do '''NOT''' attempt until you have completed Parts 1, 2, and 3 of the [[MUPL_Assignment|UW MUPL Assignment]]. |
=Motivation= | =Motivation= | ||
Writing a curried, higher order function as your first MUPL program seems a bit steep. This studio is designed to be done after parts 1, 2, and 3 of the [[MUPL_Assignment|MUPL Lab]], but before you attempt to write <code>mupl-map</code>. | Writing a curried, higher order function as your first MUPL program seems a bit steep. This studio is designed to be done after parts 1, 2, and 3 of the [[MUPL_Assignment|MUPL Lab]], but before you attempt to write <code>mupl-map</code>. | ||
Line 6: | Line 6: | ||
For your MUPL programs you should be constructing MUPL abstract syntax trees out of the MUPL structs provided by Prof. Grossman. The result of each program is a MUPL function comprised of MUPL expressions and the occasional string, int, and boolean constant (e.g. "fred", 42, #f) which the MUPL structs require. | For your MUPL programs you should be constructing MUPL abstract syntax trees out of the MUPL structs provided by Prof. Grossman. The result of each program is a MUPL function comprised of MUPL expressions and the occasional string, int, and boolean constant (e.g. "fred", 42, #f) which the MUPL structs require. | ||
+ | |||
+ | NOTE: you should NOT use the closure struct as it is not a MUPL expression. It is a MUPL value. | ||
==mupl-double== | ==mupl-double== |
Latest revision as of 03:42, 15 November 2022
WARNING: Do NOT attempt until you have completed Parts 1, 2, and 3 of the UW MUPL Assignment.
Motivation
Writing a curried, higher order function as your first MUPL program seems a bit steep. This studio is designed to be done after parts 1, 2, and 3 of the MUPL Lab, but before you attempt to write mupl-map
.
Code to Implement
For your MUPL programs you should be constructing MUPL abstract syntax trees out of the MUPL structs provided by Prof. Grossman. The result of each program is a MUPL function comprised of MUPL expressions and the occasional string, int, and boolean constant (e.g. "fred", 42, #f) which the MUPL structs require.
NOTE: you should NOT use the closure struct as it is not a MUPL expression. It is a MUPL value.
mupl-double
; racket version for reference (define (racket-double n) (+ n n)) ; mupl-double return a mupl-function which doubles its mupl-int argument (define mupl-double 'not-yet-implemented)
mupl-sum-curry
; racket version for reference (define (racket-sum-curry a) (lambda (b) (+ a b))) ; mupl-sum-curry return a mupl-function which returns a mupl-function which adds the two mupl-function's mupl-int arguments together (define mupl-sum-curry 'not-yet-implemented)
mupl-map-one
; racket version for reference (define (racket-map-one proc) (proc 1)) ; mupl-map-one: return a mupl-function that invoks the mupl-function passed in with the mupl-int argument 1 (define mupl-map-one 'not-yet-implemented)