17.03.2015 Views

¨Ubungsblatt 1 - Trash.net

¨Ubungsblatt 1 - Trash.net

¨Ubungsblatt 1 - Trash.net

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!