Kihagyás

3. előadás

Minden függvény maximum egy paraméteres

  • Kötési erősség 0-9 (a 9 a legerősebb kiadható)
    • Csak az operátorokra vonatkoznak
    • infix
  • Függvénymeghívás a legerősebb (10)
  • :i

A (*) nagyobb precedenciájú (7), mint a (+) (6), tehát előbb kell "zárójelezni"

Blokkokat indentálással jelezzük, nem kapcsos zárójelekkel

λ 3 + 4 * 5
23
λ (+) 3 4 * 5
35

A Függvénymeghívás nagyobb precedenciájú, mint minden más

  • infixl: balra köt
  • infixr: jobbra köt
  • infix: NEM köt! Hibát dob, ha ugyan ez a kifejezés többször is megjelenik egymás után (pl: 3 == 3 == 3 -> hiba)

Nem írható több kifejezés egymás mellé

Bónusz: keress olyan inputot, ahol függvényként már az output, mint infixként

  • Változók/függvények neve kis betűvel kezdődik
  • Típusok neve nagy betűvel kezdődik

Listagenerátorok (list comprehension)

[ x ^ 2 | x <- [1..10] ]

[ x ^ 2 | x <- [1..10], even x]

[ (x,y) | x <- [1..10], even x, y <- ['a'..'f']]

divisors :: Integral a => a -> [a]
divisors n = [i | i <- [1..n], n `mod` i == 0]

isPrime :: Integral a => a -> Bool
isPrime n = divisors n == [1, n]

primes :: Integral a => [a]
primes = [x | x <- [1..], isPrime x]