From 1ae964c19875767715e4bd8b190287f1c63bc410 Mon Sep 17 00:00:00 2001 From: fredrikr79 Date: Sun, 28 Sep 2025 15:06:53 +0200 Subject: [PATCH] format and handin --- assignment3/report.md | 122 ++++++++++++++++++++++++++++++++--------- assignment3/report.pdf | Bin 0 -> 47698 bytes 2 files changed, 95 insertions(+), 27 deletions(-) create mode 100644 assignment3/report.pdf diff --git a/assignment3/report.md b/assignment3/report.md index 16ab634..a57674d 100644 --- a/assignment3/report.md +++ b/assignment3/report.md @@ -1,7 +1,7 @@ --- title: exercise 3 author: fredrik robertsen -date: 2025-09-26 +date: 2025-09-28 --- ## task 1 @@ -23,7 +23,7 @@ end ### b) -this is the oz emulator output of `System.show`ing `RealSol`, `X1`, `X2` +this is the oz emulator output of `System.show`ing `RealSol`, `X1`, `X2` ```oz [true ~1 0.5] @@ -32,13 +32,24 @@ this is the oz emulator output of `System.show`ing `RealSol`, `X1`, `X2` ### c) -procedural abstractions (`proc` instead of `fun`) enable side-effects and interacting with the outside world. in this example, it is useful for providing multiple assigned return values, and because of oz's unification, not all return parameters need be assigned. as such, we are able to let X1 and X2 remain unassigned to any value, in case there are no real roots. +procedural abstractions (`proc` instead of `fun`) enable side-effects and +interacting with the outside world. in this example, it is useful for providing +multiple assigned return values, and because of oz's unification, not all return +parameters need be assigned. as such, we are able to let X1 and X2 remain +unassigned to any value, in case there are no real roots. ### d) -c) already covers some of the differences. a `fun`ction will have a set signature and have some different syntactic parsing. in some languages, functions don't allow sequential expressions, but oz is weird, so they are allowed. you may also print values to stdout in a function, unlike languages like haskell. +task c) already covers some of the differences. a `fun`ction will have a set +signature and have some different syntactic parsing. in some languages, +functions don't allow sequential expressions, but oz is weird, so they are +allowed. you may also print values to stdout in a function, unlike languages +like haskell. -the distinction is in a way pedantic, but a useful one to make. one entails mathematical functions and all their bells and whistles, while the other corresponds more closely to how a computer works. this furthers oz as a general purpose multi-paradigm programming language. +the distinction is in a way pedantic, but a useful one to make. one entails +mathematical functions and all their bells and whistles, while the other +corresponds more closely to how a computer works. this furthers oz as a general +purpose multi-paradigm programming language. ## task 2 @@ -54,11 +65,18 @@ end ### a) & b) -the recursive structure of the right fold is the same as that of sum and length. they both simply pop an element from the list, then apply the binary operator on that element and the recursively accumulated value. +the recursive structure of the right fold is the same as that of sum and length. +they both simply pop an element from the list, then apply the binary operator on +that element and the recursively accumulated value. -folds can be thought of as putting the binary operator infix between each element of the list, then evaluating it. they are also called "reduce" (in languages like APL/BQN/Uiua), because they apply an operation to all the elements of an array such that it *reduces* the rank of the array by one, i.e. making a matrix a vector, or a vector a scalar. +folds can be thought of as putting the binary operator infix between each +element of the list, then evaluating it. they are also called "reduce" (in +languages like APL/BQN/Uiua), because they apply an operation to all the +elements of an array such that it _reduces_ the rank of the array by one, i.e. +making a matrix a vector, or a vector a scalar. -in my mind, the right fold implementation is a single line, because i am quite used to thinking in terms of folds. +in my mind, the right fold implementation is a single line, because i am quite +used to thinking in terms of folds. ```oz fun {RightFold List Op U} % U is the 'default' value of the reduction @@ -85,11 +103,17 @@ end ### d) -because addition is both associative and commutative, the elements in the List passed to Sum or Length can be in any order and also summed or counted in any order. thus, using a left-associative fold would yield the same result. +because addition is both associative and commutative, the elements in the List +passed to Sum or Length can be in any order and also summed or counted in any +order. thus, using a left-associative fold would yield the same result. -the following code snippet uses exponentiation as an example of a non-commutative and non-associative binary operator that would yield different results for the same list. +the following code snippet uses exponentiation as an example of +a non-commutative and non-associative binary operator that would yield different +results for the same list. -here, using a left-associative fold results in 0, because the base is set to 0 (U=0), while the right-associative fold results in 1, since 0 is the last exponent. +here, using a left-associative fold results in 0, because the base is set to +0 (U=0), while the right-associative fold results in 1, since 0 is the last +exponent. ```oz fun {NonAssociativeOperator X Y} @@ -104,7 +128,10 @@ end ### e) -another example is the factorial function. this illustrates that the identity element of multiplication is 1, and is thus suited as the U-element for a fold under multiplication. setting U=0 would always yield 0 under a multiplication-reduction. +another example is the factorial function. this illustrates that the identity +element of multiplication is 1, and is thus suited as the U-element for a fold +under multiplication. setting U=0 would always yield 0 under +a multiplication-reduction. ```oz % same as python's range(1, N+1) -- but in reverse order. @@ -129,7 +156,7 @@ end ## task 4 -trivially curried* function +trivially curried\* function ```oz fun {Quadratic A B C} @@ -137,13 +164,17 @@ fun {Quadratic A B C} end ``` -*: Quadratic is of arity 3, but could be thought of as arity 4 if you consider the argument of it's returned function as well. all functions of arity greater than 1 can be thought of as functions returning functions composed with each other: currying. named after Haskell Curry. +\*: Quadratic is of arity 3, but could be thought of as arity 4 if you consider +the argument of it's returned function as well. all functions of arity greater +than 1 can be thought of as functions returning functions composed with each +other: currying. named after Haskell Curry. ## task 5 ### a) -this embedded function simulates lazy function evaluation and represents an infinite list. +this embedded function simulates lazy function evaluation and represents an +infinite list. ```oz fun {LazyNumberGenerator StartValue} @@ -153,44 +184,81 @@ end ### b) -the idea is that the lazy number generator should return both a current number, and a function that knows how to get to the next number, based on that current number. embedding these two into a data structure allows for lazy evaluation, i.e. "getting the thing you want just when you need it, and not a moment earlier". +the idea is that the lazy number generator should return both a current number, +and a function that knows how to get to the next number, based on that current +number. embedding these two into a data structure allows for lazy evaluation, +i.e. "getting the thing you want just when you need it, and not a moment +earlier". -this can be useful to save on memory usage by deferring calculations until you need the results. +this can be useful to save on memory usage by deferring calculations until you +need the results. -i suppose a limitation with my above implementation is that it uses recursion as its driving force, thus it uses quite a lot of stack memory for each new number. this could in theory be mitigated by using tail recursion (as we will see in the next task). +i suppose a limitation with my above implementation is that it uses recursion as +its driving force, thus it uses quite a lot of stack memory for each new number. +this could in theory be mitigated by using tail recursion (as we will see in the +next task). ## task 6 ### a) -the `Sum`-implementation in task 2 is not tail-recursive, because it performs computations on the result of the recursive call -- i.e. it adds the head value to the recursive result. +the `Sum`-implementation in task 2 is not tail-recursive, because it performs +computations on the result of the recursive call -- i.e. it adds the head value +to the recursive result. we can make it recursive by doing continuation-passing style: ```oz fun {TailRecursiveSum List} Auxiliary in fun {Auxiliary List Accumulator} - case List + case List of nil then Accumulator - [] Head|Tail then {Auxiliary Tail Head+Accumulator} + [] Head|Tail then {Auxiliary Tail Head+Accumulator} end end {Auxiliary List 0} end ``` -essentially, we are just carrying the results of the recursion in the argument of a helper (auxiliary) function. this correctly implements tail-recursion. +essentially, we are just carrying the results of the recursion in the argument +of a helper (auxiliary) function. this correctly implements tail-recursion. ### b) -tail recursion allows for compiler optimizations to use less memory because we don't need to keep the stack frames for each recursive call, since we don't care about the results of the recursion (since they are cleverly baked into the arguments now). proper tail recursion should yield performance similar to an iterative implementation with loops. +tail recursion allows for compiler optimizations to use less memory because we +don't need to keep the stack frames for each recursive call, since we don't care +about the results of the recursion (since they are cleverly baked into the +arguments now). proper tail recursion should yield performance similar to an +iterative implementation with loops. -it seems oz has quite a bit of tail recursion optimization baked into it. i found [this](https://stackoverflow.com/questions/1513499/tail-recursion-optimization-in-oz), which shows how oz also converts simple recursive functions into their tail recursive variants, especially if the last operation is cons `|`. +it seems oz has quite a bit of tail recursion optimization baked into it. +i found +[this](https://stackoverflow.com/questions/1513499/tail-recursion-optimization-in-oz), +which shows how oz also converts simple recursive functions into their tail +recursive variants, especially if the last operation is cons `|`. ### c) -tail recursion will not be beneficial if it isn't supported by the compiler. in fact, it may be worse off performance-wise if you do tail recursion instead, like for the `Sum` implementation. this can be seen because you have to create another helper function and use it instead, and the helper function needs to keep track of more data in its arguments, thus it necessitates more memory usage. so, without being able to unroll the recursion via tail recursion optimization, it is not worth it. +tail recursion will not be beneficial if it isn't supported by the compiler. in +fact, it may be worse off performance-wise if you do tail recursion instead, +like for the `Sum` implementation. this can be seen because you have to create +another helper function and use it instead, and the helper function needs to +keep track of more data in its arguments, thus it necessitates more memory +usage. so, without being able to unroll the recursion via tail recursion +optimization, it is not worth it. -i mentioned the continuation-passing style, which is a way to write virtually all recursive functions as a tail recursive function, but this is not always practically feasible, due to growing complexity with nested functions and such. thus it might often be better to opt for more readable solutions than performant ones, if performance is not the be-all/end-all. +i mentioned the continuation-passing style, which is a way to write virtually +all recursive functions as a tail recursive function, but this is not always +practically feasible, due to growing complexity with nested functions and such. +thus it might often be better to opt for more readable solutions than performant +ones, if performance is not the be-all/end-all. + +an interesting problem with tail recursion optimizations is that when the +compiler optimizes away the stack frames, the execution of the program becomes +obfuscated and harder to debug. guido van rossum decided against tail recursion +optimizations in python for this particular reason. but in such a language, +recursion isn't the only tool at your disposal (you have loops, list +comprehensions, etc), so it makes sense to just bite the bullet and let the +memory usage go up. but in oz; if all you have is a hammer, then you better make +that hammer fast. -an interesting problem with tail recursion optimizations is that when the compiler optimizes away the stack frames, the execution of the program becomes obfuscated and harder to debug. guido van rossum decided against tail recursion optimizations in python for this particular reason. but in such a language, recursion isn't the only tool at your disposal (you have loops, list comprehensions, etc), so it makes sense to just bite the bullet and let the memory usage go up. but in oz; if all you have is a hammer, then you better make that hammer fast. \ No newline at end of file diff --git a/assignment3/report.pdf b/assignment3/report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1c8893c1890558955877c321785576de293bfdef GIT binary patch literal 47698 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�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 QXJTq;Xuzea>gw+X0Ov+i(EtDd literal 0 HcmV?d00001