Skip to content

Moved Category to Effect: issue #1636 #1735

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Mar 21, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,17 @@ Non-backwards compatible changes
`Codata` which used sized types have been moved inside a new folder named
`Sized`, e.g. `Codata.Stream` has become `Codata.Sized.Stream`.

#### Moved `Category` modules to `Effect`

* As observed by Wen Kokke in Issue #1636, it no longer really makes sense
to group the modules which correspond to the variety of concepts of
(effectful) type constructor arising in functional programming (esp. in haskell)
such as `Monad`, `Applicative`, `Functor`, etc, under `Category.*`, as this
obstructs the importing of the `agda-categories` development into the Standard Library,
and moreover needlessly restricts the applicability of categorical concepts to this
(highly specific) mode of use. Correspondingly, modules grouped under `*.Categorical.*`
which exploited these structures for effectful programming have been renamed `*.Effectful`.

### Improvements to pretty printing and regexes

* In `Text.Pretty`, `Doc` is now a record rather than a type alias. This
Expand Down
8 changes: 4 additions & 4 deletions GenerateEverything.hs
Original file line number Diff line number Diff line change
Expand Up @@ -117,29 +117,29 @@ sizedTypesModules = map modToFile
, "Codata.Sized.Cofin.Literals"
, "Codata.Sized.Colist"
, "Codata.Sized.Colist.Bisimilarity"
, "Codata.Sized.Colist.Categorical"
, "Codata.Sized.Colist.Effectful"
, "Codata.Sized.Colist.Properties"
, "Codata.Sized.Conat"
, "Codata.Sized.Conat.Bisimilarity"
, "Codata.Sized.Conat.Literals"
, "Codata.Sized.Conat.Properties"
, "Codata.Sized.Covec"
, "Codata.Sized.Covec.Bisimilarity"
, "Codata.Sized.Covec.Categorical"
, "Codata.Sized.Covec.Effectful"
, "Codata.Sized.Covec.Instances"
, "Codata.Sized.Covec.Properties"
, "Codata.Sized.Cowriter"
, "Codata.Sized.Cowriter.Bisimilarity"
, "Codata.Sized.Delay"
, "Codata.Sized.Delay.Bisimilarity"
, "Codata.Sized.Delay.Categorical"
, "Codata.Sized.Delay.Effectful"
, "Codata.Sized.Delay.Properties"
, "Codata.Sized.M"
, "Codata.Sized.M.Bisimilarity"
, "Codata.Sized.M.Properties"
, "Codata.Sized.Stream"
, "Codata.Sized.Stream.Bisimilarity"
, "Codata.Sized.Stream.Categorical"
, "Codata.Sized.Stream.Effectful"
, "Codata.Sized.Stream.Instances"
, "Codata.Sized.Stream.Properties"
, "Codata.Sized.Thunk"
Expand Down
14 changes: 7 additions & 7 deletions README.agda
Original file line number Diff line number Diff line change
Expand Up @@ -64,10 +64,6 @@ module README where

import README.Axiom

-- • Category
-- Category theory-inspired idioms used to structure functional
-- programs (functors and monads, for instance).

-- • Codata
-- Coinductive data types and properties. There are two different
-- approaches taken. The `Codata.Sized` folder contains the new more
Expand All @@ -77,6 +73,10 @@ import README.Axiom
-- • Data
-- Data types and properties.

-- • Effect
-- Category theory-inspired idioms used to structure functional
-- programs (functors and monads, for instance).

import README.Data

-- • Function
Expand Down Expand Up @@ -162,9 +162,9 @@ import Codata.Sized.Colist -- Colists.

-- • Some types used to structure computations

import Category.Functor -- Functors.
import Category.Applicative -- Applicative functors.
import Category.Monad -- Monads.
import Effect.Functor -- Functors.
import Effect.Applicative -- Applicative functors.
import Effect.Monad -- Monads.

-- • Equality

Expand Down
10 changes: 5 additions & 5 deletions README/Data.agda
Original file line number Diff line number Diff line change
Expand Up @@ -157,13 +157,13 @@ import Data.Vec.Relation.Unary.All
import Data.Maybe.Relation.Unary.All


-- 6. A `Categorical` module/folder that contains categorical
-- 6. An `Effectful` module/folder that contains effectful
-- interpretations of the datatype.

import Data.List.Categorical
import Data.Maybe.Categorical
import Data.Sum.Categorical.Left
import Data.Sum.Categorical.Right
import Data.List.Effectful
import Data.Maybe.Effectful
import Data.Sum.Effectful.Left
import Data.Sum.Effectful.Right


-- 7. A `Function` folder that contains lifting of various types of
Expand Down
2 changes: 1 addition & 1 deletion README/Data/Container/FreeMonad.agda
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

module README.Data.Container.FreeMonad where

