Giter VIP home page Giter VIP logo

scala212-category-theory-set-initial-terminal-objects's Introduction

Build Status

scala212-category-theory-set-initial-terminal-objects

Reference: http://eed3si9n.com/herding-cats/initial.html

definition

Note that category set forms semiring with product and coproduct, so it makes sens to name some of its objects as 0 and 1. Further reading: https://github.com/mtumilowicz/scala212-category-theory-set-semiring

In any category C, an object

  • 0 is initial if for any object c e C there is exactly one isomorphism 0 -> c
  • 1 is terminal if for any object c e C there is exactly one isomorphism c -> 1

Remark: initial (terminal) objects are unique up to isomorphism.

project description

We will provide implementation of initial and terminal object in set category.

In Sets, the empty set is initial and any singleton set is terminal.

initial object

We take uninhabited type Nothing and we provide implementation of absurd function (https://hackage.haskell.org/package/void-0.6.1/docs/Data-Void.html).

def absurd[A]: Nothing => A = _ => ???
  • it cannot be called
  • it exists
    val obj = TerminalObjects
    obj.absurd[Int] should not be null
    

terminal object

We take singleton set Unit, there can be only one implementation of function between Unit and A

def unit[A](a: A): Unit = ()
test("single unit function") {
  val obj = TerminalObjects
  obj.unit(1) should be (obj.unit(2))
}

scala212-category-theory-set-initial-terminal-objects's People

Contributors

mtumilowicz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.