blob: a3df9e8e019996ce594f539e60fb866a5685aa94 (
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
|
(.using
[library
[lux (.full)]]
[//
[functor
["[0]" contravariant]]])
(type: .public (Equivalence a)
(Interface
(is (-> a a Bit)
=)))
(def: .public (rec sub)
(All (_ a)
(-> (-> (Equivalence a) (Equivalence a)) (Equivalence a)))
(implementation
(def: (= left right)
(sub = left right))))
(implementation: .public functor
(contravariant.Functor Equivalence)
(def: (each f equivalence)
(implementation
(def: (= reference sample)
(# equivalence = (f reference) (f sample))))))
|