Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
fp:lab03 [2022/02/24 13:39] pdmatei |
fp:lab03 [2022/03/18 15:31] (current) pdmatei |
||
---|---|---|---|
Line 5: | Line 5: | ||
* implement **curry** and **uncurry** functions, and how they should be properly used (review lecture). | * implement **curry** and **uncurry** functions, and how they should be properly used (review lecture). | ||
- | **3.1.** Define the function ''foldRange'' which uses an operation ''op'' to reduce a range of integers to a value. For instance, given that ''op'' is addition (+), the result of folding the range 1, 3 will be 6. ''foldRange'' should be curried (it will take the operation and return another function which expects the bounds). | + | **3.1.** Define the function ''foldWith'' which uses an operation ''op'' to reduce a range of integers to a value. For instance, given that ''op'' is addition (+), the result of folding the range 1 to 3 will be 1+2+3=6. ''foldWith'' should be curried (it will take the operation and return another function which expects the bounds). |
<code scala> | <code scala> | ||
Line 20: | Line 20: | ||
</code> | </code> | ||
- | **3.3. (!) ** Let $math[count_k(n) = k + 2k + 3k + ... x*k], with $math[ x*k \leq n] be the sum of all multiples of $math[k] within the range 1,n. Write a function ''alldivs'' which computes the sum: $math[count_1(n) + count_2(n) + ... + count_k(n)]. (Hint, use ''foldConditional''). | + | **3.3. [//should be revised//] ** Let $math[count_k(n) = k + 2k + 3k + ... x*k], with $math[ x*k \leq n] be the sum of all multiples of $math[k] within the range 1,n. Write a function ''alldivs'' which computes the sum: $math[count_1(n) + count_2(n) + ... + count_k(n)]. (Hint, use ''foldConditional''). |
<code scala> | <code scala> | ||
Line 33: | Line 33: | ||
**3.5.** Write a function which computes $math[1 + 2^2 + 3^2 + \ldots + (n-1)^2 + n^2] using ''foldMap''. | **3.5.** Write a function which computes $math[1 + 2^2 + 3^2 + \ldots + (n-1)^2 + n^2] using ''foldMap''. | ||
<code scala> | <code scala> | ||
- | def sumSquares(n: Int): n = ??? | + | def sumSquares(n: Int): Int = ??? |
</code> | </code> | ||
Line 45: | Line 45: | ||
* otherwise, we compute the mid of the range, we recursively compute the integral from a to mid and from mid to b, and add-up the result. | * otherwise, we compute the mid of the range, we recursively compute the integral from a to mid and from mid to b, and add-up the result. | ||
- | Implement the function ''integral'' which computes the integral of a function f given a range: | + | Implement the function ''integrate'' which computes the integral of a function f given a range: |
<code scala> | <code scala> | ||
def integrate(f: Double => Double)(start: Double, stop: Double): Double = ??? | def integrate(f: Double => Double)(start: Double, stop: Double): Double = ??? | ||
</code> | </code> |