Skip to content

Instantly share code, notes, and snippets.

View CTMacUser's full-sized avatar

Daryle Walker CTMacUser

View GitHub Profile
@CTMacUser
CTMacUser / AdjacentPermutation.swift
Last active December 9, 2019 02:22
Confirming permutations, rotating to the next or previous permutation, or going through all permutations; inspired by the C++ Standard Library. See <https://forums.swift.org/t/how-about-detection-and-iteration-of-permutations/31404> for more information.
//===--- AdjacentPermutation.swift ----------------------------*- swift -*-===//
//
// Created by Daryle Walker on 2019-Nov-27
//
// Copyright © 2019 Daryle Walker
//
// Methods to rearrange a collection to its next or previous permutation.
// Methods to return a sequence of all permutations of a collection, both lazy
// and eager.
//
@CTMacUser
CTMacUser / ChunkedCollection.swift
Created February 29, 2020 23:43
For Swift 5.1; wrapping types for sequences and collections that vend their source into fixed-sized chunks. See <https://forums.swift.org/t/yet-another-chunked-sequence-collection-idea/34198> for more information.
//===--- ChunkedCollection.swift ------------------------------*- swift -*-===//
//
// Created by Daryle Walker on 2020-Feb-29
//
// Copyright © 2020 Daryle Walker
//
// A generic type that models a Collection that wraps another, vending fixed-
// sized sub-sequences (i.e. chunks) of the inner collection as the elements of
// the outer collection. There is an option whether or not to vend the last
// chunks if they occur late enough that they are shorter than expected.
@CTMacUser
CTMacUser / ArrayManifestoV3.md
Created March 10, 2020 02:44
Version 3 of a proposal to add fixed-size, scoped-storage arrays to Swift. See <https://forums.swift.org/t/fixed-size-scoped-storage-array-manifesto-version-3/34427> for discussion.

Fixed-Size Array Manifesto

Introduction

This manifesto outlines a plan to add compound types corresponding to fixed-size scoped-storage homogenous containers.

Motivation/Goals

  • Bring a fixed-size, scoped-storage array type to Swift
  • Use declaration and dereference syntax similar to Array. Possibly other members too.
extension Collection {
/// If the collection does not have the given sequence as a prefix when
/// using the given predicate to compare elements, returns the collection
/// as-is; otherwise, returns the part of the collection after that prefix.
///
/// The predicate must be an equivalence relation over the elements.
///
/// Whether a prefix was actually dropped can be tested by checking if the
/// returned sub-sequence's `startIndex` is greater than the collection's
@CTMacUser
CTMacUser / FirstRange.swift
Created May 25, 2020 04:32
A generalized and Swift-y adaptation of NSString.replacingOccurrences(of: with: options: range:). See <https://forums.swift.org/t/additional-string-processing-apis/36255/25?u=ctmacuser> for more.
import Foundation
extension Collection {
/// Returns the index range for the earliest subsequence of this collection
/// that is equivalent to the given sequence, using the given predicate to
/// compare elements.
///
/// The predicate must be an equivalence relation over the elements.