Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
fp:lab03 [2022/03/09 20:09]
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 to 3 will be 1+2+3=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): = ???+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>​