blob: 6e6b2e8344a734091df9292b95b4546b4d2a54fe (
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
|
(.module:
[library
[lux "*"]]
[//
[functor
["." contravariant]]])
(type: .public (Equivalence a)
(Interface
(: (-> 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))))))
|