Haskell - List Comprehension - get Input-Elements -


i have problem list comprehension, if input list.

in these iii excercises it's not allowed use: map, filter , concat!!!


part i

requirements:

a funktion f1 gets list xs of tripels (a, b, cs) a , b of type int c of type [int]

the function should generate list of pairs (a · b, b + c), c in cs , in generated list should appear pairs in 1st element bigger 2nd 1 - (a · b) > b + c.

example:

f1  [(10,20,[1,10,100]),  (4,5,[5,15,25])]  

should return following list:

[(200,21),(200,30),(200,120),(20,10)] 

my attempts:

f1 :: int -> int -> [int] -> [(int, int)] f1 b cs = [(a*b, b+c)| c<-cs, (a*b)>(b+c)] 

it works fine, not lists input.

so tried several ways, unfortunately not right 1 :-(

f1 :: [(int, int, [int])] -> [(int, int)] 

1st approach:

f1 xs = [((xs !! 0)*(xs !! 1), (xs !! 1)+c)| c<-(xs !! 2), ((xs !! 0)*(xs !! 1))>((xs !! 1)+c)] 

2nd approach:

f1 let (a, b, cs) = xs = [(a*b, b+c)| c<-cs, (a*b)>(b+c)] 

3rd approach:

f1 (a b cs) = [(a*b, b+c)| c<-cs, (a*b)>(b+c)] 

all 3 don't work!

solution dave4420:

f1 :: [(int, int, [int])] -> [(int, int)] f1 xs = [ (a*b, b+c) | (a, b, cs) <- xs, c <- cs, (a*b)>(b+c) ] 

part ii

requirements:

a function g1 gets list of pairs of same type , generate plain list out of it.

example:

g1 [(1,2),(3,4),(5,6)] returns [1,2,3,4,5,6] 

my attempt:

g1 :: [(int, int)] -> [int] g1 xs = [a,b | (a,b)<-xs] 

i compiling error because a,b in output of list comprehension not have correct syntax.

however can return or b or e.g. a+b:

g1 xs = [a | (a,b)<-xs] 

or

g1 xs = [a+b | (a,b)<-xs] 

could please me out of too?

thanks once again

part iii coming...

f1 :: [(int, int, [int])] -> [(int, int)] f1 xs = [ {-todo-} | (a, b, cs) <- xs, c <- cs, {-todo-} ] 

i have left couple of {-todo-}s fill in.


part ii.

if had write

g1' :: [[int]] -> [int] 

how that? can modify g1' g1 desire?


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -