aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/test/lux/macro/poly/functor.lux
blob: 4eb05af3ca63b4c8f621ff36ee1dfa17b2690525 (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
(.module:
  [lux #*
   ["%" data/text/format (#+ format)]
   [abstract/monad (#+ do)]
   ["r" math/random (#+ Random)]
   ["_" test (#+ Test)]
   [control
    ["." state]]
   [data
    ["." identity]]
   [macro
    [poly (#+ derived:)]]]
  {1
   ["." /]})

(derived: maybe-functor (/.functor .Maybe))
(derived: list-functor (/.functor .List))
(derived: state-functor (/.functor state.State))
(derived: identity-functor (/.functor identity.Identity))

(def: #export test
  Test
  (<| (_.context (%.name (name-of /._)))
      (_.test "Can derive functors automatically."
              #1)))