? help

23 views
Skip to first unread message

Nestor Chia

unread,
Apr 26, 2013, 10:47:29 AM4/26/13
to introduction-to-funct...@googlegroups.com

Main>

maximoSegun length ["dejate", "ser"]

"dejate"

Main>

maximoSegun id [1, 2, 3, 4, 5, 6]

6

Main>

maximoSegun (^2) [-1, -3, 2, 0]

-3
I cant do it ,I DO
maximoSegun :: (a -> Int) -> [a] ->Int  ---DECLARACION DE TIPOS
maximoSegun f []  = 0
maximoSegun f [x] = f x
maximoSegun f  (x:xs) |f x > maximoSegun f xs = f x
                      | otherwise = maximoSegun f xs 
BUT
{-*Main> maximoSegun length ["dejate", "ser"]
6 ....
*Main> maximoSegun id [1, 2, 3, 4, 5, 6]
6
*Main> maximoSegun (^2) [-1, -3, 2, 0]
9.....
-}
 
 

Bassel Mannaa

unread,
Apr 26, 2013, 11:08:54 AM4/26/13
to introduction-to-funct...@googlegroups.com

Main>



maximoSegun length ["dejate", "ser"]

"dejate"

Main>



maximoSegun id [1, 2, 3, 4, 5, 6]

6

Main>



maximoSegun (^2) [-1, -3, 2, 0]

-3

If this is how you want the result, you can do 

maximoSegun :: (a -> Int) -> [a] -> a
maximoSegun f l = l !! i
        where i =  head $ findIndices (== (maximum l')) l'
              l' = map f l


~Bassel

Reply all
Reply to author
Forward
0 new messages