Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revizePředchozí verzeNásledující verze | Předchozí verze | ||
| flp:start [25. 05. 2012, 12.33:54] – [Haskell] smazany predelane priklady pitel | flp:start [02. 08. 2026, 04.21:03] (aktuální) – odstraněno - upraveno mimo DokuWiki (Neznámé datum) 127.0.0.1 | ||
|---|---|---|---|
| Řádek 1: | Řádek 1: | ||
| - | ====== Funkcionální a logické programování ====== | ||
| - | {{ https:// | ||
| - | ===== Lambda kalkul ===== | ||
| - | [[wp> | ||
| - | * **α-konverze** -- λ// | ||
| - | * **β-konverze** -- (λ// | ||
| - | * **η-konverze** -- λ// | ||
| - | ^ '' | ||
| - | ^ '' | ||
| - | ^ '' | ||
| - | ^ '' | ||
| - | ^ '' | ||
| - | ^ '' | ||
| - | ^ '' | ||
| - | |||
| - | < | ||
| - | < | ||
| - | |||
| - | ^ 0, 1, 2, 3, ... |λ// | ||
| - | ^ succ | λ// | ||
| - | ^ add | λ// | ||
| - | ^ mult | λ// | ||
| - | ^ // | ||
| - | ^ iszero | ||
| - | ^ if then else | λ// | ||
| - | ^ tuple | λ// | ||
| - | ^ first | λ// | ||
| - | ^ second | ||
| - | ===== Haskell ===== | ||
| - | * [[http:// | ||
| - | * **[[https:// | ||
| - | |||
| - | <code haskell> | ||
| - | --Sepsal Mike T | ||
| - | import IO | ||
| - | |||
| - | {- | ||
| - | -- Jen pro pripomenuti: | ||
| - | data IOMode = ReadMode | WriteMode | AppendMode | ReadWriteMode | ||
| - | getLine :: IO String | ||
| - | putStrLn :: String -> IO () | ||
| - | type FilePath = [Char] -- tj. jméno souboru | ||
| - | openFile :: FilePath -> IOMode -> IO Handle | ||
| - | hIsEOF :: Handle -> IO Bool | ||
| - | hGetLine :: Handle -> IO String | ||
| - | hClose :: Handle -> IO () | ||
| - | hGetContents :: Handle -> IO String | ||
| - | readFile :: FilePath -> IO String | ||
| - | lines :: String -> [String] | ||
| - | unlines :: [String] -> String | ||
| - | words :: String -> [String] | ||
| - | unwords :: [String] -> String | ||
| - | -} | ||
| - | |||
| - | -- Spocte pocet radku v souboru. | ||
| - | countLines file = do | ||
| - | content <- readFile file | ||
| - | putStrLn $ show $ length $ lines content | ||
| - | |||
| - | -- Spocte pocet slov v prvnich n radcich v souboru. | ||
| - | countWordsN file n = do | ||
| - | content <- readFile file | ||
| - | putStrLn $ show $ length $ words $ unlines $ take n $ lines content | ||
| - | |||
| - | -- Prokladane vypise obsah souboru na vystup. | ||
| - | prokladane file1 file2 = do | ||
| - | h1 <- openFile file1 ReadMode | ||
| - | h2 <- openFile file2 ReadMode | ||
| - | c1 <- hGetContents h1 | ||
| - | c2 <- hGetContents h2 | ||
| - | write (lines c1) (lines c2) | ||
| - | | ||
| - | | ||
| - | where | ||
| - | write [] _ = return () | ||
| - | write _ [] = return () | ||
| - | write (x:xs) (y:ys) = do | ||
| - | putStrLn x | ||
| - | putStrLn y | ||
| - | write xs ys | ||
| - | |||
| - | -- Vypise obsah souboru s cisly radky. | ||
| - | printWithLineNumber file = do | ||
| - | h <- openFile file ReadMode | ||
| - | c <- hGetContents h | ||
| - | write (lines c) 1 | ||
| - | hClose h | ||
| - | where | ||
| - | write [] _ = return () | ||
| - | write (x:xs) n = do | ||
| - | putStrLn $ (show n) ++ ". " ++ x | ||
| - | write xs (n+1) | ||
| - | |||
| - | -- Vypise radky na vystup, ktere jsou v obou souborech, ve stejnem poradi. | ||
| - | copyOut file1 file2 = do | ||
| - | h1 <- openFile file1 ReadMode | ||
| - | h2 <- openFile file2 ReadMode | ||
| - | c1 <- hGetContents h1 | ||
| - | c2 <- hGetContents h2 | ||
| - | putStr $ unlines $ [x | x <- lines c1, y <- lines c2, x == y] | ||
| - | hClose h1 | ||
| - | hClose h2 | ||
| - | |||
| - | -- Nacte radek a slova vypise v opacnem poradi. | ||
| - | reverseOut = do | ||
| - | line <- getLine | ||
| - | if null line | ||
| - | then return () | ||
| - | else do | ||
| - | putStrLn $ rev line | ||
| - | reverseOut | ||
| - | where rev l = unwords $ foldl (\acc x -> x : acc) [] (words l) | ||
| - | </ | ||
| - | ===== Strukturální indukce ===== | ||
| - | [[wp> | ||
| - | |||
| - | <code haskell> | ||
| - | foldr :: (a -> b -> b) -> b -> [a] -> b | ||
| - | foldr f z [] | ||
| - | foldr f z (x:xs) = f x (foldr f z xs) | ||
| - | </ | ||
| - | <code haskell> | ||
| - | foldl :: (a -> b -> a) -> a -> [b] -> a | ||
| - | foldl f z [] | ||
| - | foldl f z (x:xs) = foldl f (f z x) xs | ||
| - | </ | ||
| - | <code haskell> | ||
| - | map :: (a -> b) -> [a] -> [b] | ||
| - | map f [] = [] | ||
| - | map f (x:xs) = f x : map f xs | ||
| - | </ | ||
| - | <code haskell> | ||
| - | (++) :: [a] -> [a] -> [a] | ||
| - | [] ++ ys = ys | ||
| - | (x:xs) ++ ys = x : (xs ++ ys) | ||
| - | </ | ||
| - | <code haskell> | ||
| - | take :: Int -> [a] -> [a] | ||
| - | take n _ | n <= 0 = [] | ||
| - | take _ [] = [] | ||
| - | take n (x: | ||
| - | </ | ||
| - | <code haskell> | ||
| - | drop :: Int -> [a] -> [a] | ||
| - | drop n xs | n <= 0 = xs | ||
| - | drop _ [] = [] | ||
| - | drop n (_: | ||
| - | </ | ||
| - | <code haskell> | ||
| - | head :: [a] -> a | ||
| - | head (x:_) | ||
| - | head [] = error " | ||
| - | </ | ||
| - | <code haskell> | ||
| - | tail :: [a] -> [a] | ||
| - | tail (_: | ||
| - | tail [] = error " | ||
| - | </ | ||
| - | <code haskell> | ||
| - | last :: [a] -> a | ||
| - | last [x] | ||
| - | last (_: | ||
| - | last [] = error " | ||
| - | </ | ||
| - | <code haskell> | ||
| - | init :: [a] -> [a] | ||
| - | init [x] | ||
| - | init (x: | ||
| - | init [] = error " | ||
| - | </ | ||
| - | <code haskell> | ||
| - | length | ||
| - | length [] = 0 | ||
| - | length (_:l) | ||
| - | </ | ||
| - | <code haskell> | ||
| - | filter :: (a -> Bool) -> [a] -> [a] | ||
| - | -- filter p xs = [x | x <- xs, p x] | ||
| - | filter p [] = [] | ||
| - | filter p (x:xs) | p x = x : filter p xs | ||
| - | | otherwise = filter p xs | ||
| - | </ | ||
| - | <code haskell> | ||
| - | takeWhile | ||
| - | takeWhile p [] = [] | ||
| - | takeWhile p (x: | ||
| - | | p x | ||
| - | | otherwise = [] | ||
| - | </ | ||
| - | <code haskell> | ||
| - | dropWhile | ||
| - | dropWhile p [] = [] | ||
| - | dropWhile p xs@(x: | ||
| - | | p x | ||
| - | | otherwise = xs | ||
| - | </ | ||
| - | ===== Prolog ===== | ||
| - | [[99pl]] | ||