packages feed

agda2hs-1.4: lib/base/Haskell/Data/Maybe.agda

module Haskell.Data.Maybe where

open import Haskell.Prelude

isJust : Maybe a → Bool
isJust Nothing  = False
isJust (Just _) = True

isNothing : Maybe a → Bool
isNothing Nothing  = True
isNothing (Just _) = False

fromJust : (x : Maybe a) → @0 {IsJust x} → a
fromJust Nothing  = error "fromJust Nothing"
fromJust (Just x) = x

fromMaybe : {a : Type} → a → Maybe a → a
fromMaybe d Nothing = d
fromMaybe _ (Just x) = x

listToMaybe : List a → Maybe a
listToMaybe [] = Nothing
listToMaybe (x ∷ _) = Just x

maybeToList : Maybe a → List a
maybeToList Nothing = []
maybeToList (Just x) = x ∷ []

mapMaybe : (a → Maybe b) → List a → List b
mapMaybe f [] = []
mapMaybe f (x ∷ xs) = maybe id _∷_ (f x) (mapMaybe f xs)

catMaybes : List (Maybe a) → List a
catMaybes = mapMaybe id