From e61a59a792be2d2d1130067d6691622a32052a6c Mon Sep 17 00:00:00 2001 From: totycro Date: Tue, 15 May 2012 02:49:41 +0200 Subject: yield_gtf compiliert --- AufgabeFFP6.hs | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/AufgabeFFP6.hs b/AufgabeFFP6.hs index b786854..73e5d62 100644 --- a/AufgabeFFP6.hs +++ b/AufgabeFFP6.hs @@ -29,7 +29,7 @@ eval f g = myfoldl' (elems g) (elems f) yield :: F -> W -> [G] yield = yield_bt --- yield = yield_gtf +--yield = yield_gtf -------------------------------------------------------------------------------- @@ -88,7 +88,40 @@ yield_bt f w = map (\(_, _, _, g) -> listArray (1, length g) g) nodes -------------------------------------------------------------------------------- --- yield_gtf :: F -> W -> [G] +yield_gtf :: F -> W -> [G] +yield_gtf = filt . transform . generate + +generate :: F -> W -> (F, W, [G]) +--generate f w = (f, w, [ array (1,n) [ (i, j) | i<-[1..n], j<-[(+), (-), (*)] ] ] ) +generate f w = (f, w, [ array (1,n) [(i, j) | i<-[1..n], j<-[(+)] ] ] ) + where + n = snd $ bounds f + --ops = [(+), (-), (*), (./.)] + --entries = [ (i, j) | i<-[1..3] , j<-ops ] + +transform :: (W -> (F,W,[G])) -> W -> ((F, W, [G]), [W]) +transform fun = fun2 + where + fun2 = \w -> (fun w, [1]) + +filt :: (W -> ((F,W,[G]),[W]) ) -> W -> [G] +filt fun w = [ g!!i | i <- [0..n], res!!i == w ] + where + ( (f, _, g), res ) = fun w + n = (length g) - 1 + +third :: (F, W, [G]) -> [G] +third (_, _, g) = g + +--generate :: F -> (F, W, [G]) +--generate f = \w -> (f, w, [ array (1,2) [ (1,(+)), (2,(+)) ] ] ) +-- +--transform :: (F, W, [G]) -> (F, W, [G]) +--transform fun = fun +-- +--filt :: (F, W, [G]) -> [G] +--filt (f, w, g) = g + -------------------------------------------------------------------------------- -- cgit v1.2.3