open import Category.Monad
open import Effect.Monad
open import Data.Empty
open import Data.Unit
open import Data.Bool.Base using (Bool; true)
Expand Down
10 changes: 5 additions & 5 deletions src/Algebra/Lattice/Properties/BooleanAlgebra/Expression.agda
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,15 @@ module Algebra.Lattice.Properties.BooleanAlgebra.Expression

open BooleanAlgebra B

open import Category.Applicative
import Category.Applicative.Indexed as Applicative
open import Category.Monad
open import Effect.Applicative
import Effect.Applicative.Indexed as Applicative
open import Effect.Monad
open import Data.Fin.Base using (Fin)
open import Data.Nat.Base
open import Data.Product using (_,_; proj₁; proj₂)
open import Data.Vec.Base as Vec using (Vec)
import Data.Vec.Categorical as VecCat
import Function.Identity.Categorical as IdCat
import Data.Vec.Effectful as VecCat
import Function.Identity.Effectful as IdCat
open import Data.Vec.Properties using (lookup-map)
open import Data.Vec.Relation.Binary.Pointwise.Extensional as PW
using (Pointwise; ext)
Expand Down
2 changes: 1 addition & 1 deletion src/Codata/Musical/Colist.agda
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
module Codata.Musical.Colist where

open import Level using (Level)
open import Category.Monad
open import Effect.Monad
open import Codata.Musical.Notation
open import Codata.Musical.Conat using (Coℕ; zero; suc)
import Codata.Musical.Colist.Properties
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
------------------------------------------------------------------------
-- The Agda standard library
--
-- A categorical view of Colist
-- An effectful view of Colist
------------------------------------------------------------------------

