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') 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