diff --git a/Documentation/Bibliography.md b/Documentation/Bibliography.md index 36fdc4d..3aeb8a3 100644 --- a/Documentation/Bibliography.md +++ b/Documentation/Bibliography.md @@ -1,3 +1,9 @@ +### Functional Programming + +https://youtu.be/T5oB8PZQNvY + +https://leanpub.com/sofp + ### Theory of Streams * [Stream Fusion: From Lists to Streams to Nothing At All](https://github.com/bitemyapp/papers/blob/master/Stream%20Fusion:%20From%20Lists%20to%20Streams%20to%20Nothing%20At%20All.pdf) @@ -10,6 +16,18 @@ * [Functional Stream Libraries and Fusion: What's Next?](https://okmij.org/ftp/meta-programming/shonan-streams.pdf) +https://github.com/bitemyapp/papers/blob/master/A%20Poor%20Man's%20Concurrency%20Monad.pdf +https://github.com/bitemyapp/papers/blob/master/Cheap%20(But%20Functional)%20Threads.pdf +https://github.com/bitemyapp/papers/blob/master/Combining%20Events%20and%20Threads%20for%20Scalable%20Network%20Services:%20Implementation%20and%20Evaluation%20of%20Monadic%2C%20Application-Level%20Concurrency%20Primitives.pdf +https://github.com/bitemyapp/papers/blob/master/Compiling%20with%20Continuations%2C%20Continued.pdf +https://github.com/bitemyapp/papers/blob/master/Functional%20Reactive%20Programming%20from%20First%20Principles.pdf +https://github.com/bitemyapp/papers/blob/master/Functional%20Reactive%20Programming%2C%20Continued.pdf +https://github.com/bitemyapp/papers/blob/master/Higher-Order%20Functional%20Reactive%20Programming%20without%20Spacetime%20Leaks.pdf +https://github.com/bitemyapp/papers/blob/master/Lazy%20Functional%20State%20Threads.pdf +https://github.com/bitemyapp/papers/blob/master/Push-pull%20functional%20reactive%20programming.pdf +https://github.com/bitemyapp/papers/blob/master/Stream%20Fusion%20on%20Haskell%20Unicode%20Strings.pdf + + ### Theory of State diff --git a/Playgrounds/04 - Publishers.playground/Pages/01-Just.xcplaygroundpage/Contents.swift b/Playgrounds/03 - Even More Structured Concurrency.playground/Pages/01 - Cancellable.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/01-Just.xcplaygroundpage/Contents.swift rename to Playgrounds/03 - Even More Structured Concurrency.playground/Pages/01 - Cancellable.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Contents.swift b/Playgrounds/03 - Even More Structured Concurrency.playground/Pages/02 - StateTask.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Contents.swift rename to Playgrounds/03 - Even More Structured Concurrency.playground/Pages/02 - StateTask.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/timeline.xctimeline b/Playgrounds/03 - Even More Structured Concurrency.playground/Pages/02 - StateTask.xcplaygroundpage/timeline.xctimeline similarity index 100% rename from Playgrounds/04 - Publishers.playground/timeline.xctimeline rename to Playgrounds/03 - Even More Structured Concurrency.playground/Pages/02 - StateTask.xcplaygroundpage/timeline.xctimeline diff --git a/Playgrounds/05 - Operators.playground/contents.xcplayground b/Playgrounds/03 - Even More Structured Concurrency.playground/contents.xcplayground similarity index 100% rename from Playgrounds/05 - Operators.playground/contents.xcplayground rename to Playgrounds/03 - Even More Structured Concurrency.playground/contents.xcplayground diff --git a/Playgrounds/03 - Even More Structured Concurrency.playground/playground.xcworkspace/contents.xcworkspacedata b/Playgrounds/03 - Even More Structured Concurrency.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ca3329e --- /dev/null +++ b/Playgrounds/03 - Even More Structured Concurrency.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "group:"> + </FileRef> +</Workspace> diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/00a-Introduction (Examples).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/00a-Introduction (Examples).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/00a-Introduction (Examples).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/00a-Introduction (Examples).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/00b-Introduction (Requirements).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/00b-Introduction (Requirements).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/00b-Introduction (Requirements).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/00b-Introduction (Requirements).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/00c-Introduction (Supply and Demand).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/00c-Introduction (Supply and Demand).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/00c-Introduction (Supply and Demand).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/00c-Introduction (Supply and Demand).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/01a-Deriving FreeCombine (Base).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/01a-Deriving FreeCombine (Base).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/01a-Deriving FreeCombine (Base).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/01a-Deriving FreeCombine (Base).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/01b-Deriving FreeCombine (enum Demand).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/01b-Deriving FreeCombine (enum Demand).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/01b-Deriving FreeCombine (enum Demand).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/01b-Deriving FreeCombine (enum Demand).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/01c-Deriving FreeCombine (async eliminates Subscription).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/01c-Deriving FreeCombine (async eliminates Subscription).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/01c-Deriving FreeCombine (async eliminates Subscription).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/01c-Deriving FreeCombine (async eliminates Subscription).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/01d-Deriving FreeCombine (simplify Subscriber to one func).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/01d-Deriving FreeCombine (simplify Subscriber to one func).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/01d-Deriving FreeCombine (simplify Subscriber to one func).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/01d-Deriving FreeCombine (simplify Subscriber to one func).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/01e-Deriving FreeCombine (eliminate Subscriber into Publisher).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/01e-Deriving FreeCombine (eliminate Subscriber into Publisher).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/01e-Deriving FreeCombine (eliminate Subscriber into Publisher).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/01e-Deriving FreeCombine (eliminate Subscriber into Publisher).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/01f-Deriving FreeCombine (add Task as Cancellation).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/01f-Deriving FreeCombine (add Task as Cancellation).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/01f-Deriving FreeCombine (add Task as Cancellation).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/01f-Deriving FreeCombine (add Task as Cancellation).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/01g-Deriving FreeCombine (cleanup).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/01g-Deriving FreeCombine (cleanup).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/01g-Deriving FreeCombine (cleanup).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/01g-Deriving FreeCombine (cleanup).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Pages/01h-Deriving FreeCombine (convert Publisher protocol to struct).xcplaygroundpage/Contents.swift b/Playgrounds/04 - FreeCombine.playground/Pages/01h-Deriving FreeCombine (convert Publisher protocol to struct).xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Pages/01h-Deriving FreeCombine (convert Publisher protocol to struct).xcplaygroundpage/Contents.swift rename to Playgrounds/04 - FreeCombine.playground/Pages/01h-Deriving FreeCombine (convert Publisher protocol to struct).xcplaygroundpage/Contents.swift diff --git a/Playgrounds/03 - FreeCombine.playground/Resources/CombineReturnTypes.png b/Playgrounds/04 - FreeCombine.playground/Resources/CombineReturnTypes.png similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/Resources/CombineReturnTypes.png rename to Playgrounds/04 - FreeCombine.playground/Resources/CombineReturnTypes.png diff --git a/Playgrounds/03 - FreeCombine.playground/contents.xcplayground b/Playgrounds/04 - FreeCombine.playground/contents.xcplayground similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/contents.xcplayground rename to Playgrounds/04 - FreeCombine.playground/contents.xcplayground diff --git a/Playgrounds/03 - FreeCombine.playground/playground.xcworkspace/contents.xcworkspacedata b/Playgrounds/04 - FreeCombine.playground/playground.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Playgrounds/03 - FreeCombine.playground/playground.xcworkspace/contents.xcworkspacedata rename to Playgrounds/04 - FreeCombine.playground/playground.xcworkspace/contents.xcworkspacedata diff --git a/Playgrounds/05 - Operators.playground/Contents.swift b/Playgrounds/05 - Publishers.playground/Contents.swift similarity index 100% rename from Playgrounds/05 - Operators.playground/Contents.swift rename to Playgrounds/05 - Publishers.playground/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/02-Empty.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/01-Just.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/02-Empty.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/01-Just.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/03-Fail.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/02-Empty.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/03-Fail.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/02-Empty.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/04-Unfolded.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/03-Fail.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/04-Unfolded.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/03-Fail.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/05-Deferred.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/04-Unfolded.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/05-Deferred.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/04-Unfolded.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/06-Concat.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/05-Deferred.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/06-Concat.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/05-Deferred.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/09-CombineLatest.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/06-Concat.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/09-CombineLatest.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/06-Concat.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/07-Zipped.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/07-Zipped.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/07-Zipped.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/07-Zipped.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/08-Merged.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/08-Merged.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/08-Merged.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/08-Merged.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/10-Heartbeat.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/09-CombineLatest.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/10-Heartbeat.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/09-CombineLatest.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/Pages/11-FireAndForget.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/10-Heartbeat.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/04 - Publishers.playground/Pages/11-FireAndForget.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/10-Heartbeat.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/05 - Operators.playground/Pages/01-Map.xcplaygroundpage/Contents.swift b/Playgrounds/05 - Publishers.playground/Pages/11-FireAndForget.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/05 - Operators.playground/Pages/01-Map.xcplaygroundpage/Contents.swift rename to Playgrounds/05 - Publishers.playground/Pages/11-FireAndForget.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/04 - Publishers.playground/contents.xcplayground b/Playgrounds/05 - Publishers.playground/contents.xcplayground similarity index 100% rename from Playgrounds/04 - Publishers.playground/contents.xcplayground rename to Playgrounds/05 - Publishers.playground/contents.xcplayground diff --git a/Playgrounds/04 - Publishers.playground/playground.xcworkspace/contents.xcworkspacedata b/Playgrounds/05 - Publishers.playground/playground.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Playgrounds/04 - Publishers.playground/playground.xcworkspace/contents.xcworkspacedata rename to Playgrounds/05 - Publishers.playground/playground.xcworkspace/contents.xcworkspacedata diff --git a/Playgrounds/05 - Operators.playground/timeline.xctimeline b/Playgrounds/05 - Publishers.playground/timeline.xctimeline similarity index 100% rename from Playgrounds/05 - Operators.playground/timeline.xctimeline rename to Playgrounds/05 - Publishers.playground/timeline.xctimeline diff --git a/Playgrounds/06 - Operators.playground/Contents.swift b/Playgrounds/06 - Operators.playground/Contents.swift new file mode 100644 index 0000000..9d86688 --- /dev/null +++ b/Playgrounds/06 - Operators.playground/Contents.swift @@ -0,0 +1,3 @@ +import UIKit + +var greeting = "Hello, playground" diff --git a/Playgrounds/05 - Operators.playground/Pages/02-FlatMap.xcplaygroundpage/Contents.swift b/Playgrounds/06 - Operators.playground/Pages/01-Map.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/05 - Operators.playground/Pages/02-FlatMap.xcplaygroundpage/Contents.swift rename to Playgrounds/06 - Operators.playground/Pages/01-Map.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/05 - Operators.playground/Pages/03-Zip.xcplaygroundpage/Contents.swift b/Playgrounds/06 - Operators.playground/Pages/02-FlatMap.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/05 - Operators.playground/Pages/03-Zip.xcplaygroundpage/Contents.swift rename to Playgrounds/06 - Operators.playground/Pages/02-FlatMap.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/05 - Operators.playground/Pages/04-Reduce.xcplaygroundpage/Contents.swift b/Playgrounds/06 - Operators.playground/Pages/03-Zip.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/05 - Operators.playground/Pages/04-Reduce.xcplaygroundpage/Contents.swift rename to Playgrounds/06 - Operators.playground/Pages/03-Zip.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/05 - Operators.playground/Pages/05-Filter.xcplaygroundpage/Contents.swift b/Playgrounds/06 - Operators.playground/Pages/04-Reduce.xcplaygroundpage/Contents.swift similarity index 100% rename from Playgrounds/05 - Operators.playground/Pages/05-Filter.xcplaygroundpage/Contents.swift rename to Playgrounds/06 - Operators.playground/Pages/04-Reduce.xcplaygroundpage/Contents.swift diff --git a/Playgrounds/06 - Operators.playground/Pages/05-Filter.xcplaygroundpage/Contents.swift b/Playgrounds/06 - Operators.playground/Pages/05-Filter.xcplaygroundpage/Contents.swift new file mode 100644 index 0000000..5275afb --- /dev/null +++ b/Playgrounds/06 - Operators.playground/Pages/05-Filter.xcplaygroundpage/Contents.swift @@ -0,0 +1,7 @@ +//: [Previous](@previous) + +import Foundation + +var greeting = "Hello, playground" + +//: [Next](@next) diff --git a/Playgrounds/06 - Operators.playground/contents.xcplayground b/Playgrounds/06 - Operators.playground/contents.xcplayground new file mode 100644 index 0000000..7627317 --- /dev/null +++ b/Playgrounds/06 - Operators.playground/contents.xcplayground @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<playground version='5.0' target-platform='ios' buildActiveScheme='true' executeOnSourceChanges='false' importAppTypes='true'> + <timeline fileName='timeline.xctimeline'/> +</playground> \ No newline at end of file diff --git a/Playgrounds/05 - Operators.playground/playground.xcworkspace/contents.xcworkspacedata b/Playgrounds/06 - Operators.playground/playground.xcworkspace/contents.xcworkspacedata similarity index 100% rename from Playgrounds/05 - Operators.playground/playground.xcworkspace/contents.xcworkspacedata rename to Playgrounds/06 - Operators.playground/playground.xcworkspace/contents.xcworkspacedata diff --git a/Playgrounds/06 - Operators.playground/timeline.xctimeline b/Playgrounds/06 - Operators.playground/timeline.xctimeline new file mode 100644 index 0000000..bf468af --- /dev/null +++ b/Playgrounds/06 - Operators.playground/timeline.xctimeline @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Timeline + version = "3.0"> + <TimelineItems> + </TimelineItems> +</Timeline> diff --git a/Playgrounds/07 - Promises.playground/Contents.swift b/Playgrounds/07 - Promises.playground/Contents.swift new file mode 100644 index 0000000..9d86688 --- /dev/null +++ b/Playgrounds/07 - Promises.playground/Contents.swift @@ -0,0 +1,3 @@ +import UIKit + +var greeting = "Hello, playground" diff --git a/Playgrounds/07 - Promises.playground/contents.xcplayground b/Playgrounds/07 - Promises.playground/contents.xcplayground new file mode 100644 index 0000000..7627317 --- /dev/null +++ b/Playgrounds/07 - Promises.playground/contents.xcplayground @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<playground version='5.0' target-platform='ios' buildActiveScheme='true' executeOnSourceChanges='false' importAppTypes='true'> + <timeline fileName='timeline.xctimeline'/> +</playground> \ No newline at end of file diff --git a/Playgrounds/07 - Promises.playground/playground.xcworkspace/contents.xcworkspacedata b/Playgrounds/07 - Promises.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..94b2795 --- /dev/null +++ b/Playgrounds/07 - Promises.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,4 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> +</Workspace> diff --git a/Playgrounds/07 - Promises.playground/timeline.xctimeline b/Playgrounds/07 - Promises.playground/timeline.xctimeline new file mode 100644 index 0000000..bf468af --- /dev/null +++ b/Playgrounds/07 - Promises.playground/timeline.xctimeline @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Timeline + version = "3.0"> + <TimelineItems> + </TimelineItems> +</Timeline> diff --git a/README.md b/README.md index ba16909..d06503e 100644 --- a/README.md +++ b/README.md @@ -1,15 +1,15 @@ # FreeCombine -### Combine. Only free. +### Combine. Only free. And concurrent. * Protocol-free. * Race-free. -* Yield-free. -* Sleep-free. -* Lock-free. + * Yield-free. + * Sleep-free. * Leak-free. + * Unbounded queue-free. +* Lock-free. * Dependency-free. -* Unbounded queue-free. ### Salient features 1. "Small things that compose"