Stream alternatives and similar libraries
Based on the "Utility" category.
Alternatively, view Stream alternatives based on common mentions on social networks and blogs.
-
SwifterSwift
A handy collection of more than 500 native Swift extensions to boost your productivity. -
SwiftGen
The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! -
R.swift
Strong typed, autocompleted resources like images, fonts and segues in Swift projects -
SwiftGen-Storyboard
The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! -
swift-protobuf
Plugin and runtime library for using protobuf with Swift -
Dollar
A functional tool-belt for Swift Language similar to Lo-Dash or Underscore.js in Javascript -
EZSwiftExtensions
:smirk: How Swift standard types and classes were supposed to work. -
DifferenceKit
💻 A fast and flexible O(n) difference algorithm framework for Swift collection. -
Result
Swift type modelling the success/failure of arbitrary operations. -
DeepDiff
🦀Amazingly incredible extraordinary lightning fast diffing in Swift -
Device
Light weight tool for detecting the current device and screen size written in swift. -
SwiftLinkPreview
It makes a preview from an URL, grabbing all the information such as title, relevant texts and images. -
WhatsNew
Showcase new features after an app update similar to Pages, Numbers and Keynote. -
Codextended
Extensions giving Swift's Codable API type inference super powers 🦸♂️🦹♀️ -
SwiftyJSONAccelerator
macOS app to generate Swift 5 code for models from JSON (with Codeable) -
Playbook
📘A library for isolated developing UI components and automatically taking snapshots of them. -
ReadabilityKit
Preview extractor for news, articles and full-texts in Swift -
ObjectiveKit
Swift-friendly API for a set of powerful Objective C runtime functions. -
Compass
:earth_africa: Compass helps you setup a central navigation system for your application -
Bow
🏹 Bow is a cross-platform library for Typed Functional Programming in Swift -
Pythonic.swift
Pythonic tool-belt for Swift – a Swift implementation of selected parts of Python standard library. -
Prototope
Swift library of lightweight interfaces for prototyping, bridged to JS.
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Stream or a related project?
Popular Comparisons
README
Stream
This is a Swift microframework providing a lazy Stream<T>
type with generic implementations of ==
/!=
where T
: Equatable
.
Stream
s are lazily-populated as well as lazily-evaluated, making them convenient for procrastinating tasks you don’t want to do yet, like performing an expensive computation in successive stages.
You can construct Stream
s with SequenceType
s, use them as SequenceType
s, and map
and fold
to your heart’s content.
Use
Constructing a Stream
:
let empty: Stream<Int> = nil
let unary = Stream.pure(4)
let binary = Stream.cons(4, nil)
let fibonacci: Stream<Int> = fix { fib in // fix is from Prelude.framework
{ x, y in Stream.cons(x + y, fib(y, x + y)) }
}(0, 1)
Note that fibonacci
is infinite! Don’t worry about it, just don’t evaluate it all in one go (like with a for
loop that never break
s).
It’s safe to extract values from any Stream
, whether infinite or not:
let (first, rest) = fibonacci.uncons
let first = fibonacci.first
let rest = fibonacci.rest
let isEmpty = fibonacci.isEmpty
Better yet, use take
and drop
to do the heavy lifting for you, or map
to compute whatever you need to in a new infinite Stream
:
// Bad, infinite loops:
for each in fibonacci {}
// Okay, stops:
for each in fibonacci { break }
// Good, doesn’t compute anything til you iterate the result:
let firstFive = fibonacci.take(5)
// Best, doesn’t compute anything til you iterate, and it’s infinite too:
let fibonacciSquares = fibonacci.map { x in x * x }
You can combine Stream
s together by concatenating them using the ++
operator—even infinite ones:
let aleph = fibonacci ++ fibonacci
This is more useful for prepending elements onto an infinite stream, though:
let fibonacciSquaresForABit = firstFive.map { x in x * x } ++ fibonacci.drop(5)
Full API documentation is in the source.
Integration
- Add this repository as a submodule and check out its dependencies, and/or add it to your Cartfile if you’re using carthage to manage your dependencies.
- Drag
Stream.xcodeproj
into your project or workspace, and do the same with its dependencies (i.e. the other.xcodeproj
files included inStream.xcworkspace
). NB:Stream.xcworkspace
is for standalone development of Stream, whileStream.xcodeproj
is for targets using Stream as a dependency. - Link your target against
Stream.framework
and each of the dependency frameworks. - Application targets should ensure that the framework gets copied into their application bundle. (Framework targets should instead require the application linking them to include Stream and its dependencies.)