FLP
Obsah |
Haskell
Stránka o programování v jazyce haskell.
Základní funkce
- init - vrátí sezname kromě posledního prvku
- last - vrátí seznam kromě prvního prvku
- head - vrátí první prvek ze seznamu
- last - vrátí poslední prvek seznamu
Znovunačtení souboru
>> :r
Příklady
Struktura pro lambda kalkul
data Lam = Var String | Abs ( Lam ) ( Lam ) | App ( String ) ( Lam ) deriving (Show, Eq)
Nalezení všech volných proměnných, pokud nemůžeme použít elem, tak si jej nadefinujeme.
my_elem it ll = (filter (==it) ll ) /= []
Jsou potřeba řešit 3 případy, které jsou dány 3 základními prvky lambda kalkulu: proměnná, aplikace, abstrakce. Myšlenkou je, že si udržujeme počet všech vázaných proměnných. Pokud nalezneme proměnou, která není ve vázaných, tak je volná a vrátíme ji na výstup (díky rekurzi probublají jako výsledek, aniž by je bylo potřeba přímo ukládat). Vázané proměnné jsou definovány pouze v abstrakci a tedy všechny které jsou pak "nalevo" a stejného jména, tak jsou vázané.
get_free lam = eval lam []
where
eval (Var a) ll = if my_elem a ll then [] else [a]
eval (Abs b c) ll = (eval b ll) ++ (eval c ll)
eval (App a b) ll = eval b (a:ll)
Prolog
Stránka o programování v jazyce prolog.
Načtení souboru pro wsi-prolog
>> compile('filename.pl')
- nonvar a var testuje zda se jedná o proměnou nebo hodnotu. Funkce var vrací true pokud se jedná o proměnou např. X, _ , kdežto nonvar vrací true v případě že se jedná o hodnotu např. 'jana', 1.
var(1). -> false.
var('jana'). -> false.
var(_). - > true.
var(X). - > true.
nonvar(1). -> true.
nonvar('jana'). -> true.
nonvar(_). - > false.
nonvar(X). - > false.
Gödel
Výpočet fibonaccio čísel
MODULE Fibonacci.
IMPORT Integers.
PREDICATE Fib : Integer * Integer.
Fib(0,0).
Fib(1,1).
Fib(k,n) <-
k > 1 &
FibIt(k-2,1,1,n).
PREDICATE FibIt : Integer * Integer * Integer * Integer.
FibIt(0,_,g,g).
FibIt(k,f,g,n) <-
k > 0 &
g < n &
FibIt(k-1,g,f+g,n).
Výpočet faktoriálu
MODULE Factorial IMPORT Integers
PREDICATE Fac: Integer * Integer
Fac(0,1).
Fac(1,1).
Fac(k,v) <-
k > 1 &
Fac(k-1, v*k).
Zjistí zda je číslo prvočíslo
MODULE PRIME. IMPORT Integers. PREDICATE Prime : Integer. Prime(prime) <- ~ SOME [x] (x > 1 & x < prime & prime Mod x = 0).