-
Notifications
You must be signed in to change notification settings - Fork 642
/
Copy pathDefault.idr
47 lines (32 loc) · 916 Bytes
/
Default.idr
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
module Effect.Default
import Data.Vect
%access public export
interface Default a where
default : a
implementation Default Int where
default = 0
implementation Default Integer where
default = 0
implementation Default Double where
default = 0
implementation Default Nat where
default = 0
implementation Default Char where
default = '\0'
implementation Default String where
default = ""
implementation Default Bool where
default = False
implementation Default () where
default = ()
implementation (Default a, Default b) => Default (a, b) where
default = (default, default)
implementation Default (Maybe a) where
default = Nothing
implementation Default (List a) where
default = []
implementation Default a => Default (Vect n a) where
default = mkDef _ where
mkDef : (n : Nat) -> Vect n a
mkDef Z = []
mkDef (S k) = default :: mkDef k