¨Ubungsblatt 1 - Trash.net
¨Ubungsblatt 1 - Trash.net
¨Ubungsblatt 1 - Trash.net
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Übersetzerbau<br />
22. 4. 2005 Übungsblatt 1<br />
Christoph Leuzinger<br />
Matr.-Nr. 111803<br />
Aufgabe 1.1<br />
extEuclid (n ,0) = (n ,1 ,0)<br />
extEuclid (n,m) = (d,x,y)<br />
where<br />
(d’,x’,y ’) = extEuclid (m , n ‘mod ‘ m)<br />
(d,x,y) = (d ’ , y ’ , x ’ - ( n ‘div ‘m) * y ’)<br />
Aufgabe 1.2<br />
pascal 1 = [1]<br />
pascal n = [1] ++ [ pascal ’ n x | x < - [2 .. (n -1) ]] ++ [1]<br />
where<br />
pascal ’ n x = foldl (+) 0 ( take 2 ( drop (x -2) ( pascal (n<br />
-1) )))<br />
Aufgabe 1.3<br />
1. mapIt f [] = []<br />
mapIt f [x ] = [ x]<br />
mapIt f l = ( head l) : ( mapIt f ( map f ( drop 1 l)))<br />
2. data NestedList a = Empty | Elem a | NestedNestedList (<br />
NestedList a) | Concat ( NestedList a) ( NestedList a)<br />
deriving ( Show )<br />
nestedElem ( Elem x) Empty = False<br />
nestedElem ( Elem x) ( Elem y) = x == y<br />
nestedElem ( Elem x) ( NestedNestedList y) = nestedElem (<br />
Elem x) y<br />
nestedElem ( Elem x) ( Concat y z) = ( nestedElem ( Elem x)<br />
y) || ( nestedElem ( Elem x) z)<br />
Aufgabe 1.3<br />
data Expr = Con Int | Var String | Sum [ Expr ] | Prod [ Expr ]<br />
deriving ( Show ,Eq)<br />
1
Übersetzerbau<br />
22. 4. 2005 Übungsblatt 1<br />
Christoph Leuzinger<br />
Matr.-Nr. 111803<br />
simplify ( Con x) = ( Con x)<br />
simplify ( Var x) = ( Var x)<br />
simplify ( Sum [x]) = simplify x<br />
simplify ( Sum (x:xs))<br />
| ( simplify x) == ( Con 0) = simplify ( Sum xs)<br />
| ( simplify ( Sum xs)) == ( Con 0) = simplify x<br />
| otherwise = Sum [ simplify x, simplify ( Sum xs)]<br />
simplify ( Prod [x]) = simplify x<br />
simplify ( Prod (x:xs))<br />
| ( simplify x) == ( Con 0) = Con 0<br />
| ( simplify ( Prod xs)) == ( Con 0) = Con 0<br />
| otherwise = Prod [ simplify x, simplify ( Prod xs)]<br />
2