Skip to content

Instantly share code, notes, and snippets.

Keybase proof

I hereby claim:

  • I am zlangley on github.
  • I am zlangley (https://keybase.io/zlangley) on keybase.
  • I have a public key whose fingerprint is 5D32 FC6E 8D11 DBB9 BC02 60FC BC01 F550 E214 9E3E

To claim this, I am signing this object:

@zlangley
zlangley / PromiseQueue.swift
Last active July 26, 2019 15:56
An operation queue for Promises.
import Dispatch
import PromiseKit
/// A wrapper for a function that creates a Promise.
public class PromiseOperation<T> {
private let makePromise: () -> Promise<T>
public init(makePromise: @escaping () -> Promise<T>) {
self.makePromise = makePromise
}
@zlangley
zlangley / OrderedSet.swift
Created November 18, 2015 21:21
OrderedSet implementation in Swift
//
// OrderedSet.swift
// OrderedSet
//
// Created by Zach Langley on 11/17/15.
// Copyright © 2015 Zach Langley. All rights reserved.
//
public struct OrderedSet<Element: Hashable>: ArrayLiteralConvertible, RangeReplaceableCollectionType {
private var indexForElement: Dictionary<Element, Int> = [:]
@zlangley
zlangley / .sh
Last active October 16, 2015 21:45
Fix auto-generated Xcode file headers
# Assumes all header/implementation files want the filename on the second line.
# Run from your src directory.
for f in `find . -name '*.[mh]'`; do sed -i "" "2 s|.*|// `basename $f`|" "$f"; done
@zlangley
zlangley / gist:7df11e3983b704058a39
Last active August 29, 2015 14:02
Memoize 1-parameter function.
def memoize[T, U](f: T => U) = {
val cache = scala.collection.mutable.HashMap[T, U]()
(t: T) => {
if (!cache.contains(t)) {
cache.put(t, f(t))
}
cache.get(t).get
}
}
@zlangley
zlangley / memoize.swift
Last active February 7, 2017 02:16
Memoize 1-parameter functions. Saw something like this in the Advanced Swift WWDC talk. Tried to reproduce it.
func memoize<T: Hashable, U>(f: ((T -> U), T) -> U) -> (T -> U) {
var cache = [T: U]()
var memoized: (T -> U)!
memoized = { n in
if cache[n] == nil {
cache[n] = f(memoized, n)
}
return cache[n]!
}
return memoized