summaryrefslogtreecommitdiff
path: root/testsuite/tests/backpack/should_run/bkprun05.bkp
blob: 1413574f36bf27bfde1c3e42ec0a70c88ba3ed59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
{-# LANGUAGE Haskell2010 #-}
{-# LANGUAGE RoleAnnotations #-}
unit app where
    signature Map where
        import Data.Typeable
        import Data.Data
        import Data.Traversable
        import Data.Foldable
        import Data.Monoid
        import Control.DeepSeq
        import Control.Applicative

        infixl 9 !,\\

        type role Map nominal representational
        data Map k a

        instance Functor (Map k)
        instance Foldable (Map k)
        instance Traversable (Map k)
        instance (Eq k, Eq a) => Eq (Map k a)
        instance (Data k, Data a, Ord k) => Data (Map k a)
        instance (Ord k, Ord v) => Ord (Map k v)
        instance (Ord k, Read k, Read e) => Read (Map k e)
        instance (Show k, Show a) => Show (Map k a)
        instance Ord k => Monoid (Map k v)
        instance (NFData k, NFData a) => NFData (Map k a)

        (!) :: Ord k => Map k a -> k -> a
        (\\) :: Ord k => Map k a -> Map k b -> Map k a
        null :: Map k a -> Bool
        size :: Map k a -> Int
        member :: Ord k => k -> Map k a -> Bool
        notMember :: Ord k => k -> Map k a -> Bool
        lookup :: Ord k => k -> Map k a -> Maybe a
        findWithDefault :: Ord k => a -> k -> Map k a -> a
        lookupLT :: Ord k => k -> Map k v -> Maybe (k, v)
        lookupGT :: Ord k => k -> Map k v -> Maybe (k, v)
        lookupLE :: Ord k => k -> Map k v -> Maybe (k, v)
        lookupGE :: Ord k => k -> Map k v -> Maybe (k, v)
        empty :: Map k a
        singleton :: k -> a -> Map k a
        insert :: Ord k => k -> a -> Map k a -> Map k a
        insertWith :: Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a
        insertWithKey :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a
        insertLookupWithKey :: Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a)
        delete :: Ord k => k -> Map k a -> Map k a
        adjust :: Ord k => (a -> a) -> k -> Map k a -> Map k a
        adjustWithKey :: Ord k => (k -> a -> a) -> k -> Map k a -> Map k a
        update :: Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a
        updateWithKey :: Ord k => (k -> a -> Maybe a) -> k -> Map k a -> Map k a
        updateLookupWithKey :: Ord k => (k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a)
        alter :: Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k a
        union :: Ord k => Map k a -> Map k a -> Map k a
        unionWith :: Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a
        unionWithKey :: Ord k => (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a
        unions :: (Foldable f, Ord k) => f (Map k a) -> Map k a
        unionsWith :: (Foldable f, Ord k) => (a -> a -> a) -> f (Map k a) -> Map k a
        difference :: Ord k => Map k a -> Map k b -> Map k a
        differenceWith :: Ord k => (a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a
        differenceWithKey :: Ord k => (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a
        intersection :: Ord k => Map k a -> Map k b -> Map k a
        intersectionWith :: Ord k => (a -> b -> c) -> Map k a -> Map k b -> Map k c
        intersectionWithKey :: Ord k => (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c
        mergeWithKey :: Ord k => (k -> a -> b -> Maybe c) -> (Map k a -> Map k c) -> (Map k b -> Map k c) -> Map k a -> Map k b -> Map k c
        map :: (a -> b) -> Map k a -> Map k b
        mapWithKey :: (k -> a -> b) -> Map k a -> Map k b
        traverseWithKey :: Applicative t => (k -> a -> t b) -> Map k a -> t (Map k b)
        mapAccum :: (a -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
        mapAccumWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
        mapAccumRWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b -> (a, Map k c)
        mapKeys :: Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a
        mapKeysWith :: Ord k2 => (a -> a -> a) -> (k1 -> k2) -> Map k1 a -> Map k2 a
        mapKeysMonotonic :: (k1 -> k2) -> Map k1 a -> Map k2 a
        foldr :: (a -> b -> b) -> b -> Map k a -> b
        foldl :: (a -> b -> a) -> a -> Map k b -> a
        foldrWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b
        foldlWithKey :: (a -> k -> b -> a) -> a -> Map k b -> a
        foldMapWithKey :: Monoid m => (k -> a -> m) -> Map k a -> m
        foldr' :: (a -> b -> b) -> b -> Map k a -> b
        foldl' :: (a -> b -> a) -> a -> Map k b -> a
        foldrWithKey' :: (k -> a -> b -> b) -> b -> Map k a -> b
        foldlWithKey' :: (a -> k -> b -> a) -> a -> Map k b -> a
        elems :: Map k a -> [a]
        keys :: Map k a -> [k]
        assocs :: Map k a -> [(k, a)]
        toList :: Map k a -> [(k, a)]
        fromList :: Ord k => [(k, a)] -> Map k a
        fromListWith :: Ord k => (a -> a -> a) -> [(k, a)] -> Map k a
        fromListWithKey :: Ord k => (k -> a -> a -> a) -> [(k, a)] -> Map k a
        toAscList :: Map k a -> [(k, a)]
        toDescList :: Map k a -> [(k, a)]
        fromAscList :: Eq k => [(k, a)] -> Map k a
        fromAscListWith :: Eq k => (a -> a -> a) -> [(k, a)] -> Map k a
        fromAscListWithKey :: Eq k => (k -> a -> a -> a) -> [(k, a)] -> Map k a
        fromDistinctAscList :: [(k, a)] -> Map k a
        filter :: (a -> Bool) -> Map k a -> Map k a
        filterWithKey :: (k -> a -> Bool) -> Map k a -> Map k a
        partition :: (a -> Bool) -> Map k a -> (Map k a, Map k a)
        partitionWithKey :: (k -> a -> Bool) -> Map k a -> (Map k a, Map k a)
        mapMaybe :: (a -> Maybe b) -> Map k a -> Map k b
        mapMaybeWithKey :: (k -> a -> Maybe b) -> Map k a -> Map k b
        mapEither :: (a -> Either b c) -> Map k a -> (Map k b, Map k c)
        mapEitherWithKey :: (k -> a -> Either b c) -> Map k a -> (Map k b, Map k c)
        split :: Ord k => k -> Map k a -> (Map k a, Map k a)
        splitLookup :: Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)
        splitRoot :: Map k b -> [Map k b]
        isSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool
        isSubmapOfBy :: Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool
        isProperSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool
        isProperSubmapOfBy :: Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool
        lookupIndex :: Ord k => k -> Map k a -> Maybe Int
        findIndex :: Ord k => k -> Map k a -> Int
        elemAt :: Int -> Map k a -> (k, a)
        updateAt :: (k -> a -> Maybe a) -> Int -> Map k a -> Map k a
        deleteAt :: Int -> Map k a -> Map k a
        findMin :: Map k a -> (k, a)
        findMax :: Map k a -> (k, a)
        deleteMin :: Map k a -> Map k a
        deleteMax :: Map k a -> Map k a
        deleteFindMin :: Map k a -> ((k, a), Map k a)
        deleteFindMax :: Map k a -> ((k, a), Map k a)
        updateMin :: (a -> Maybe a) -> Map k a -> Map k a
        updateMax :: (a -> Maybe a) -> Map k a -> Map k a
        updateMinWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a
        updateMaxWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a
        minView :: Map k a -> Maybe (a, Map k a)
        maxView :: Map k a -> Maybe (a, Map k a)
        minViewWithKey :: Map k a -> Maybe ((k, a), Map k a)
        maxViewWithKey :: Map k a -> Maybe ((k, a), Map k a)
        valid :: Ord k => Map k a -> Bool
    module App where
        import Map
        app = do
            let x = insert 0 "foo"
                  . delete 1
                  . insert 1 (errorWithoutStackTrace "this is an error")
                  . insert (6 :: Int) "foo"
                  $ empty
            print (member 1 x)
            print (toList x)
            print x

unit main where
    dependency app[Map=containers:Data.Map.Strict] (App as Strict)
    dependency app[Map=containers:Data.Map.Lazy] (App as Lazy)
    module Main where
        import qualified Strict
        import qualified Lazy
        main = Lazy.app >> Strict.app