- Proposal: SE-NNNN
- Authors: Daryle Walker, Author 2
- Review Manager: TBD
- Status: Awaiting review
During the review process, add the following fields as needed:
- Decision Notes: Rationale, Additional Commentary
// Taken from the final code I provided as an answer to a StackOverflow query | |
// at <http://stackoverflow.com/a/9736489/1010226>. | |
// Copyright 2012 by Daryle Walker | |
#include <algorithm> // min | |
#include <cassert> // assert | |
#include <cmath> // pow | |
#include <cstddef> // size_t | |
#include <iostream> // cout | |
#include <iterator> // back_inserter, begin, end |
/* | |
Copyright (C) 2013 by Daryle Walker | |
Based on posts off the Boost mailing lists on 2013-Jan-31 by Tim | |
Blechmann and TONGARI. C++11 is required; according to Live Work | |
Space's code-runner (on 2013-Apr-1), only Clang >= 3.2 and | |
GCC >= 4.7 accept it. | |
The original post (Tim Blechmann) of the 7 in the thread: | |
http://article.gmane.org/gmane.comp.lib.boost.devel/238310 |
/* | |
Demostration of variadic function template that runs a series of indexing | |
expressions. Based of a problem I posted at | |
http://stackoverflow.com/q/10171525/1010226 | |
Copyright (C) 2013 Daryle Walker | |
I'm letting anyone use this code under the Boost Software License. | |
*/ | |
#include <cassert> | |
#include <cstddef> |
// Copyright 2013 Daryle Walker. | |
// Distributed under the Boost Software License, Version 1.0. (See a copy at | |
// <http://www.boost.org/LICENSE_1_0.txt>.) | |
#ifndef REMOVE_SOME_EXTENTS_HPP | |
#define REMOVE_SOME_EXTENTS_HPP | |
#include <cstddef> | |
import Foundation | |
/** | |
A generator for the distance between two adjacent elements from another generator. | |
*/ | |
public struct AdjacentDifferenceGenerator<Source: GeneratorType where Source.Element: Strideable>: GeneratorType { | |
/// The last value read, needed to calculate the difference | |
private var queue: (Source.Element?, Source.Element?) |
extension CollectionType { | |
func diverges<PossiblePrefix: CollectionType where PossiblePrefix.Generator.Element == Generator.Element>(from possiblePrefix: PossiblePrefix, isEquivalent: (Generator.Element, Generator.Element) throws -> Bool) rethrows -> (Index, PossiblePrefix.Index) { | |
var selfIndex = startIndex | |
var fromIndex = possiblePrefix.startIndex | |
while selfIndex != endIndex && fromIndex != possiblePrefix.endIndex { | |
let areEqual = try isEquivalent(self[selfIndex], possiblePrefix[fromIndex]) | |
guard areEqual else { | |
break | |
} |
During the review process, add the following fields as needed:
This proposal adds a nominal type whose structure is an existing value type and interface can be customized, including selective use of the original type's interface. It is equivalent to the type declaration feature in Go, newtype
in Haskell, and the oft-requested "strong typedef" in C(++).
This is a proposal to add a macro-like facility to automatically create lists.
// Copyright (c) 2018 Daryle Walker. | |
// Distributed under the MIT License. | |
// Based off <https://en.wikipedia.org/wiki/Calkin–Wilf_tree>. | |
// "fusc" from Edsger W. Dijkstra. | |
// To-Do: Add the iterative version of "fusc" | |
struct SternDiatomicSequenceIterator: IteratorProtocol { | |
var cache = [0: 0, 1: 1] |