Skip to content
This repository was archived by the owner on Feb 8, 2022. It is now read-only.
This repository was archived by the owner on Feb 8, 2022. It is now read-only.

Algebra Syntax (was #78 Symbolic Infix Operators) #199

@benhutchison

Description

@benhutchison

Goals:

  1. Enable use of syntax (infix or postfix operators) over datatypes for which Algebra typeclasses are defined, when using Algera standalone (doesn't require Spire or Algebird)
  2. (Lower priority) Achieve the above without duplicating syntax code between Algebra and Cats.

This issue extends #78 and links some recent gitter discussion. I chose a new issue over extending #78 because of the introduction of cats-kernel (eg #152) means that much discussion from the earlier issue is out of date.

As of Jan 2017:

  • The most fundamental typeclasses definitions sit in cats-kernel. Algebra builds upon them.
  • They have syntax, but it lives in cats-core, and so aren't available to Algebra.
  • Algebra defines another layer of typeclasses, but without syntax.
  • Spire depends-upon- and defines-syntax- for Algebra and Cats-Kernel typeclasses.
  • Algebird depends upon Algebra and Cats Kernel typeclasses, and AFAICT defines some very limited syntax over them.

In my (possibly overly idealistic) view, there are three problems here:

  • If you want to use cats-kernel or Algebra standalone you don't have any syntax/infix operators.
  • Syntax isn't defined along with the typeclasses to which it applies (ie related concerns are spaced wide apart).
  • There's syntax code duplication between Spire, Cats-Core and Algebird.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions