Skip to content

Instantly share code, notes, and snippets.

@ayanonagon
ayanonagon / FunctionApplication.playground
Created June 4, 2014 01:30
Function application using Swift
func fp<A, B, C>(fn:((A, B) -> C), arg:A) -> (B -> C) {
func apply(b:B) -> C {
return fn(arg, b)
}
return apply
}
func add(x: Int, y: Int) -> Int {
return x + y
}
@ayanonagon
ayanonagon / Currying.playground
Created June 6, 2014 23:48
Currying in Swift
func twoWords(a: String) (b: String) -> String {
return "\(a) \(b)"
}
twoWords("Hello")(b: "Ayaka") // Note that you need to explicitly name your second parameter
// Now for currying...
let greet = twoWords("Hello")
greet(b: "Ayaka")
@ayanonagon
ayanonagon / Locale.playground
Created October 19, 2014 20:31
Changing the locale in a Swift playground
import UIKit
extension NSLocale {
class func currentLocale() -> NSLocale {
return NSLocale.localeWithLocaleIdentifier("en_GB");
}
}
NSLocale.currentLocale().localeIdentifier
let cocoaPodsDir = "Pods/"
let carthageDir = "Carthage/Checkouts/"
let options: NSDirectoryEnumerationOptions = [.SkipsPackageDescendants, .SkipsHiddenFiles]
let fileManager = NSFileManager.defaultManager()
guard
let cocoaPodsDirURL = NSURL(string: cocoaPodsDir),
let cocoaPodsEnumerator = fileManager.enumeratorAtURL(cocoaPodsDirURL, includingPropertiesForKeys: nil, options: options, errorHandler: nil)
else {
let licenseURLs = allURLs.filter { URL in
return URL.lastPathComponent?.rangeOfString("LICENSE") != nil || URL.lastPathComponent?.rangeOfString("LICENCE") != nil
}
let licenses = licenseURLs.flatMap { try? getLicense($0) }
func getLicense(URL: NSURL) throws -> License {
let legalText = try String(contentsOfURL: URL, encoding: NSUTF8StringEncoding)
let pathComponents = URL.pathComponents!
let libraryName = pathComponents[pathComponents.count - 2]
return License(libraryName: libraryName, legalText: legalText)
}
protocol Streamable {
var title: String { get }
var body: String { get }
}
extension Streamable {
var writableString: String {
return "# \(title)\n\n\(body)"
}
}
var markdown = Markdown()
let html = licenses.map { markdown.transform($0.writableString) }.joinWithSeparator("\n")
try html.writeToFile("Venmo/Resources/LICENSES.html", atomically: false, encoding: NSUTF8StringEncoding)
#!/usr/bin/env xcrun swift -F Carthage/Build/Mac
import Foundation
import Markingbird
protocol Streamable {
var title: String { get }
var body: String { get }
}