From 2139e72d8e7c58cb355799d4a8412a0c38fb481c Mon Sep 17 00:00:00 2001
From: Eduardo Julian
Date: Thu, 28 May 2020 02:18:02 -0400
Subject: Can now parse TAR files.

---
 .../spec/lux/abstract/functor/contravariant.lux    | 31 ++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 stdlib/source/spec/lux/abstract/functor/contravariant.lux

(limited to 'stdlib/source/spec/lux/abstract/functor')

diff --git a/stdlib/source/spec/lux/abstract/functor/contravariant.lux b/stdlib/source/spec/lux/abstract/functor/contravariant.lux
new file mode 100644
index 000000000..b21e28e68
--- /dev/null
+++ b/stdlib/source/spec/lux/abstract/functor/contravariant.lux
@@ -0,0 +1,31 @@
+(.module:
+  [lux #*
+   [abstract
+    [equivalence (#+ Equivalence)]
+    [monad (#+ do)]]
+   [data
+    [number
+     ["n" nat]]]
+   [control
+    ["." function]]
+   [math
+    ["." random]]
+   ["_" test (#+ Test)]]
+  {1
+   ["." / (#+ Functor)]})
+
+(def: (identity equivalence value (^open "/@."))
+  (All [f a] (-> (Equivalence (f a)) (f a) (Functor f) Test))
+  (_.test "Law of identity."
+          (equivalence
+           (/@map function.identity value)
+           value)))
+
+(def: #export (spec equivalence value functor)
+  (All [f a] (-> (Equivalence (f a)) (f a) (Functor f) Test))
+  (do random.monad
+    [sample random.nat]
+    (<| (_.with-cover [/.Functor])
+        ($_ _.and
+            (..identity equivalence value functor)
+            ))))
-- 
cgit v1.2.3