blob: 53e6fbcf8cf062a4ee29136d42f99f40699f6de6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
(.module:
[library
[lux "*"]]
[//
[monoid {"+" [Monoid]}]])
(type: .public (Mix F)
(Interface
(: (All (_ a b)
(-> (-> b a a) a (F b) a))
mix)))
(def: .public (with_monoid monoid mix value)
(All (_ F a)
(-> (Monoid a) (Mix F) (F a) a))
(let [(^open "/\[0]") monoid]
(mix /\composite /\identity value)))
|