Git Product home page Git Product logo

swiftz's Introduction

Swiftz

Swiftz is a Swift library for functional programming.

It defines purely functional data structures and functions.

Implemented:

  • Control/Base functions
  • Maybe<A> with Equatable and Comparable
  • Num typeclass
  • Semigroup<A> and Monoid<A> with some instances

Typechecks but currently impossible:

  • Either<A, B> with Equatable
  • List<A>

Note:

The "currently impossible" data structures we think the language intends to support.

Not realised:

These abstractions require language features that Swift does not support yet.

  • Either<A, B> crashes with unimplemented IRGen feature! non-fixed multi-payload enum layout. rdar://17109392
  • List<A> by an enum crashes the compiler. rdar://???
  • List<A> via a super class and 2 sub classes crashes with unimplemented IRGen feature! non-fixed class layout. rdar://17109323
  • Functor, Applicative, Monad, Comonad. To enable these, a higher kind, C++ template-template, or Scala-like kind system is needed. rdar://???

General notes:

  • enum should derive Equatable and Comparable if possible, similar to case classes in Scala. Or a deriving mechanic like generics should be present. rdar://???

swiftz's People

Contributors

berkus avatar cartazio avatar mxswd avatar

Watchers

 avatar  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.