Untitled
unknown
haskell
2 years ago
1.3 kB
20
Indexable
module Main (main) where -- Decide se todos os valores lógicos de uma lista são True and2 :: [Bool] -> Bool and2 [] = True and2 (x:xs) = x && and2 xs -- Concatena uma lista de listas concat2 :: [[a]] -> [a] concat2 [] = [] concat2 (xs:xss) = xs ++ concat2 xss -- Produz uma lista com n valores idênticos replicate2 :: Int -> a -> [a] replicate2 0 _ = [] replicate2 n x = x : replicate2 (n-1) x -- Seleciona o enésimo elemento de uma lista (!!!) :: [a] -> Int -> a (!!!) (x:_) 0 = x (!!!) (_:xs) i = (!!!) xs (i-1) -- Verifica se um valor é um elemento de uma lista elem2 :: Eq a => a -> [a] -> Bool elem _ [] = False elem2 e (x:xs) = e == x || elem2 e xs -- Retorna o menor elemento de uma lista minimo :: Ord a => [a] -> a minimo (x:xs) = minimo' x xs where minimo' mi [] = mi minimo' mi (y:ys) | mi <= y = minimo' mi ys | otherwise = minimo' y ys minimo2 (x:xs) = foldr min x xs -- Descarta a primeira ocorrência de um elemento numa lista descarta :: Eq a => a -> [a] -> [a] descarta _ [] = [] descarta e (x:xs) | e == x = xs | otherwise = x : descarta e xs -- Selection sort selectionSort :: Ord a => [a] -> [a] selectionSort [] = [] selectionSort [x] = [x] selectionSort xs = m : selectionSort (descarta m xs) where m = minimo xs main :: IO () main = do putStrLn "hello world"
Editor is loading...