/// |                    World                 |
/// |------------------------------------------|
/// | Module A | Module B | Module C | Module D|
- World is a module
- World is aware of all modules.
- Modules aren't aware of World.
/// |                    World                 |
/// |------------------------------------------|
/// | Module A | Module B | Module C | Module D|
| // Created by Marcin Krzyzanowski | |
| import Foundation | |
| public protocol JSONEncodable: Encodable { } | |
| public extension JSONEncodable { | |
| func toJSON(using encoder: @autoclosure () -> JSONEncoder = JSONEncoder()) throws -> String { | |
| try String(decoding: encoder().encode(self), as: UTF8.self) | |
| } | 
| // | |
| // SKSerialInputStream.h | |
| // inputstream | |
| // | |
| // Created by Soroush Khanlou on 11/4/18. | |
| // Copyright © 2018 Soroush Khanlou. All rights reserved. | |
| // | |
| #import <Foundation/Foundation.h> | 
| import UIKit | |
| @UIApplicationMain | |
| class AppDelegate: UIResponder, UIApplicationDelegate { | |
| var window: UIWindow? | |
| func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { | |
| let window = UIWindow(frame: UIScreen.main.bounds) | 
| // Coordinator.swift | |
| import Foundation | |
| public protocol Coordinator: class { | |
| var components: CoordinatorComponents { get } | |
| /// Set up here everything that needs to happen just before the Coordinator is presented | |
| /// | |
| /// - Parameter modalSetup: A parameter you can use to customize the default mainViewController's | 
| import Foundation | |
| /// This isn't safe to use before Swift gets ABI stability, because generic classes | |
| /// could change their names. Also, be sure to register bridges with the Obj-C runtime | |
| /// if using to decode during iOS state restoration. | |
| /// | |
| class CodableBridge<Wrapped: Codable>: NSObject, NSSecureCoding { | |
| let value: Wrapped | |
| init(_ value: Wrapped) { self.value = value } | 
| //: Playground - noun: a place where people can play | |
| import Foundation | |
| final class Disposable { | |
| private let dispose: () -> () | |
| init(_ dispose: @escaping () -> ()) { | |
| self.dispose = dispose | |
| } | |
| import Foundation | |
| // A lens is a getter and a setter combined | |
| struct Lens<Whole, Part> { | |
| let get: (Whole) -> Part | |
| let set: (inout Whole, Part) -> () | |
| } | |
| // We can create a lens from a key path | |
| extension Lens { | 
| import Foundation | |
| struct Country { | |
| let name: String | |
| let capital: String | |
| var visited: Bool | |
| } | |
| extension Country: Equatable { | |
| static func == (lhs: Country, rhs: Country) -> Bool { |