{-# OPTIONS --without-K --sized-types #-}

module Codata.Sized.Colist.Categorical where
module Codata.Sized.Colist.Effectful where

open import Codata.Sized.Conat using (infinity)
open import Codata.Sized.Colist
open import Category.Functor
open import Category.Applicative
open import Effect.Functor
open import Effect.Applicative

functor : ∀ {ℓ i} → RawFunctor {ℓ} (λ A → Colist A i)
functor = record { _<$>_ = map }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
------------------------------------------------------------------------
-- The Agda standard library
--
-- A categorical view of Covec
-- An effectful view of Covec
------------------------------------------------------------------------

{-# OPTIONS --without-K --sized-types #-}

module Codata.Sized.Covec.Categorical where
module Codata.Sized.Covec.Effectful where

open import Codata.Sized.Conat
open import Codata.Sized.Covec

open import Category.Functor
open import Category.Applicative
open import Effect.Functor
open import Effect.Applicative

functor : ∀ {ℓ i n} → RawFunctor {ℓ} (λ A → Covec A n i)
functor = record { _<$>_ = map }
Expand Down
2 changes: 1 addition & 1 deletion src/Codata/Sized/Covec/Instances.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

module Codata.Sized.Covec.Instances where

open import Codata.Sized.Covec.Categorical
open import Codata.Sized.Covec.Effectful

instance
covecFunctor = functor
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
------------------------------------------------------------------------
-- The Agda standard library
--
-- A categorical view of Delay
-- An effectful view of Delay
------------------------------------------------------------------------

{-# OPTIONS --without-K --sized-types #-}

module Codata.Sized.Delay.Categorical where
module Codata.Sized.Delay.Effectful where

open import Codata.Sized.Delay
open import Function
open import Category.Functor
open import Category.Applicative
open import Category.Monad
open import Effect.Functor
open import Effect.Applicative
open import Effect.Monad
open import Data.These using (leftMost)

functor : ∀ {i ℓ} → RawFunctor {ℓ} (λ A → Delay A i)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
------------------------------------------------------------------------
-- The Agda standard library
--
-- A categorical view of Stream
-- An effectful view of Stream
------------------------------------------------------------------------

{-# OPTIONS --without-K --sized-types #-}

module Codata.Sized.Stream.Categorical where
module Codata.Sized.Stream.Effectful where

open import Data.Product using (<_,_>)
open import Codata.Sized.Stream
open import Effect.Functor
open import Effect.Applicative
open import Effect.Comonad
open import Function.Base
open import Category.Functor
open import Category.Applicative
open import Category.Comonad

functor : ∀ {ℓ i} → RawFunctor {ℓ} (λ A → Stream A i)
functor = record { _<$>_ = λ f → map f }
Expand Down
2 changes: 1 addition & 1 deletion src/Codata/Sized/Stream/Instances.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

module Codata.Sized.Stream.Instances where

open import Codata.Sized.Stream.Categorical
open import Codata.Sized.Stream.Effectful

instance
streamFunctor = functor
Expand Down
2 changes: 1 addition & 1 deletion src/Data/Container/FreeMonad.agda
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ open import Data.Product
open import Data.Container
open import Data.Container.Combinator using (const; _⊎_)
open import Data.W using (sup)
open import Category.Monad
open import Effect.Monad

infixl 1 _⋆C_
infix 1 _⋆_
Expand Down
2 changes: 1 addition & 1 deletion src/Data/Container/Indexed/FreeMonad.agda
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ module Data.Container.Indexed.FreeMonad where

open import Level
open import Function hiding (const)
open import Category.Monad.Predicate
open import Effect.Monad.Predicate
open import Data.Container.Indexed
open import Data.Container.Indexed.Combinator hiding (id; _∘_)
open import Data.Empty
Expand Down
6 changes: 3 additions & 3 deletions src/Data/Fin/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ module Data.Fin.Properties where

open import Axiom.Extensionality.Propositional
open import Algebra.Definitions using (Involutive)
open import Category.Applicative using (RawApplicative)
open import Category.Functor using (RawFunctor)
open import Effect.Applicative using (RawApplicative)
open import Effect.Functor using (RawFunctor)
open import Data.Bool.Base using (Bool; true; false; not; _∧_; _∨_)
open import Data.Empty using (⊥; ⊥-elim)
open import Data.Fin.Base
Expand Down Expand Up @@ -938,7 +938,7 @@ pigeonhole (s<s m<n@(s≤s _)) f with any? (λ k → f zero ≟ f (suc k))
punchOut-injective (f₀≢fₖ ∘ (i ,_)) _ fᵢ≡fⱼ

------------------------------------------------------------------------
-- Categorical
-- Effectful
------------------------------------------------------------------------

module _ {f} {F : Set f → Set f} (RA : RawApplicative F) where
Expand Down
2 changes: 1 addition & 1 deletion src/Data/Fin/Substitution/Lemmas.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

module Data.Fin.Substitution.Lemmas where

import Category.Applicative.Indexed as Applicative
import Effect.Applicative.Indexed as Applicative
open import Data.Fin.Substitution
open import Data.Nat hiding (_⊔_; _/_)
open import Data.Fin.Base using (Fin; zero; suc; lift)
Expand Down
10 changes: 5 additions & 5 deletions src/Data/List/Categorical.agda → src/Data/List/Effectful.agda
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
------------------------------------------------------------------------
-- The Agda standard library
--
-- A categorical view of List
-- An effectful view of List
------------------------------------------------------------------------

{-# OPTIONS --without-K --safe #-}

module Data.List.Categorical where
module Data.List.Effectful where

open import Category.Functor
open import Category.Applicative
open import Category.Monad
open import Data.Bool.Base using (false; true)
open import Data.List.Base
open import Data.List.Properties
open import Effect.Functor
open import Effect.Applicative
open import Effect.Monad
open import Function
open import Relation.Binary.PropositionalEquality as P
using (_≡_; _≢_; _≗_; refl)
Expand Down
2 changes: 1 addition & 1 deletion src/Data/List/Instances.agda
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
module Data.List.Instances where

open import Data.List.Base
open import Data.List.Categorical
open import Data.List.Effectful
open import Data.List.Properties
using (≡-dec)
open import Data.List.Relation.Binary.Pointwise
Expand Down
4 changes: 2 additions & 2 deletions src/Data/List/Membership/Propositional/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
module Data.List.Membership.Propositional.Properties where

open import Algebra using (Op₂; Selective)
open import Category.Monad using (RawMonad)
open import Effect.Monad using (RawMonad)
open import Data.Bool.Base using (Bool; false; true; T)
open import Data.Fin.Base using (Fin)
open import Data.List.Base as List
Expand All @@ -19,7 +19,7 @@ open import Data.List.Membership.Propositional
import Data.List.Membership.Setoid.Properties as Membershipₛ
open import Data.List.Relation.Binary.Equality.Propositional
using (_≋_; ≡⇒≋; ≋⇒≡)
open import Data.List.Categorical using (monad)
open import Data.List.Effectful using (monad)
open import Data.Nat.Base using (ℕ; zero; suc; pred; s≤s; _≤_; _<_; _≤ᵇ_)
open import Data.Nat.Properties
open import Data.Product hiding (map)
Expand Down
2 changes: 1 addition & 1 deletion src/Data/List/NonEmpty.agda
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
module Data.List.NonEmpty where

open import Level using (Level)
open import Category.Monad
open import Effect.Monad
open import Data.Bool.Base using (Bool; false; true; not; T)
open import Data.Bool.Properties
open import Data.List.Base as List using (List; []; _∷_)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
------------------------------------------------------------------------
-- The Agda standard library
--
-- A categorical view of List⁺
-- An effectful view of List⁺
------------------------------------------------------------------------

{-# OPTIONS --without-K --safe #-}

module Data.List.NonEmpty.Categorical where
module Data.List.NonEmpty.Effectful where

open import Agda.Builtin.List
import Data.List.Categorical as List
import Data.List.Effectful as List
open import Data.List.NonEmpty
open import Data.Product using (uncurry)
open import Category.Functor
open import Category.Applicative
open import Category.Monad
open import Category.Comonad
open import Effect.Functor
open import Effect.Applicative
open import Effect.Monad
open import Effect.Comonad
open import Function

------------------------------------------------------------------------
Expand Down
Loading