Modulok Haskellben
- Fájlnév nagy kezdőbetűvel kezdődik, .hs kezdőbetű
- Fejléc kommenttel
module Modulnév wheremodule Second where
Interpreter parancsok
- Betöltés interpreterrel:
:l fájlnév - Interpreter parancsok:
:? - Fontosabbak:
:cd,:l,:r(reload),:t(type)
Logikai típusok
-- Szám (Num a -> a):
1, 4, 193
-- Karakter (Char):
'a', '*', '\n'
-- Logikai (Bool):
True, FalseNincs automatikus típus konverzió!
Függvény definíció
-- név minta def akció
inc n = n + 1
-- Függvény mintaillesztéssel
-- A definíció előtt elvárt (az órákon), hogy meg legyen adva a típus definíció
not' :: Bool -> Bool
not' False = True
not' True = False
-- Ez a függvény nem formális paramétereket használ, hanem konkrét értéket fogadMintaillesztés
-- Az elsőként megadott illeszkedő mintát fogja végrehajtani
not' False = True
not' n = False
-- Mivel az n paramétert nem használjuk fel a függvény törzsében, emiatt az alulvonás mintát célszerű használni
not' False = True
not' _ = False
-- A jobb oldalon az alulvonásra nem lehet hivatkozni, ezzel jelezzük, hogy ez nem lesz felhasználva
-- INTERPRETER
:t not'
>> not' :: Bool -> Bool
:t not' True
>> not' :: True -> BoolSzámértékek
- Integral = nem típus, hanem az egész értékek csoportja
Int: korlátolt pontosságInteger: tetszőleges pontosságú típus (alapértelmezett)
- Nincs a kettő között automatikus átjárás
>> 2^64 :: Int -- itt nem konverzió történik, hanem így fog a függvény megszületni
>> (3 :: Int) + (4 :: Integer) -- Ez nem működik!- Fractional - ez sem típus!
Double: alapértelmezett, dupla pontosságFloat: egyszeres pontosság

Mintaillesztés számokra
isZero :: Int -> Bool
isZero 0 = True
isZero _ = False
-- Megadható típuscsoportokként is (method overloading)
-- Erről később majd többet beszélünk
isZero :: Integral a => a -> Bool
isZero 0 = True
isZero _ = False