blob: 28dd71ce1588dd7abffcf9b3b2c6ad9e2f228af8 (
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
["[0]" 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))))))
|