Links und Funktionen
Sprachumschaltung

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


Inhaltsbereich

Code Vorlesung 18.05.

foldl-Beispiel und Matrix-Transposition

Haskell source code icon transpose.hs — Haskell source code, 1 KB (1126 bytes)

Dateiinhalt

-------------------------------------------------------------
-- Code aus der Vorlesung "Programmierung und Modellierung"
-- am 18.05.2015 an der LMU München
-- verfasst von Martin Hofmann
--


-- Beispiel für foldl:
fakultaet :: Int -> Int
fakultaet n = foldl (*) 1 [1..n]

----

skalar :: Num a => [a] -> [a] -> a
skalar v1 v2 = foldl (+) 0  (zipWith (*) v1 v2)

type Matrix = [[Integer]] -- Matrix als Liste von Zeilen
m :: Matrix
m = [[1,2,3],[4,5,6],[7,8,9]]


--          [[1,2,3],                        [[2,3],
--transpose  [4,5,6],  = [1,4,7] : transpose  [5,6],
--           [7,8,9]]                         [8,9]]
--
--
--          [[1,2,3],    [[1,4,7],
--transpose  [4,5,6],  =  [2,5,8],
--           [7,8,9]]     [3,6,9]]
--
--                  [[1,2,3],    
--head_of_transpose  [4,5,6],  = [1,4,7]
--                   [7,8,9]]     

head_of_transpose m = map head m

transpose :: Matrix -> Matrix
transpose ([]:_) = []   -- leere Zeile
transpose m = head_of_transpose m : transpose (map tail m)

-- AUFGABE:
-- Koennen Sie transpose auch nicht-rekursiv,
-- also mit foldr, foldl, zipWith, etc. schreiben ?

Artikelaktionen


Funktionsleiste