Skip to content

Instantly share code, notes, and snippets.

@broomburgo
broomburgo / Swift-CHC-1
Created February 25, 2015 17:45
A **really** partial exploration of Curry-Howard correspondence in Swift
/// source: http://www.objc.io/books/
import Foundation
final public class Box<T> {
public let unbox: T
public init (_ value: T) { /// by adding '_' we can ignore the value name when we create a Box object (ex. this way we can just write something like let three = Box(3)
self.unbox = value
}
}
@broomburgo
broomburgo / LoremIpsumArray
Last active August 29, 2015 14:16
Array declaration with 1000 Lorem Ipsum words
let loremIpsum = ["Lorem","ipsum","dolor","sit","amet","consectetur","adipiscing","elit","Nunc","malesuada","vel","nisl","eget","sodales","Duis","sem","nulla","egestas","vel","neque","id","maximus","tempor","odio","Vestibulum","nisi","ipsum","porttitor","mattis","quam","sed","luctus","accumsan","velit","Curabitur","ornare","neque","eget","imperdiet","porttitor","nisi","odio","finibus","urna","quis","dignissim","mi","urna","vel","arcu","Lorem","ipsum","dolor","sit","amet","consectetur","adipiscing","elit","Mauris","vehicula","enim","eu","finibus","tempus","eros","tortor","interdum","risus","eu","condimentum","diam","dui","eu","lectus","Aenean","tincidunt","tincidunt","tellus","id","sollicitudin","Maecenas","ut","diam","fermentum","ante","scelerisque","dictum","Sed","finibus","lacus","in","dolor","euismod","vitae","sodales","nunc","varius","Nunc","vitae","dui","tincidunt","imperdiet","magna","sed","luctus","metus","Aenean","ullamcorper","dignissim","quam","vel","ornare","Suspendisse","potenti","Sed","lobortis",
@broomburgo
broomburgo / gist:ba8e5dd6cd509fdfd781
Created May 4, 2015 16:16
type-first-development-in-swift-code-for-blog-article
/* NOT QUITE FLEXIBLE
struct Field {
let id: String
let name: String
let value: String
let visible: Bool
import Foundation
public enum Persistence {
case Stop
case Continue
}
public final class Signal<Subtype> {
typealias Observation = Subtype -> Persistence
/// MainPage initializer
init(feedbackModelController: ModelController<FeedbackModel>) {
super.init(nibName: nil, bundle: nil)
feedbackModelController.updateSignal.onReception § eachTime § updateViewsWithFeedbackModel
viewReadyEmitter.signal.onReception § eachTime § feedbackModelController.notify
}
pageFactory.signalMakeMainPage
.flatMap { $0.signalLeaveFeedback }
.onReception § eachTime § inAnyCase § presentSelectionPage
pageFactory.signalMakeSelectionPage
.flatMap { $0.signalSelection }
.onReception § eachTime § inAnyCase § popTopPage
func collectFeedbackModelChange() -> Signal<FeedbackModelChange> {
return pageFactory.signalMakeMainPage
.flatMap { $0.signalPolarizedChanged }
.map(FeedbackModel.transformWithPolarized)
+ pageFactory.signalMakeSelectionPage
.flatMap { $0.signalSelection }
.map(FeedbackModel.transformWithFeedback)
}
feedbackModelController.deltaSignal
.filter { $0.feedback.rawValue < $1.feedback.rawValue}
.filter { $1.feedback == .Good || $1.feedback == .ReallyGood }
.onReception § eachTime § inAnyCase § showThankYouAlert
@broomburgo
broomburgo / lenses-and-prisms-in-swift-a-pragmatic-approach.swift
Last active September 6, 2017 11:38
code for the article "Lenses and Prisms in Swift: a pragmatic approach"
/// source: https://broomburgo.github.io/fun-ios/post/lenses-and-prisms-in-swift-a-pragmatic-approach/
protocol LensType {
associatedtype WholeType
associatedtype PartType
var get: (WholeType) -> PartType { get }
var set: (PartType,WholeType) -> WholeType { get }
init(get: @escaping (WholeType) -> PartType, set: @escaping (PartType,WholeType) -> WholeType)
@broomburgo
broomburgo / SwiftProfunctorHKT.swift
Last active July 3, 2018 16:00
Swift Profuctor Optics
protocol TaggedType {
associatedtype TagType
}
protocol TypeConstructor1: TaggedType {
associatedtype ParameterType1
}
protocol TypeConstructor2: TypeConstructor1 {
associatedtype ParameterType2