Skip to content

Instantly share code, notes, and snippets.

View rnapier's full-sized avatar

Rob Napier rnapier

View GitHub Profile
@rnapier
rnapier / gist:067156ac404cc42f17b6
Created September 7, 2014 18:20
Version 2 of Flattenin' Your Mappenin'
//
// Version 2 of pagesFromData from Flattenin' Your Mappenin'
// http://robnapier.net/flatmap
//
import Foundation
infix operator >>== {}
func >>== <T,U>(x: T, f:T -> Result<U>) -> Result<U> {
return x.flatMap(f)
// The Go-way (from http://robnapier.net/go-is-a-shop-built-jig)
func frobulate() -> NSError? {
if self.thingsToFrobulate > 0 {
if let error = logit(FrobulatingMessage) {
return error
}
if let error = self.removeOldest() {
return error
}
// Frobulate the ObjC way (from http://robnapier.net/go-is-a-shop-built-jig)
func frobulate(#error: NSErrorPointer) -> Bool {
if self.thingsToFrobulate > 0 {
if !logit(FrobulatingMessage, error: error) {
return false
}
if !self.removeOldest(error: error) {
return false
}
@rnapier
rnapier / cert.pem
Last active August 29, 2015 14:07
Leaking memory in https
-----BEGIN CERTIFICATE-----
MIIDHDCCAm6gAwIBAgIJAJzp0JfeVFY6MA0GCSqGSIb3DQEBBQUAMFkxCzAJBgNV
BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQxEjAQBgNVBAMTCWxvY2FsaG9zdDAeFw0xNDEwMDMxODE3
MzZaFw0xNTEwMDMxODE3MzZaMFkxCzAJBgNVBAYTAkFVMRMwEQYDVQQIEwpTb21l
LVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQxEjAQBgNV
BAMTCWxvY2FsaG9zdDCBtTANBgkqhkiG9w0BAQEFAAOBowAwgZ8CgZcNdHU/8upi
8hRasgwlUXb6m/sOnVq3pKxZfnaehJCKDlEfkJqq91maQbDNflxd41J+3r6En2x/
eKJUvPJ/Lq5PsGTl127qYGElsgdcnJXpe7e2UZv/9OgJwq2sOtI+RwVpvs9ITPRU
caUPjmdKzyr4VwUEEj3fhBqnRSppz4pKtXK46ha+7UxWqU5pnPLLsssd+6/KIJzj
@rnapier
rnapier / zipextended2.swift
Created November 30, 2014 19:59
ZipExtended2
struct ZipExtendGenerator2<E0 : GeneratorType, E1 : GeneratorType> : GeneratorType {
typealias Element = (E0.Element?, E1.Element?)
var e0: E0
var e1: E1
init(_ e0: E0, _ e1: E1) {
self.e0 = e0
self.e1 = e1
}
@rnapier
rnapier / gist:6e411cb20ac82b0bd8ed
Last active August 29, 2015 14:11
isSorted messing around
// see also https://gist.github.com/griotspeak/8bb4c46611fc90d3043b
func findFirst<S: SequenceType>(seq: S, predicate: S.Generator.Element -> Bool) -> S.Generator.Element? {
for x in seq {
if predicate(x) { return x }
}
return nil
}
func not<T>(predicate: T -> Bool) -> (T -> Bool) {
@rnapier
rnapier / WeekTime.h
Last active August 29, 2015 14:12
ClosingTime example code for http://stackoverflow.com/q/27631882/97337
#import <Foundation/Foundation.h>
typedef enum {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday
@rnapier
rnapier / List.swift
Last active August 29, 2015 14:13
Why does this hang at line 13? (Xcode 6.2 6C86e)
final class Box<T> {
let unbox: T
init(_ value: T) { self.unbox = value }
}
enum List<T> {
case Empty
case Cons(T, Box<List<T>>) // <- Converting this to Cons(Box<T>, Box<List<T>>) fixes it (thanks @CodeFi_)
}
/*
Adds two linked lists together e.g. 1->2->3 + 4->5->6 = 5->7->9
Each element is between 0 and 9
*/
final class Node: Printable, SequenceType { // Struct would be nicer here, but then we'd have to use boxing on next.
let data: Int
let next: Node?
init(data: Int, next: Node?) {
/*
Adds two linked lists together e.g. 1->2->3 + 4->5->6 = 5->7->9
Each element is between 0 and 9
This version uses a mutable data structure, which is trickier to use correctly,
but may work better for enormous lists.
It avoids recursion, which increases the number of vars required.
*/
final class Node: Printable, SequenceType { // Struct would be nicer here, but then we'd have to use boxing on next.
var data: Int