/
Classy.hs
121 lines (110 loc) · 4.55 KB
/
Classy.hs
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
{-# LANGUAGE NoImplicitPrelude, PolymorphicComponents #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-- | This module provides the first-class version
-- of the "ClassyPrelude" module.
module ModularPrelude.Module.Classy
( -- * Module interface
ClassyModule (..)
-- * Module contents
, ClassyPreludeImplements (..)
) where
import ModularPrelude
import ModularPrelude.Classy
import qualified ClassyPrelude as Classy
import qualified ClassyPrelude.Classes as Classy (replicate)
data ClassyModule = Classy
{ map :: CanMap f i o => (i -> o) -> f
, concatMap :: CanConcatMap f i o => (i -> o) -> f
, filter :: CanFilter f a => (a -> Bool) -> f
, length :: CanLength c i => c -> i
, singleton :: CanSingleton c i => i -> c
, null :: CanNull c => c -> Bool
, pack :: CanPack c i => [i] -> c
, unpack :: CanPack c i => c -> [i]
, mapM :: CanMapM f m i o => (i -> m o) -> f
, mapM_ :: CanMapM_ f m i => (i -> m o) -> f
, lookup :: CanLookup c k v => k -> c -> Maybe v
, insert :: CanInsert f => f
, delete :: CanDelete c k => k -> c -> c
, member :: CanMember c k => k -> c -> Bool
, readFile :: CanReadFile a => FilePath -> a
, writeFile :: CanWriteFile a => FilePath -> a
, stripPrefix :: CanStripPrefix a => a -> a -> Maybe a
, break :: CanBreak c i => (i -> Bool) -> c -> (c, c)
, span :: CanBreak c i => (i -> Bool) -> c -> (c, c)
, dropWhile :: CanBreak c i => (i -> Bool) -> c -> c
, takeWhile :: CanBreak c i => (i -> Bool) -> c -> c
, any :: CanAny c i => (i -> Bool) -> c -> Bool
, all :: CanAny c i => (i -> Bool) -> c -> Bool
, splitAt :: CanSplitAt c i => i -> c -> (c, c)
, take :: CanSplitAt c i => i -> c -> c
, drop :: CanSplitAt c i => i -> c -> c
, fold :: CanFold f a accum => (accum -> a -> accum) -> accum -> f
, words :: CanWords t => t -> [t]
, unwords :: CanWords t => [t] -> t
, lines :: CanWords t => t -> [t]
, unlines :: CanWords t => [t] -> t
, split :: CanSplit c i => (i -> Bool) -> c -> [c]
, stripSuffix :: CanStripSuffix a => a -> a -> Maybe a
, isSuffixOf :: CanStripSuffix a => a -> a -> Bool
, isInfixOf :: CanIsInfixOf a => a -> a -> Bool
, reverse :: CanReverse a => a -> a
, replicate :: CanReplicate a i l => l -> i -> a
, fromList :: CanPack c i => [i] -> c
, toList :: CanPack c i => c -> [i]
, empty :: Monoid w => w
, show :: (Show a, CanPack c Char) => a -> c
, readMay :: (Read b, CanPack a Char) => a -> Maybe b
, repack :: (CanPack a i, CanPack b i) => a -> b
}
class ClassyPreludeImplements interface where
_ClassyPrelude_ :: interface
instance ClassyPreludeImplements ClassyModule where
_ClassyPrelude_ = Classy
{ map = Classy.map
, concatMap = Classy.concatMap
, filter = Classy.filter
, length = Classy.length
, singleton = Classy.singleton
, null = Classy.null
, pack = Classy.pack
, unpack = Classy.unpack
, mapM = Classy.mapM
, mapM_ = Classy.mapM_
, lookup = Classy.lookup
, insert = Classy.insert
, delete = Classy.delete
, member = Classy.member
, readFile = Classy.readFile
, writeFile = Classy.writeFile
, stripPrefix = Classy.stripPrefix
, break = Classy.break
, span = Classy.span
, dropWhile = Classy.dropWhile
, takeWhile = Classy.takeWhile
, any = Classy.any
, all = Classy.all
, splitAt = Classy.splitAt
, take = Classy.take
, drop = Classy.drop
, fold = Classy.fold
, words = Classy.words
, unwords = Classy.unwords
, lines = Classy.lines
, unlines = Classy.unlines
, split = Classy.split
, stripSuffix = Classy.stripSuffix
, isSuffixOf = Classy.isSuffixOf
, isInfixOf = Classy.isInfixOf
, reverse = Classy.reverse
, replicate = Classy.replicate
, fromList = Classy.fromList
, toList = Classy.toList
, empty = Classy.empty
, show = Classy.show
, readMay = Classy.readMay
, repack = Classy.repack
}
instance Default ClassyModule where
def = _ClassyPrelude_