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
pp:2023:haskell:l07 [2023/04/20 09:23]
tpruteanu [Lists]
pp:2023:haskell:l07 [2023/04/27 01:17] (current)
mihai.udubasa [Lambda calculus as a programming language (optional)] fix typo
Line 86: Line 86:
  
 The [[https://​en.wikipedia.org/​wiki/​Church%E2%80%93Turing_thesis | Church-Turing thesis]] asserts that any //​computable//​ function can be computed using lambda calculus (or Turing Machines or equivalent models). \\ The [[https://​en.wikipedia.org/​wiki/​Church%E2%80%93Turing_thesis | Church-Turing thesis]] asserts that any //​computable//​ function can be computed using lambda calculus (or Turing Machines or equivalent models). \\
-For the curios, a series of additional exercises covering this topic can be found here: [[pp:​2023:​haskell:​l07-extra|Lambda Calculus as a programming language]]. \\+For the curious, a series of additional exercises covering this topic can be found here: [[pp:​2023:​haskell:​l07-extra|Lambda Calculus as a programming language]]. \\
  
 ===== 7.2 Intro to Haskell ===== ===== 7.2 Intro to Haskell =====
Line 101: Line 101:
 Remember: [[pp:​2023:​scala:​l01|Lab 1. Introduction to Scala]] Remember: [[pp:​2023:​scala:​l01|Lab 1. Introduction to Scala]]
  
-**7.2.1.** Implement a tail-recursive function that computes the factorial of a natural number. ​Start from the code stub below:+**7.2.1.** Implement a tail-recursive function that computes the factorial of a natural number.
 <code haskell> <code haskell>
 fact :: Int -> Int fact :: Int -> Int
 fact = undefined fact = undefined
 </​code>​ </​code>​
-**7.2.2.** Implement a tail-recursive function that computes the greatest common divisor of two natural numbers:+**7.2.2.** Implement a tail-recursive function that computes the greatest common divisor of two natural numbers.
 <code haskell> <code haskell>
-gcd :: Int -> Int -> Int +mygcd :: Int -> Int -> Int 
-gcd a b = undefined+mygcd a b = undefined
 </​code>​ </​code>​
 **7.2.3.** Implement the function ''​mySqrt'' ​ which computes the square root of an integer $ a $. **7.2.3.** Implement the function ''​mySqrt'' ​ which computes the square root of an integer $ a $.
Line 122: Line 122:
 } }
 </​code>​|<​code haskell> ​ </​code>​|<​code haskell> ​
-f l = case l of {+f l = case l of
   [] -> ...   [] -> ...
   (x:xs) -> ...   (x:xs) -> ...
-} 
 </​code>​ | <code haskell> </​code>​ | <code haskell>
 f [] = ... f [] = ...
Line 134: Line 133:
 </​code>​ | </​code>​ |
  
-**7.2.4.** Implement funtions ''​minimum''​ and ''​maximum''​ that take a list of ints, and return the smallest/​biggest value in the list.+**7.2.4.** Implement funtions ''​mymin''​ and ''​mymax''​ that take a list of ints, and return the smallest/​biggest value in the list.
  
 **7.2.5.** Implement a function ''​unique''​ that takes a list of ints, and removes all duplicates. **7.2.5.** Implement a function ''​unique''​ that takes a list of ints, and removes all duplicates.
Line 144: Line 143:
   * a string representation of the number otherwise   * a string representation of the number otherwise
  
-**7.2.7.** Extend the function from **7.2.5.** with the following rules:+**7.2.7.** Extend the function from **7.2.6.** with the following rules:
   * **'​Bazz'​** if the number is divisible by 7   * **'​Bazz'​** if the number is divisible by 7
   * **'​FizzBazz'​** if the number is divisible by 21   * **'​FizzBazz'​** if the number is divisible by 21