Runes 5.1.0

Runes 5.1.0

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最新发布2020年5月
支持SPM支持SPM

Tony DiPasqualeGordon Fontenot维护。



Runes 5.1.0

难以辨认的符号,有些人声称它们有着真正的意义。

pod Carthage compatible Swift Package Manager compatible

请参阅文档以获取安装说明。

包含什么?

导入Runes引入了几种新的操作符和一个全局函数,它们对应于常见的Haskell类型类

Functor

  • <^>(发音为“map”)

Applicative Functor

  • <*>(发音为“apply”)
  • <(发音为“左顺序”)
  • >(发音为“右顺序”)
  • pure(发音为“纯”)

Alternative

  • <|>(发音为“交替”)
  • empty(发音为“空的”)

莫纳德

  • >>-(发音为“flatMap”)(左结合)
  • -<<(发音为“flatMap”)(右结合)
  • >->(发音为“莫纳德组合”)(左结合)
  • <-<(发音为“莫纳德组合”)(右结合)

实现

我们还提供了Optional和Array的默认实现,具体类型签名如下

// Optional+Functor:
public func <^> <T, U>(f: T -> U, x: T?) -> U?

// Optional+Applicative:
public func <*> <T, U>(f: (T -> U)?, x: T?) -> U?
public func <* <T, U>(lhs: T?, rhs: U?) -> T?
public func *> <T, U>(lhs: T?, rhs: U?) -> U?
public func pure<T>(x: T) -> T?

// Optional+Alternative:
public func <|> <T>(lhs: T?, rhs: T?) -> T?
public func empty<T>() -> T?

// Optional+Monad:
public func >>- <T, U>(x: T?, f: T -> U?) -> U?
public func -<< <T, U>(f: T -> U?, x: T?) -> U?
public func >-> <T, U, V>(f: T -> U?, g: U -> V?) -> T -> V?
public func <-< <T, U, V>(f: U -> V?, g: T -> U?) -> T -> V?

// Array+Functor:
public func <^> <T, U>(f: T -> U, x: [T]) -> [U]

// Array+Applicative:
public func <*> <T, U>(fs: [T -> U], x: [T]) -> [U]
public func <* <T, U>(lhs: [T], rhs: [U]) -> [T]
public func *> <T, U>(lhs: [T], rhs: [U]) -> [U]
public func pure<T>(x: T) -> [T]

// Array+Alternative:
public func <|> <T>(lhs: [T], rhs: [T]) -> [T]
public func empty<T>() -> [T]

// Array+Monad:
public func >>- <T, U>(x: [T], f: T -> [U]) -> [U]
public func -<< <T, U>(f: T -> [U], x: [T]) -> [U]
public func >-> <T, U, V>(f: T -> [U], g: U -> [V]) -> T -> [V]
public func <-< <T, U, V>(f: U -> [V], g: T -> [U]) -> T -> [V]

// Result+Functor:
public func <^> <T, U, E>(f: (T) -> U, a: Result<T, E>) -> Result<U, E>

// Result+Applicative:
public func <*> <T, U, E>(f: Result<(T) -> U, E>, a: Result<T, E>) -> Result<U, E>
public func <* <T, U, E>(lhs: Result<T, E>, rhs: Result<U, E>) -> Result<T, E>
public func *> <T, U, E>(lhs: Result<T, E>, rhs: Result<U, E>) -> Result<U, E>
public func pure<T, E>(_ a: T) -> Result<T, E>

// Result+Alternative:
public func <|> <T, E>(lhs: Result<T, E>, rhs: @autoclosure () -> Result<T, E>) -> Result<T, E>

// Result+Monad:
public func >>- <T, U, E>(a: Result<T, E>, f: (T) -> Result<U, E>) -> Result<U, E>
public func -<< <T, U, E>(f: (T) -> Result<U, E>, a: Result<T, E>) -> Result<U, E>
public func >-> <T, U, V, E>(f: @escaping (T) -> Result<U, E>, g: @escaping (U) -> Result<V, E>) -> (T) -> Result<V, E>
public func <-< <T, U, V, E>(f: @escaping (U) -> Result<V, E>, g: @escaping (T) -> Result<U, E>) -> (T) -> Result<V, E>

贡献

请参阅CONTRIBUTING文件。感谢贡献者

许可协议

Runes版权所有归thoughtbot, inc.。这是一项免费软件,可以在LICENSE文件中规定的条款下重新分发。

关于

thoughtbot

Runes由thoughtbot, inc.维护和资助。thoughtbot的名字和标志是thoughtbot, inc.的商标。

我们热爱开源软件!查看我们的其他项目或查看我们的产品案例研究案例研究招聘,以帮助构建您的iOS应用程序。