summaryrefslogtreecommitdiff
path: root/ghc/compiler/tests/deSugar/ds025.hs
blob: c28b16d5bf74d51b024bd93bbd6ec4f508105a98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--!!! ds025 -- overloaded assoc -- AbsBinds

module Util where

ehead xs loc | null xs = error ("4"++loc)
             | True = head xs

assoc key lst loc
   = if (null res) then error ("1"++loc++"2"++(show key))
                   else (ehead res "3")
     where res = [ val | (key',val) <- lst, key==key']

assocMaybe :: (Eq a) => a -> [(a,b)] -> Maybe b
assocMaybe key lst
 = if (null res) then Nothing else (Just (head res))
   where res =  [ val | (key',val) <- lst, key==key']

data Maybe a = Just a | Nothing deriving ()