Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/typelift/Swiftx

Functional data types and functions for any project
https://github.com/typelift/Swiftx

Last synced: 4 days ago
JSON representation

Functional data types and functions for any project

Awesome Lists containing this project

README

        

Swiftx
======

Swiftx is a Swift library containing functional abstractions and extensions to
the Swift Standard Library. Swiftx is a smaller and simpler way to introduce pure functional
datatypes into any codebase.

For a more full-featured library checkout [Swiftz](https://github.com/typelift/swiftz).

Setup
-----

Swiftx can be included one of two ways:

**Framework**

- Drag `Swiftx.xcodeproj` or `Swiftx-iOS.xcodeproj` into your project tree as a subproject
- Under your project's Build Phases, expand Target Dependencies
- Click the + and add Swiftx
- Expand the Link Binary With Libraries phase
- Click the + and add Swiftx
- Click the + at the top left corner to add a Copy Files build phase
- Set the directory to `Frameworks`
- Click the + and add Swiftx

**Standalone**

- Copy the swift files under `Swiftx/Swiftx` into your project.

Introduction
------------

Swiftx provides a number of common data types and abstractions any codebase can utilize.

A small example:

```swift
import Swiftx

let str : String? = .Some("Hello ")
let greeting = (+"World") <^> str // .Some("Hello World")
```

Seamless interaction with existing platform libraries is also possible with
minimal effort:

```swift
import Foundation
import struct Swiftx.Result

/// result now contains either an array of file paths or the error generated by `NSFileManager`.
let result : Result<[String]> = from({ ep in
let documentsDirectory : String = (NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String)
return (NSFileManager.defaultManager().contentsOfDirectoryAtPath(documentsDirectory, error: ep) as [String]?) ?? []
})
```

Swiftx can even help with expressions of nothingness or errors:

```swift
import Swiftx

/// We may not be able to do what we said we'd do, but this definition compiles. At runtime,
/// any code that invokes this function will immediately halt the program.
func provePEqualsNP() -> Proof

{
return undefined()
}
```

System Requirements
===================

Swiftx supports OS X 10.9+ and iOS 8.0+.

License
=======

Swiftx is released under the BSD license.