Links und Funktionen
Sprachumschaltung

Navigationspfad
Sie sind hier: Startseite / Lehre / SS 2015 / Programmierung und Modellierung / ProMo Material / Code Vorlesung 28.5.


Inhaltsbereich

Code Vorlesung 28.5.

Code aus der Vorlesung am 28.5. * Listen umdrehen mit Akkumulator, foldl, etc. * Datentypdeklaration Bäume und Bäume falten

Haskell source code icon list.hs — Haskell source code, 1 KB (1115 bytes)

Dateiinhalt

revAcc :: [a] -> [a] -> [a]
revAcc []    acc = acc
revAcc (x:l) acc = revAcc l (x:acc)

-- revAcc2 l1 l2 = foldl l2 (\acc x -> x:acc) l1

revAcc2 l1 l2 = foldl l2 (:) l1


-- aus Gleichungen fuer foldl auf 06-18

-- revAcc2 [] l2 = l2
-- revAcc2 (x:t) l2 = foldl
--                     ((\acc x -> x:acc) x l2)
--                     (\acc x -> x:acc) 
--                     t
--                   = revAcc2 t  ((\acc x -> x:acc) x l2)
--                   = revAcc2 t (x:l2)



revSpec :: [a] -> [a]
revSpec []     = []
revSpec (x:l)  = revSpec l ++ [x]

revSpec2 l = foldr [] (\x old -> old ++ [x])


-- real = Int->Int 
-- integral :: real -> real -> (real->real) -> real -> real
--                                            ^
--                                            |
--                                 Stetigkeitsmodul
-- Ordnung 3


data Tree a = Empty | Node a (Tree a) (Tree a)

leaf a = Node a Empty Empty

foldTree fn fe Empty = fe
foldTree fn fe (Node a l r) = 
      fn  (foldTree fn fe l) a (foldTree fn fe r)

height :: Tree a -> Int

height t = foldTree (\fl x fr -> 1 + max fl fr)  0  t



 

Artikelaktionen


Funktionsleiste