Code Vorlesung 18.05.
foldl-Beispiel und Matrix-Transposition
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