Haskell

Z Varhoo
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Založena nová stránka: == Zajímavé konstrukce Načtení souboru a vypsání dat do vstupu s informací o číslu řádku import IO showFile f1 = do h1 <- openFile f1 ReadMode c1 <- …)
 
 
(Nejsou zobrazeny 3 mezilehlé verze od 1 uživatele.)
Řádka 1: Řádka 1:
== Zajímavé konstrukce
+
== Interpret ==
  +
Pro haskell je několik interpretů:
  +
* hugs
  +
* ghci
  +
  +
Příkaz pro otevření souboru
  +
  +
:load <file>
  +
  +
příkaz pro znovu načtení souboru
  +
  +
:r
  +
  +
== Příklady ==
   
 
Načtení souboru a vypsání dat do vstupu s informací o číslu řádku
 
Načtení souboru a vypsání dat do vstupu s informací o číslu řádku
Řádka 8: Řádka 8:
 
c1 <- hGetContents h1
 
c1 <- hGetContents h1
 
putStr $ unlines $ [ (show a) ++ ": " ++ b | (a,b) <- (zip [0..(length ( lines c1 ))] (lines c1) ) ]
 
putStr $ unlines $ [ (show a) ++ ": " ++ b | (a,b) <- (zip [0..(length ( lines c1 ))] (lines c1) ) ]
  +
  +
  +
Vytvoření binárního stromu
  +
  +
data Tree a = Lf
  +
| Nd a (Tree a) (Tree a)
  +
deriving (Eq)
  +
  +
createTree x = Nd x Lf Lf
  +
  +
addTree (Nd c l r) x
  +
| x < c = if l == Lf
  +
then (Nd c (createTree x) r)
  +
else Nd c (addTree l x) r
  +
| x >= c = if r == Lf
  +
then Nd c l (createTree x)
  +
else Nd c l (addTree r x)
  +
  +
array2tree [] = error "empty array"
  +
array2tree (x:xs) = rr (createTree x) xs
  +
where rr tree [] = tree
  +
rr tree (x:xs) = rr (addTree tree x) xs
  +
  +
Procházení binárního stromu
  +
  +
inOrder Lf = []
  +
inOrder (Nd x l r) = (inOrder l) ++ (inOrder r)
  +
  +
preOrder Lf = []
  +
preOrder (Nd x l r) = (x:(preOrder l)) ++ (preOrder r)
  +
  +
postOdr Lf = []
  +
postOrder (Nd x l r) = (postOrder l) ++ (postOrder r) ++ [x]

Aktuální verze z 11. 5. 2012, 16:11

[editovat] Interpret

Pro haskell je několik interpretů:

  • hugs
  • ghci

Příkaz pro otevření souboru

:load <file>

příkaz pro znovu načtení souboru

:r

[editovat] Příklady

Načtení souboru a vypsání dat do vstupu s informací o číslu řádku

import IO
showFile f1 = do
  h1 <- openFile f1 ReadMode
  c1 <- hGetContents h1
  putStr $ unlines $ [ (show a) ++ ": " ++ b | (a,b) <- (zip [0..(length ( lines c1 ))] (lines c1) ) ]


Vytvoření binárního stromu

data Tree a = Lf 
         | Nd a (Tree a) (Tree a)
         deriving (Eq)
createTree x = Nd x Lf Lf
addTree (Nd c l r) x 
  |  x < c = if l == Lf 
        then (Nd c (createTree x) r)
        else Nd c (addTree l x) r
  | x >= c = if r == Lf 
        then Nd c l (createTree x) 
        else Nd c l (addTree r x)
array2tree [] = error "empty array"
array2tree (x:xs) = rr (createTree x) xs
  where rr tree [] = tree
        rr tree (x:xs) = rr (addTree tree x) xs

Procházení binárního stromu

inOrder Lf = []
inOrder (Nd x l r) = (inOrder l) ++ (inOrder r)
preOrder Lf = [] 
preOrder (Nd x l r) = (x:(preOrder l)) ++ (preOrder r)
postOdr Lf = [] 
postOrder (Nd x l r) = (postOrder l) ++ (postOrder r) ++ [x]
Osobní nástroje