summaryrefslogtreecommitdiff
path: root/src/Inky/Data/Assoc.idr
blob: 0818ba3201fee34ce2436c927512133925ec0699 (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
module Inky.Data.Assoc

export
infix 2 :-

public export
record Assoc (a : Type) where
  constructor (:-)
  name : String
  value : a

public export
Functor Assoc where
  map f x = x.name :- f x.value

namespace Irrelevant
  public export
  record Assoc0 (0 a : Type) (n : String) where
    constructor (:-)
    0 name : String
    {auto 0 prf : n = name}
    value : a

  public export
  map : (a -> b) -> Assoc0 a n -> Assoc0 b n
  map f (n :- x) = n :- f x

namespace Contexts
  public export
  record Assoc0 (0 p : a -> Type) (x : Assoc a) where
    constructor (:-)
    0 name : String
    {auto 0 prf : x.name = name}
    value : p x.value

  public export
  map : (forall x. p x -> q x) -> forall x. Assoc0 p x -> Assoc0 q x
  map f (n :- px) = n :- f px