examples

package
v3.11.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 13, 2022 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

package examples contains example collection types using a selection of the built-in templates. They are built for int and for Apple, the latter being a simple dummy struct. The types are prefixed according to their template group. These are

  • 'Fast...' for the fast collections,
  • 'Immutable...' for the imutable collections,
  • 'Simple...' for the simple collections,
  • 'Sync...' for the threadsafe collections.

In each group, there are two list types, two set types and two map types. There are also two collection types in all except the simple group.

See https://github.com/rickb777/runtemplate/blob/master/BUILTIN.md for a fuller description.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AppleBlackHole

func AppleBlackHole(in <-chan Apple)

AppleBlackHole silently consumes a stream of Apple. It terminates when the sender closes the channel.

It is part of the Plumbing function suite for Apple.

func AppleDelta

func AppleDelta(in <-chan Apple, out1, out2 chan<- Apple)

AppleDelta duplicates a stream of Apple to two output channels. When the sender closes the input channel, both output channels are closed then the function terminates.

It is part of the Plumbing function suite for Apple.

func AppleFilter

func AppleFilter(in <-chan Apple, out chan<- Apple, p func(Apple) bool)

AppleFilter filters a stream of Apple, silently dropping elements that do not match the predicate p. When the sender closes the input channel, the output channel is closed then the function terminates.

It is part of the Plumbing function suite for Apple.

func AppleFlatMap

func AppleFlatMap(in <-chan Apple, out chan<- Apple, fn func(Apple) AppleCollection)

AppleFlatMap transforms a stream of Apple by applying a function fn to each item in the stream that gives zero or more results, all of which are sent out. When the sender closes the input channel, the output channel is closed then the function terminates.

It is part of the Plumbing function suite for Apple.

func AppleFlatMapToInt

func AppleFlatMapToInt(in <-chan Apple, out chan<- int, fn func(Apple) IntCollection)

AppleFlatMapToInt transforms a stream of Apple to a stream of int. When the sender closes the input channel, the output channel is closed then the function terminates.

func AppleGenerator

func AppleGenerator(out chan<- Apple, iterations int, fn func(int) Apple)

AppleGenerator produces a stream of Apple based on a supplied generator function. The function fn is invoked N times with the integers from 0 to N-1. Each result is sent out. Finally, the output channel is closed and the generator terminates.

It is part of the Plumbing function suite for Apple.

func AppleGenerator3

func AppleGenerator3(out chan<- Apple, from, to, stride int, fn func(int) Apple)

AppleGenerator produces a stream of Apple based on a supplied generator function. The function fn is invoked *(|to - from|) / |stride|* times with the integers in the range specified by from, to and stride. If stride is negative, from should be greater than to. For each iteration, the computed function result is sent out. If stride is zero, the loop never terminates. Otherwise, after the generator has reached the loop end, the output channel is closed and the generator terminates.

It is part of the Plumbing function suite for Apple.

func AppleMap

func AppleMap(in <-chan Apple, out chan<- Apple, fn func(Apple) Apple)

AppleMap transforms a stream of Apple by applying a function fn to each item in the stream. When the sender closes the input channel, the output channel is closed then the function terminates.

It is part of the Plumbing function suite for Apple.

func AppleMapToInt

func AppleMapToInt(in <-chan Apple, out chan<- int, fn func(Apple) int)

AppleMapToInt transforms a stream of Apple to a stream of int. When the sender closes the input channel, the output channel is closed then the function terminates.

func AppleMux2

func AppleMux2(in1, in2 <-chan Apple, closer <-chan bool, out chan<- Apple)

AppleMux2 multiplexes two streams of Apple into a single output channel. Each input channel is used as soon as it is ready. When a signal is received from the closer channel, the output channel is then closed. Concurrently, both input channels are then passed into blackholes that comsume them until they too are closed, and the function terminates.

It is part of the Plumbing function suite for Apple.

func ApplePartition

func ApplePartition(in <-chan Apple, matching, others chan<- Apple, p func(Apple) bool)

ApplePartition filters a stream of Apple into two output streams using a predicate p, those that match and all others. When the sender closes the input channel, both output channels are closed then the function terminates.

It is part of the Plumbing function suite for Apple.

func AppleZip2

func AppleZip2(in1, in2 <-chan Apple, out chan<- Apple)

AppleZip2 interleaves two streams of Apple. Each input channel is used in turn, alternating between them. The function terminates when *both* input channels have been closed by their senders. The output channel is then closed also.

It is part of the Plumbing function suite for Apple.

Types

type Apple

type Apple struct{}

Apple is an empty placeholder used for the examples. "Insert your own type!"

type AppleCollection

type AppleCollection interface {
	AppleSizer

	// IsSequence returns true for lists and queues.
	IsSequence() bool

	// IsSet returns false for lists and queues.
	IsSet() bool

	// ToSlice returns a shallow copy as a plain slice.
	ToSlice() []Apple

	// ToInterfaceSlice returns a shallow copy as a slice of arbitrary type.
	ToInterfaceSlice() []interface{}

	// Exists verifies that one or more elements of AppleCollection return true for the predicate p.
	Exists(p func(Apple) bool) bool

	// Forall verifies that all elements of AppleCollection return true for the predicate p.
	Forall(p func(Apple) bool) bool

	// Foreach iterates over AppleCollection and executes the function f against each element.
	Foreach(f func(Apple))

	// Find returns the first Apple that returns true for the predicate p.
	// False is returned if none match.
	Find(p func(Apple) bool) (Apple, bool)

	// MapToString returns a new []string by transforming every element with function f.
	// The resulting slice is the same size as the collection. The collection is not modified.
	MapToString(f func(Apple) string) []string

	// FlatMapString returns a new []string by transforming every element with function f
	// that returns zero or more items in a slice. The resulting slice may have a different size to the
	// collection. The collection is not modified.
	FlatMapToString(f func(Apple) []string) []string

	// Send returns a channel that will send all the elements in order. Can be used with the plumbing code, for example.
	// A goroutine is created to send the elements; this only terminates when all the elements have been consumed
	Send() <-chan Apple

	// CountBy gives the number elements of AppleCollection that return true for the predicate p.
	CountBy(p func(Apple) bool) int

	// Clear the entire collection.
	Clear()

	// Add adds items to the current collection.
	Add(more ...Apple)

	// MinBy returns an element of AppleCollection containing the minimum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such
	// element is returned. Panics if there are no elements.
	MinBy(less func(Apple, Apple) bool) Apple

	// MaxBy returns an element of AppleCollection containing the maximum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such
	// element is returned. Panics if there are no elements.
	MaxBy(less func(Apple, Apple) bool) Apple

	// Fold aggregates all the values in the collection using a supplied function, starting from some initial value.
	Fold(initial Apple, fn func(Apple, Apple) Apple) Apple
}

AppleCollection defines an interface for common collection methods on Apple.

type AppleList

type AppleList struct {
	// contains filtered or unexported fields
}

AppleList contains a slice of type Apple. It encapsulates the slice and provides methods to access or mutate it.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildAppleListFromChan

func BuildAppleListFromChan(source <-chan Apple) *AppleList

BuildAppleListFromChan constructs a new AppleList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertAppleList

func ConvertAppleList(values ...interface{}) (*AppleList, bool)

ConvertAppleList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted.

func MakeAppleList

func MakeAppleList(length, capacity int) *AppleList

MakeAppleList makes an empty list with both length and capacity initialised.

func NewAppleList

func NewAppleList(values ...Apple) *AppleList

NewAppleList constructs a new list containing the supplied values, if any.

func (*AppleList) Add

func (list *AppleList) Add(more ...Apple)

Add adds items to the current list. This is a synonym for Append.

func (*AppleList) Append

func (list *AppleList) Append(more ...Apple) *AppleList

Append adds items to the current list. If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned.

func (*AppleList) Clear

func (list *AppleList) Clear()

Clear the entire collection.

func (*AppleList) Clone

func (list *AppleList) Clone() *AppleList

Clone returns a shallow copy of the list. It does not clone the underlying elements.

func (*AppleList) Contains

func (list *AppleList) Contains(v Apple) bool

Contains determines whether a given item is already in the list, returning true if so.

func (*AppleList) ContainsAll

func (list *AppleList) ContainsAll(i ...Apple) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (*AppleList) CountBy

func (list *AppleList) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of AppleList that return true for the predicate p.

func (*AppleList) DistinctBy

func (list *AppleList) DistinctBy(equal func(Apple, Apple) bool) *AppleList

DistinctBy returns a new AppleList whose elements are unique, where equality is defined by the equal function.

func (*AppleList) DoDeleteAt

func (list *AppleList) DoDeleteAt(index, n int) *AppleList

DoDeleteAt modifies a AppleList by deleting n elements from a given index.

The list is modified and the modified list is returned. Panics if the index is out of range or n is large enough to take the index out of range.

func (*AppleList) DoDeleteFirst

func (list *AppleList) DoDeleteFirst(n int) *AppleList

DoDeleteFirst modifies a AppleList by deleting n elements from the start of the list.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if n is large enough to take the index out of range.

func (*AppleList) DoDeleteLast

func (list *AppleList) DoDeleteLast(n int) *AppleList

DoDeleteLast modifies a AppleList by deleting n elements from the end of the list.

The list is modified and the modified list is returned. Panics if n is large enough to take the index out of range.

func (*AppleList) DoInsertAt

func (list *AppleList) DoInsertAt(index int, more ...Apple) *AppleList

DoInsertAt modifies a AppleList by inserting elements at a given index. This is a generalised version of Append.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if the index is out of range.

func (*AppleList) DoKeepWhere

func (list *AppleList) DoKeepWhere(p func(Apple) bool) *AppleList

DoKeepWhere modifies a AppleList by retaining only those elements that match the predicate p. This is very similar to Filter but alters the list in place.

The list is modified and the modified list is returned.

func (*AppleList) DoReverse

func (list *AppleList) DoReverse() *AppleList

DoReverse alters a AppleList with all elements in the reverse order. Unlike Reverse, it does not allocate new memory.

The list is modified and the modified list is returned.

func (*AppleList) DoShuffle

func (list *AppleList) DoShuffle() *AppleList

DoShuffle returns a shuffled AppleList, using a version of the Fisher-Yates shuffle.

The list is modified and the modified list is returned.

func (*AppleList) Drop

func (list *AppleList) Drop(n int) *AppleList

Drop returns a slice of AppleList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*AppleList) DropLast

func (list *AppleList) DropLast(n int) *AppleList

DropLast returns a slice of AppleList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*AppleList) DropWhile

func (list *AppleList) DropWhile(p func(Apple) bool) *AppleList

DropWhile returns a new AppleList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

The original list is not modified.

func (*AppleList) Equals

func (list *AppleList) Equals(other *AppleList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal. Nil lists are considered to be empty.

func (*AppleList) Exists

func (list *AppleList) Exists(p func(Apple) bool) bool

Exists verifies that one or more elements of AppleList return true for the predicate p.

func (*AppleList) Filter

func (list *AppleList) Filter(p func(Apple) bool) *AppleList

Filter returns a new AppleList whose elements return true for predicate p.

The original list is not modified. See also DoKeepWhere (which does modify the original list).

func (*AppleList) Find

func (list *AppleList) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for predicate p. False is returned if none match.

func (*AppleList) FlatMap

func (list *AppleList) FlatMap(f func(Apple) []Apple) *AppleList

FlatMap returns a new AppleList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleList) FlatMapToString

func (list *AppleList) FlatMapToString(f func(Apple) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleList) Fold added in v3.9.0

func (list *AppleList) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (*AppleList) Forall

func (list *AppleList) Forall(p func(Apple) bool) bool

Forall verifies that all elements of AppleList return true for the predicate p.

func (*AppleList) Foreach

func (list *AppleList) Foreach(f func(Apple))

Foreach iterates over AppleList and executes function f against each element. The function can safely alter the values via side-effects.

func (*AppleList) Get

func (list *AppleList) Get(i int) Apple

Get gets the specified element in the list. Panics if the index is out of range or the list is nil.

func (*AppleList) GobDecode

func (list *AppleList) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this list type. You must register Apple with the 'gob' package before this method is used.

func (AppleList) GobEncode

func (list AppleList) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this list type. You must register Apple with the 'gob' package before this method is used.

func (*AppleList) Head

func (list *AppleList) Head() Apple

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (*AppleList) HeadOption

func (list *AppleList) HeadOption() (Apple, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (*AppleList) IndexWhere

func (list *AppleList) IndexWhere(p func(Apple) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (*AppleList) IndexWhere2

func (list *AppleList) IndexWhere2(p func(Apple) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (*AppleList) Init

func (list *AppleList) Init() *AppleList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (*AppleList) IsEmpty

func (list *AppleList) IsEmpty() bool

IsEmpty tests whether AppleList is empty.

func (*AppleList) IsSequence

func (list *AppleList) IsSequence() bool

IsSequence returns true for lists and queues.

func (*AppleList) IsSet

func (list *AppleList) IsSet() bool

IsSet returns false for lists or queues.

func (*AppleList) Last

func (list *AppleList) Last() Apple

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (*AppleList) LastIndexWhere

func (list *AppleList) LastIndexWhere(p func(Apple) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (*AppleList) LastIndexWhere2

func (list *AppleList) LastIndexWhere2(p func(Apple) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (*AppleList) LastOption

func (list *AppleList) LastOption() (Apple, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (*AppleList) Len

func (list *AppleList) Len() int

Len returns the number of items in the list - an alias of Size(). This is one of the three methods in the standard sort.Interface.

func (*AppleList) Map

func (list *AppleList) Map(f func(Apple) Apple) *AppleList

Map returns a new AppleList by transforming every element with function f. The resulting list is the same size as the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleList) MapToString

func (list *AppleList) MapToString(f func(Apple) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleList) MaxBy

func (list *AppleList) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of AppleList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*AppleList) MinBy

func (list *AppleList) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of AppleList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*AppleList) NonEmpty

func (list *AppleList) NonEmpty() bool

NonEmpty tests whether AppleList is empty.

func (*AppleList) Partition

func (list *AppleList) Partition(p func(Apple) bool) (*AppleList, *AppleList)

Partition returns two new AppleLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original list is not modified

func (*AppleList) Reverse

func (list *AppleList) Reverse() *AppleList

Reverse returns a copy of AppleList with all elements in the reverse order.

The original list is not modified.

func (*AppleList) Send

func (list *AppleList) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*AppleList) Shuffle

func (list *AppleList) Shuffle() *AppleList

Shuffle returns a shuffled copy of AppleList, using a version of the Fisher-Yates shuffle.

The original list is not modified.

func (*AppleList) Size

func (list *AppleList) Size() int

Size returns the number of items in the list - an alias of Len().

func (*AppleList) SortBy

func (list *AppleList) SortBy(less func(i, j Apple) bool) *AppleList

SortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned.

func (*AppleList) StableSortBy

func (list *AppleList) StableSortBy(less func(i, j Apple) bool) *AppleList

StableSortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned. The algorithm keeps the original order of equal elements.

func (*AppleList) Swap

func (list *AppleList) Swap(i, j int)

Swap exchanges two elements, which is necessary during sorting etc. This is one of the three methods in the standard sort.Interface.

func (*AppleList) Tail

func (list *AppleList) Tail() *AppleList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (*AppleList) Take

func (list *AppleList) Take(n int) *AppleList

Take returns a slice of AppleList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*AppleList) TakeLast

func (list *AppleList) TakeLast(n int) *AppleList

TakeLast returns a slice of AppleList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

The original list is not modified.

func (*AppleList) TakeWhile

func (list *AppleList) TakeWhile(p func(Apple) bool) *AppleList

TakeWhile returns a new AppleList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

The original list is not modified.

func (*AppleList) ToInterfaceSlice

func (list *AppleList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (*AppleList) ToList

func (list *AppleList) ToList() *AppleList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (*AppleList) ToSlice

func (list *AppleList) ToSlice() []Apple

ToSlice returns the elements of the current list as a slice.

type AppleQueue

type AppleQueue struct {
	// contains filtered or unexported fields
}

AppleQueue is a ring buffer containing a slice of type Apple. It is optimised for FIFO operations.

func BuildAppleQueueFromChan

func BuildAppleQueueFromChan(source <-chan Apple) *AppleQueue

BuildAppleQueueFromChan constructs a new AppleQueue from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func NewAppleQueue

func NewAppleQueue(capacity int, overwrite bool) *AppleQueue

NewAppleQueue returns a new queue of Apple. The behaviour when adding to the queue depends on overwrite. If true, the push operation overwrites oldest values up to the space available, when the queue is full. Otherwise, it refuses to overfill the queue.

func NewAppleSortedQueue

func NewAppleSortedQueue(capacity int, overwrite bool, less func(i, j Apple) bool) *AppleQueue

NewAppleSortedQueue returns a new queue of Apple. The behaviour when adding to the queue depends on overwrite. If true, the push operation overwrites oldest values up to the space available, when the queue is full. Otherwise, it refuses to overfill the queue. If the 'less' comparison function is not nil, elements can be easily sorted.

func (*AppleQueue) Add

func (queue *AppleQueue) Add(more ...Apple)

Add adds items to the queue. This is a synonym for Push.

func (*AppleQueue) Cap

func (queue *AppleQueue) Cap() int

Cap gets the capacity of this queue.

func (*AppleQueue) Clear

func (queue *AppleQueue) Clear()

Clear the entire queue.

func (*AppleQueue) Clone

func (queue *AppleQueue) Clone() *AppleQueue

Clone returns a shallow copy of the queue. It does not clone the underlying elements.

func (*AppleQueue) CountBy

func (queue *AppleQueue) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of AppleQueue that return true for the predicate p.

func (*AppleQueue) DoKeepWhere

func (queue *AppleQueue) DoKeepWhere(p func(Apple) bool) *AppleQueue

DoKeepWhere modifies a AppleQueue by retaining only those elements that match the predicate p. This is very similar to Filter but alters the queue in place.

The queue is modified and the modified queue is returned.

func (*AppleQueue) Exists

func (queue *AppleQueue) Exists(p func(Apple) bool) bool

Exists verifies that one or more elements of AppleQueue return true for the predicate p. The function should not alter the values via side-effects.

func (*AppleQueue) Filter

func (queue *AppleQueue) Filter(p func(Apple) bool) *AppleQueue

Filter returns a new AppleQueue whose elements return true for predicate p.

The original queue is not modified. See also DoKeepWhere (which does modify the original queue).

func (*AppleQueue) Find

func (queue *AppleQueue) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for predicate p. False is returned if none match.

func (*AppleQueue) FlatMap

func (queue *AppleQueue) FlatMap(f func(Apple) []Apple) *AppleQueue

FlatMap returns a new AppleQueue by transforming every element with function f that returns zero or more items in a slice. The resulting queue may have a different size to the original queue. The original queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleQueue) FlatMapToString

func (queue *AppleQueue) FlatMapToString(f func(Apple) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleQueue) Fold added in v3.9.0

func (queue *AppleQueue) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the queue using a supplied function, starting from some initial value.

func (*AppleQueue) Forall

func (queue *AppleQueue) Forall(p func(Apple) bool) bool

Forall verifies that all elements of AppleQueue return true for the predicate p. The function should not alter the values via side-effects.

func (*AppleQueue) Foreach

func (queue *AppleQueue) Foreach(f func(Apple))

Foreach iterates over AppleQueue and executes function f against each element. The function can safely alter the values via side-effects.

func (*AppleQueue) Get

func (queue *AppleQueue) Get(i int) Apple

Get gets the specified element in the queue. Panics if the index is out of range or the queue is nil.

func (*AppleQueue) Head

func (queue *AppleQueue) Head() Apple

Head gets the first element in the queue. Head is the opposite of Last. Panics if queue is empty or nil.

func (*AppleQueue) HeadOption

func (queue *AppleQueue) HeadOption() (Apple, bool)

HeadOption returns the oldest item in the queue without removing it. If the queue is nil or empty, it returns the zero value instead.

func (*AppleQueue) IsEmpty

func (queue *AppleQueue) IsEmpty() bool

IsEmpty returns true if the queue is empty.

func (*AppleQueue) IsFull

func (queue *AppleQueue) IsFull() bool

IsFull returns true if the queue is full.

func (*AppleQueue) IsOverwriting

func (queue *AppleQueue) IsOverwriting() bool

IsOverwriting returns true if the queue is overwriting, false if refusing.

func (*AppleQueue) IsSequence

func (queue *AppleQueue) IsSequence() bool

IsSequence returns true for ordered lists and queues.

func (*AppleQueue) IsSet

func (queue *AppleQueue) IsSet() bool

IsSet returns false for lists or queues.

func (*AppleQueue) Last

func (queue *AppleQueue) Last() Apple

Last gets the the newest item in the queue (i.e. last element pushed) without removing it. Last is the opposite of Head. Panics if queue is empty or nil.

func (*AppleQueue) LastOption

func (queue *AppleQueue) LastOption() (Apple, bool)

LastOption returns the newest item in the queue without removing it. If the queue is nil empty, it returns the zero value instead.

func (*AppleQueue) Len

func (queue *AppleQueue) Len() int

Len gets the current length of this queue. This is an alias for Size.

func (*AppleQueue) Less

func (queue *AppleQueue) Less(i, j int) bool

Less reports whether the element with index i should sort before the element with index j. The queue must have been created with a non-nil 'less' comparison function and it must not be empty.

func (*AppleQueue) Map

func (queue *AppleQueue) Map(f func(Apple) Apple) *AppleQueue

Map returns a new AppleQueue by transforming every element with function f. The resulting queue is the same size as the original queue. The original queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleQueue) MapToString

func (queue *AppleQueue) MapToString(f func(Apple) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleQueue) MaxBy

func (queue *AppleQueue) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of AppleQueue containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*AppleQueue) MinBy

func (queue *AppleQueue) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of AppleQueue containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*AppleQueue) NonEmpty

func (queue *AppleQueue) NonEmpty() bool

NonEmpty returns true if the queue is not empty.

func (*AppleQueue) Offer

func (queue *AppleQueue) Offer(items ...Apple) []Apple

Offer appends as many items to the end of the queue as it can. If the queue is already full, what happens depends on whether the queue is configured to overwrite. If it is, the oldest items will be overwritten. Otherwise, it will be filled to capacity and any unwritten items are returned.

If the capacity is too small for the number of items, the excess items are returned. The queue capacity is never altered.

func (*AppleQueue) Partition

func (queue *AppleQueue) Partition(p func(Apple) bool) (*AppleQueue, *AppleQueue)

Partition returns two new AppleQueues whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original queue.

The original queue is not modified

func (*AppleQueue) Pop

func (queue *AppleQueue) Pop(n int) []Apple

Pop removes and returns the oldest items from the queue. If the queue is empty, it returns a nil slice. If n is larger than the current queue length, it returns all the available elements, so in this case the returned slice will be shorter than n.

func (*AppleQueue) Pop1

func (queue *AppleQueue) Pop1() (Apple, bool)

Pop1 removes and returns the oldest item from the queue. If the queue is empty, it returns the zero value instead. The boolean is true only if the element was available.

func (*AppleQueue) Push

func (queue *AppleQueue) Push(items ...Apple) *AppleQueue

Push appends items to the end of the queue. If the queue does not have enough space, more will be allocated: how this happens depends on the overwriting mode.

When overwriting, the oldest items are overwritten with the new data; it expands the queue only if there is still not enough space.

Otherwise, the queue might be reallocated if necessary, ensuring that all the data is pushed without any older items being affected.

The modified queue is returned.

func (*AppleQueue) Reallocate

func (queue *AppleQueue) Reallocate(capacity int, overwrite bool) *AppleQueue

Reallocate adjusts the allocated capacity of the queue and allows the overwriting behaviour to be changed.

If the new queue capacity is different to the current capacity, the queue is re-allocated to the new capacity. If this is less than the current number of elements, the oldest items in the queue are discarded so that the remaining data can fit in the new space available.

If the new queue capacity is the same as the current capacity, the queue is not altered except for adopting the new overwrite flag's value. Therefore this is the means to change the overwriting behaviour.

Reallocate adjusts the storage space but does not clone the underlying elements.

The queue must not be nil.

func (*AppleQueue) Send

func (queue *AppleQueue) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*AppleQueue) Size

func (queue *AppleQueue) Size() int

Size gets the number of elements currently in this queue. This is an alias for Len.

func (*AppleQueue) Sort

func (queue *AppleQueue) Sort()

Sort sorts the queue using the 'less' comparison function, which must not be nil. This function will panic if the collection was created with a nil 'less' function (see NewAppleSortedQueue).

func (*AppleQueue) Space

func (queue *AppleQueue) Space() int

Space returns the space available in the queue.

func (*AppleQueue) StableSort

func (queue *AppleQueue) StableSort()

StableSort sorts the queue using the 'less' comparison function, which must not be nil. The result is stable so that repeated calls will not arbitrarily swap equal items. This function will panic if the collection was created with a nil 'less' function (see NewAppleSortedQueue).

func (*AppleQueue) Swap

func (queue *AppleQueue) Swap(i, j int)

Swap swaps the elements with indexes i and j. The queue must not be empty.

func (*AppleQueue) ToInterfaceSlice

func (queue *AppleQueue) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the queue as a slice of arbitrary type. The queue is not altered.

func (*AppleQueue) ToSlice

func (queue *AppleQueue) ToSlice() []Apple

ToSlice returns the elements of the queue as a slice. The queue is not altered.

type AppleSequence added in v3.9.0

type AppleSequence interface {
	AppleCollection

	// Head gets the first element in the sequence. Head plus Tail include the whole sequence. Head is the opposite of Last.
	Head() Apple

	// HeadOption gets the first element in the sequence, if possible.
	HeadOption() (Apple, bool)

	// Last gets the last element in the sequence. Init plus Last include the whole sequence. Last is the opposite of Head.
	Last() Apple

	// LastOption gets the last element in the sequence, if possible.
	LastOption() (Apple, bool)
}

AppleSequence defines an interface for sequence methods on Apple.

type AppleSet

type AppleSet struct {
	// contains filtered or unexported fields
}

AppleSet is the primary type that represents a set.

func BuildAppleSetFromChan

func BuildAppleSetFromChan(source <-chan Apple) *AppleSet

BuildAppleSetFromChan constructs a new AppleSet from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertAppleSet

func ConvertAppleSet(values ...interface{}) (*AppleSet, bool)

ConvertAppleSet constructs a new set containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned set will contain all the values that were correctly converted.

func NewAppleSet

func NewAppleSet(values ...Apple) *AppleSet

NewAppleSet creates and returns a reference to an empty set.

func (*AppleSet) Add

func (set *AppleSet) Add(more ...Apple)

Add adds items to the current set.

func (*AppleSet) Cardinality

func (set *AppleSet) Cardinality() int

Cardinality returns how many items are currently in the set. This is a synonym for Size.

func (*AppleSet) Clear

func (set *AppleSet) Clear()

Clear the entire set. Aterwards, it will be an empty set.

func (*AppleSet) Clone

func (set *AppleSet) Clone() *AppleSet

Clone returns a shallow copy of the set. It does not clone the underlying elements.

func (*AppleSet) Contains

func (set *AppleSet) Contains(i Apple) bool

Contains determines whether a given item is already in the set, returning true if so.

func (*AppleSet) ContainsAll

func (set *AppleSet) ContainsAll(i ...Apple) bool

ContainsAll determines whether the given items are all in the set, returning true if so.

func (*AppleSet) CountBy

func (set *AppleSet) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of AppleSet that return true for the predicate p.

func (*AppleSet) Difference

func (set *AppleSet) Difference(other *AppleSet) *AppleSet

Difference returns a new set with items in the current set but not in the other set

func (*AppleSet) Equals

func (set *AppleSet) Equals(other *AppleSet) bool

Equals determines whether two sets are equal to each other, returning true if so. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.

func (*AppleSet) Exists

func (set *AppleSet) Exists(p func(Apple) bool) bool

Exists applies a predicate p to every element in the set. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*AppleSet) Filter

func (set *AppleSet) Filter(p func(Apple) bool) *AppleSet

Filter returns a new AppleSet whose elements return true for the predicate p.

The original set is not modified

func (*AppleSet) Find

func (set *AppleSet) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for the predicate p. If there are many matches one is arbtrarily chosen. False is returned if none match.

func (*AppleSet) FlatMap

func (set *AppleSet) FlatMap(f func(Apple) []Apple) *AppleSet

FlatMap returns a new AppleSet by transforming every element with a function f that returns zero or more items in a slice. The resulting set may have a different size to the original set. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleSet) Fold added in v3.9.0

func (set *AppleSet) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the set using a supplied function, starting from some initial value.

func (*AppleSet) Forall

func (set *AppleSet) Forall(p func(Apple) bool) bool

Forall applies a predicate function p to every element in the set. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*AppleSet) Foreach

func (set *AppleSet) Foreach(f func(Apple))

Foreach iterates over the set and executes the function f against each element. The function can safely alter the values via side-effects.

func (*AppleSet) GobDecode

func (set *AppleSet) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this set type. You must register Apple with the 'gob' package before this method is used.

func (AppleSet) GobEncode

func (set AppleSet) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this list type. You must register Apple with the 'gob' package before this method is used.

func (*AppleSet) Intersect

func (set *AppleSet) Intersect(other *AppleSet) *AppleSet

Intersect returns a new set with items that exist only in both sets.

func (*AppleSet) IsEmpty

func (set *AppleSet) IsEmpty() bool

IsEmpty returns true if the set is empty.

func (*AppleSet) IsSequence

func (set *AppleSet) IsSequence() bool

IsSequence returns true for lists and queues.

func (*AppleSet) IsSet

func (set *AppleSet) IsSet() bool

IsSet returns false for lists or queues.

func (*AppleSet) IsSubset

func (set *AppleSet) IsSubset(other *AppleSet) bool

IsSubset determines whether every item in the other set is in this set, returning true if so.

func (*AppleSet) IsSuperset

func (set *AppleSet) IsSuperset(other *AppleSet) bool

IsSuperset determines whether every item of this set is in the other set, returning true if so.

func (*AppleSet) Map

func (set *AppleSet) Map(f func(Apple) Apple) *AppleSet

Map returns a new AppleSet by transforming every element with a function f. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*AppleSet) MaxBy

func (set *AppleSet) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of AppleSet containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*AppleSet) MinBy

func (set *AppleSet) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of AppleSet containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*AppleSet) NonEmpty

func (set *AppleSet) NonEmpty() bool

NonEmpty returns true if the set is not empty.

func (*AppleSet) Partition

func (set *AppleSet) Partition(p func(Apple) bool) (*AppleSet, *AppleSet)

Partition returns two new AppleSets whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original set is not modified

func (*AppleSet) Remove

func (set *AppleSet) Remove(i Apple)

Remove a single item from the set.

func (*AppleSet) Send

func (set *AppleSet) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed

func (*AppleSet) Size

func (set *AppleSet) Size() int

Size returns how many items are currently in the set. This is a synonym for Cardinality.

func (*AppleSet) SymmetricDifference

func (set *AppleSet) SymmetricDifference(other *AppleSet) *AppleSet

SymmetricDifference returns a new set with items in the current set or the other set but not in both.

func (*AppleSet) ToInterfaceSlice

func (set *AppleSet) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current set as a slice of arbitrary type.

func (*AppleSet) ToSet

func (set *AppleSet) ToSet() *AppleSet

ToSet returns the set; this is an identity operation in this case.

func (*AppleSet) ToSlice

func (set *AppleSet) ToSlice() []Apple

ToSlice returns the elements of the current set as a slice.

func (*AppleSet) Union

func (set *AppleSet) Union(other *AppleSet) *AppleSet

Union returns a new set with all items in both sets.

type AppleSizer

type AppleSizer interface {
	// IsEmpty tests whether AppleCollection is empty.
	IsEmpty() bool

	// NonEmpty tests whether AppleCollection is empty.
	NonEmpty() bool

	// Size returns the number of items in the collection - an alias of Len().
	Size() int
}

AppleSizer defines an interface for sizing methods on Apple collections.

type Email

type Email string

Email is a specialised kind of string.

func (Email) MarshalText

func (email Email) MarshalText() (text []byte, err error)

MarshalText converts values to a form suitable for transmission via JSON, XML etc. https://golang.org/pkg/encoding/#TextMarshaler

func (Email) Ptr

func (email Email) Ptr() *Email

Ptr returns the address of a Email.

func (*Email) Scan

func (email *Email) Scan(value interface{}) error

Scan parses some value. It implements sql.Scanner, https://golang.org/pkg/database/sql/#Scanner

func (Email) String

func (email Email) String() string

String converts to a string and implements fmt.Stringer.

func (Email) ToLower

func (email Email) ToLower() Email

ToLower converts the value to lowercase.

func (Email) ToUpper

func (email Email) ToUpper() Email

ToUpper converts the value to uppercase.

func (Email) TrimSpace

func (email Email) TrimSpace() Email

TrimSpace removes surrounding whitespace.

func (*Email) UnmarshalText

func (email *Email) UnmarshalText(text []byte) error

UnmarshalText converts transmitted values to ordinary values. https://golang.org/pkg/encoding/#TextUnmarshaler

func (Email) Value

func (email Email) Value() (driver.Value, error)

Value converts the value to a string. It implements driver.Valuer, https://golang.org/pkg/database/sql/driver/#Valuer

type EmailSlice

type EmailSlice []Email

EmailSlice attaches the methods of sort.Interface to []Email, sorting in increasing order.

func (EmailSlice) Len

func (p EmailSlice) Len() int

func (EmailSlice) Less

func (p EmailSlice) Less(i, j int) bool

func (EmailSlice) Sorted

func (p EmailSlice) Sorted()

SortedN is a convenience method.

func (EmailSlice) Swap

func (p EmailSlice) Swap(i, j int)

type FastAppleCollection

type FastAppleCollection interface {
	FastAppleSizer

	// IsSequence returns true for lists and queues.
	IsSequence() bool

	// IsSet returns false for lists and queues.
	IsSet() bool

	// ToSlice returns a shallow copy as a plain slice.
	ToSlice() []Apple

	// ToInterfaceSlice returns a shallow copy as a slice of arbitrary type.
	ToInterfaceSlice() []interface{}

	// Exists verifies that one or more elements of FastAppleCollection return true for the predicate p.
	Exists(p func(Apple) bool) bool

	// Forall verifies that all elements of FastAppleCollection return true for the predicate p.
	Forall(p func(Apple) bool) bool

	// Foreach iterates over FastAppleCollection and executes the function f against each element.
	Foreach(f func(Apple))

	// Find returns the first Apple that returns true for the predicate p.
	// False is returned if none match.
	Find(p func(Apple) bool) (Apple, bool)

	// Send returns a channel that will send all the elements in order. Can be used with the plumbing code, for example.
	// A goroutine is created to send the elements; this only terminates when all the elements have been consumed
	Send() <-chan Apple

	// CountBy gives the number elements of FastAppleCollection that return true for the predicate p.
	CountBy(p func(Apple) bool) int

	// Clear the entire collection.
	Clear()

	// Add adds items to the current collection.
	Add(more ...Apple)

	// MinBy returns an element of FastAppleCollection containing the minimum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such
	// element is returned. Panics if there are no elements.
	MinBy(less func(Apple, Apple) bool) Apple

	// MaxBy returns an element of FastAppleCollection containing the maximum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such
	// element is returned. Panics if there are no elements.
	MaxBy(less func(Apple, Apple) bool) Apple

	// Fold aggregates all the values in the collection using a supplied function, starting from some initial value.
	Fold(initial Apple, fn func(Apple, Apple) Apple) Apple
}

FastAppleCollection defines an interface for common collection methods on Apple.

type FastAppleList

type FastAppleList struct {
	// contains filtered or unexported fields
}

FastAppleList contains a slice of type Apple. It encapsulates the slice and provides methods to access or mutate it.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildFastAppleListFromChan

func BuildFastAppleListFromChan(source <-chan Apple) *FastAppleList

BuildFastAppleListFromChan constructs a new FastAppleList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertFastAppleList

func ConvertFastAppleList(values ...interface{}) (*FastAppleList, bool)

ConvertFastAppleList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted.

func MakeFastAppleList

func MakeFastAppleList(length, capacity int) *FastAppleList

MakeFastAppleList makes an empty list with both length and capacity initialised.

func NewFastAppleList

func NewFastAppleList(values ...Apple) *FastAppleList

NewFastAppleList constructs a new list containing the supplied values, if any.

func (*FastAppleList) Add

func (list *FastAppleList) Add(more ...Apple)

Add adds items to the current list. This is a synonym for Append.

func (*FastAppleList) Append

func (list *FastAppleList) Append(more ...Apple) *FastAppleList

Append adds items to the current list. If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned.

func (*FastAppleList) Clear

func (list *FastAppleList) Clear()

Clear the entire collection.

func (*FastAppleList) Clone

func (list *FastAppleList) Clone() *FastAppleList

Clone returns a shallow copy of the list. It does not clone the underlying elements.

func (*FastAppleList) Contains

func (list *FastAppleList) Contains(v Apple) bool

Contains determines whether a given item is already in the list, returning true if so.

func (*FastAppleList) ContainsAll

func (list *FastAppleList) ContainsAll(i ...Apple) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (*FastAppleList) CountBy

func (list *FastAppleList) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of FastAppleList that return true for the predicate p.

func (*FastAppleList) DistinctBy

func (list *FastAppleList) DistinctBy(equal func(Apple, Apple) bool) *FastAppleList

DistinctBy returns a new FastAppleList whose elements are unique, where equality is defined by the equal function.

func (*FastAppleList) DoDeleteAt

func (list *FastAppleList) DoDeleteAt(index, n int) *FastAppleList

DoDeleteAt modifies a FastAppleList by deleting n elements from a given index.

The list is modified and the modified list is returned. Panics if the index is out of range or n is large enough to take the index out of range.

func (*FastAppleList) DoDeleteFirst

func (list *FastAppleList) DoDeleteFirst(n int) *FastAppleList

DoDeleteFirst modifies a FastAppleList by deleting n elements from the start of the list.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if n is large enough to take the index out of range.

func (*FastAppleList) DoDeleteLast

func (list *FastAppleList) DoDeleteLast(n int) *FastAppleList

DoDeleteLast modifies a FastAppleList by deleting n elements from the end of the list.

The list is modified and the modified list is returned. Panics if n is large enough to take the index out of range.

func (*FastAppleList) DoInsertAt

func (list *FastAppleList) DoInsertAt(index int, more ...Apple) *FastAppleList

DoInsertAt modifies a FastAppleList by inserting elements at a given index. This is a generalised version of Append.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if the index is out of range.

func (*FastAppleList) DoKeepWhere

func (list *FastAppleList) DoKeepWhere(p func(Apple) bool) *FastAppleList

DoKeepWhere modifies a FastAppleList by retaining only those elements that match the predicate p. This is very similar to Filter but alters the list in place.

The list is modified and the modified list is returned.

func (*FastAppleList) DoReverse

func (list *FastAppleList) DoReverse() *FastAppleList

DoReverse alters a FastAppleList with all elements in the reverse order. Unlike Reverse, it does not allocate new memory.

The list is modified and the modified list is returned.

func (*FastAppleList) DoShuffle

func (list *FastAppleList) DoShuffle() *FastAppleList

DoShuffle returns a shuffled FastAppleList, using a version of the Fisher-Yates shuffle.

The list is modified and the modified list is returned.

func (*FastAppleList) Drop

func (list *FastAppleList) Drop(n int) *FastAppleList

Drop returns a slice of FastAppleList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*FastAppleList) DropLast

func (list *FastAppleList) DropLast(n int) *FastAppleList

DropLast returns a slice of FastAppleList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*FastAppleList) DropWhile

func (list *FastAppleList) DropWhile(p func(Apple) bool) *FastAppleList

DropWhile returns a new FastAppleList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

The original list is not modified.

func (*FastAppleList) Equals

func (list *FastAppleList) Equals(other *FastAppleList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal. Nil lists are considered to be empty.

func (*FastAppleList) Exists

func (list *FastAppleList) Exists(p func(Apple) bool) bool

Exists verifies that one or more elements of FastAppleList return true for the predicate p.

func (*FastAppleList) Filter

func (list *FastAppleList) Filter(p func(Apple) bool) *FastAppleList

Filter returns a new FastAppleList whose elements return true for predicate p.

The original list is not modified. See also DoKeepWhere (which does modify the original list).

func (*FastAppleList) Find

func (list *FastAppleList) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for predicate p. False is returned if none match.

func (*FastAppleList) FlatMap

func (list *FastAppleList) FlatMap(f func(Apple) []Apple) *FastAppleList

FlatMap returns a new FastAppleList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastAppleList) Fold added in v3.9.0

func (list *FastAppleList) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (*FastAppleList) Forall

func (list *FastAppleList) Forall(p func(Apple) bool) bool

Forall verifies that all elements of FastAppleList return true for the predicate p.

func (*FastAppleList) Foreach

func (list *FastAppleList) Foreach(f func(Apple))

Foreach iterates over FastAppleList and executes function f against each element. The function can safely alter the values via side-effects.

func (*FastAppleList) Get

func (list *FastAppleList) Get(i int) Apple

Get gets the specified element in the list. Panics if the index is out of range or the list is nil.

func (*FastAppleList) GobDecode

func (list *FastAppleList) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this list type. You must register Apple with the 'gob' package before this method is used.

func (FastAppleList) GobEncode

func (list FastAppleList) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this list type. You must register Apple with the 'gob' package before this method is used.

func (*FastAppleList) Head

func (list *FastAppleList) Head() Apple

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (*FastAppleList) HeadOption

func (list *FastAppleList) HeadOption() (Apple, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (*FastAppleList) IndexWhere

func (list *FastAppleList) IndexWhere(p func(Apple) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (*FastAppleList) IndexWhere2

func (list *FastAppleList) IndexWhere2(p func(Apple) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (*FastAppleList) Init

func (list *FastAppleList) Init() *FastAppleList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (*FastAppleList) IsEmpty

func (list *FastAppleList) IsEmpty() bool

IsEmpty tests whether FastAppleList is empty.

func (*FastAppleList) IsSequence

func (list *FastAppleList) IsSequence() bool

IsSequence returns true for lists and queues.

func (*FastAppleList) IsSet

func (list *FastAppleList) IsSet() bool

IsSet returns false for lists or queues.

func (*FastAppleList) Last

func (list *FastAppleList) Last() Apple

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (*FastAppleList) LastIndexWhere

func (list *FastAppleList) LastIndexWhere(p func(Apple) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (*FastAppleList) LastIndexWhere2

func (list *FastAppleList) LastIndexWhere2(p func(Apple) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (*FastAppleList) LastOption

func (list *FastAppleList) LastOption() (Apple, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (*FastAppleList) Len

func (list *FastAppleList) Len() int

Len returns the number of items in the list - an alias of Size(). This is one of the three methods in the standard sort.Interface.

func (*FastAppleList) Map

func (list *FastAppleList) Map(f func(Apple) Apple) *FastAppleList

Map returns a new FastAppleList by transforming every element with function f. The resulting list is the same size as the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastAppleList) MaxBy

func (list *FastAppleList) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of FastAppleList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*FastAppleList) MinBy

func (list *FastAppleList) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of FastAppleList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*FastAppleList) NonEmpty

func (list *FastAppleList) NonEmpty() bool

NonEmpty tests whether FastAppleList is empty.

func (*FastAppleList) Partition

func (list *FastAppleList) Partition(p func(Apple) bool) (*FastAppleList, *FastAppleList)

Partition returns two new FastAppleLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original list is not modified

func (*FastAppleList) Reverse

func (list *FastAppleList) Reverse() *FastAppleList

Reverse returns a copy of FastAppleList with all elements in the reverse order.

The original list is not modified.

func (*FastAppleList) Send

func (list *FastAppleList) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*FastAppleList) Shuffle

func (list *FastAppleList) Shuffle() *FastAppleList

Shuffle returns a shuffled copy of FastAppleList, using a version of the Fisher-Yates shuffle.

The original list is not modified.

func (*FastAppleList) Size

func (list *FastAppleList) Size() int

Size returns the number of items in the list - an alias of Len().

func (*FastAppleList) SortBy

func (list *FastAppleList) SortBy(less func(i, j Apple) bool) *FastAppleList

SortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned.

func (*FastAppleList) StableSortBy

func (list *FastAppleList) StableSortBy(less func(i, j Apple) bool) *FastAppleList

StableSortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned. The algorithm keeps the original order of equal elements.

func (*FastAppleList) Swap

func (list *FastAppleList) Swap(i, j int)

Swap exchanges two elements, which is necessary during sorting etc. This is one of the three methods in the standard sort.Interface.

func (*FastAppleList) Tail

func (list *FastAppleList) Tail() *FastAppleList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (*FastAppleList) Take

func (list *FastAppleList) Take(n int) *FastAppleList

Take returns a slice of FastAppleList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*FastAppleList) TakeLast

func (list *FastAppleList) TakeLast(n int) *FastAppleList

TakeLast returns a slice of FastAppleList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

The original list is not modified.

func (*FastAppleList) TakeWhile

func (list *FastAppleList) TakeWhile(p func(Apple) bool) *FastAppleList

TakeWhile returns a new FastAppleList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

The original list is not modified.

func (*FastAppleList) ToInterfaceSlice

func (list *FastAppleList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (*FastAppleList) ToList

func (list *FastAppleList) ToList() *FastAppleList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (*FastAppleList) ToSlice

func (list *FastAppleList) ToSlice() []Apple

ToSlice returns the elements of the current list as a slice.

type FastAppleQueue

type FastAppleQueue struct {
	// contains filtered or unexported fields
}

FastAppleQueue is a ring buffer containing a slice of type Apple. It is optimised for FIFO operations.

func BuildFastAppleQueueFromChan

func BuildFastAppleQueueFromChan(source <-chan Apple) *FastAppleQueue

BuildFastAppleQueueFromChan constructs a new FastAppleQueue from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func NewFastAppleQueue

func NewFastAppleQueue(capacity int, overwrite bool) *FastAppleQueue

NewFastAppleQueue returns a new queue of Apple. The behaviour when adding to the queue depends on overwrite. If true, the push operation overwrites oldest values up to the space available, when the queue is full. Otherwise, it refuses to overfill the queue.

func NewFastAppleSortedQueue

func NewFastAppleSortedQueue(capacity int, overwrite bool, less func(i, j Apple) bool) *FastAppleQueue

NewFastAppleSortedQueue returns a new queue of Apple. The behaviour when adding to the queue depends on overwrite. If true, the push operation overwrites oldest values up to the space available, when the queue is full. Otherwise, it refuses to overfill the queue. If the 'less' comparison function is not nil, elements can be easily sorted.

func (*FastAppleQueue) Add

func (queue *FastAppleQueue) Add(more ...Apple)

Add adds items to the queue. This is a synonym for Push.

func (*FastAppleQueue) Cap

func (queue *FastAppleQueue) Cap() int

Cap gets the capacity of this queue.

func (*FastAppleQueue) Clear

func (queue *FastAppleQueue) Clear()

Clear the entire queue.

func (*FastAppleQueue) Clone

func (queue *FastAppleQueue) Clone() *FastAppleQueue

Clone returns a shallow copy of the queue. It does not clone the underlying elements.

func (*FastAppleQueue) CountBy

func (queue *FastAppleQueue) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of FastAppleQueue that return true for the predicate p.

func (*FastAppleQueue) DoKeepWhere

func (queue *FastAppleQueue) DoKeepWhere(p func(Apple) bool) *FastAppleQueue

DoKeepWhere modifies a FastAppleQueue by retaining only those elements that match the predicate p. This is very similar to Filter but alters the queue in place.

The queue is modified and the modified queue is returned.

func (*FastAppleQueue) Exists

func (queue *FastAppleQueue) Exists(p func(Apple) bool) bool

Exists verifies that one or more elements of FastAppleQueue return true for the predicate p. The function should not alter the values via side-effects.

func (*FastAppleQueue) Filter

func (queue *FastAppleQueue) Filter(p func(Apple) bool) *FastAppleQueue

Filter returns a new FastAppleQueue whose elements return true for predicate p.

The original queue is not modified. See also DoKeepWhere (which does modify the original queue).

func (*FastAppleQueue) Find

func (queue *FastAppleQueue) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for predicate p. False is returned if none match.

func (*FastAppleQueue) FlatMap

func (queue *FastAppleQueue) FlatMap(f func(Apple) []Apple) *FastAppleQueue

FlatMap returns a new FastAppleQueue by transforming every element with function f that returns zero or more items in a slice. The resulting queue may have a different size to the original queue. The original queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastAppleQueue) Fold added in v3.9.0

func (queue *FastAppleQueue) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the queue using a supplied function, starting from some initial value.

func (*FastAppleQueue) Forall

func (queue *FastAppleQueue) Forall(p func(Apple) bool) bool

Forall verifies that all elements of FastAppleQueue return true for the predicate p. The function should not alter the values via side-effects.

func (*FastAppleQueue) Foreach

func (queue *FastAppleQueue) Foreach(f func(Apple))

Foreach iterates over FastAppleQueue and executes function f against each element. The function can safely alter the values via side-effects.

func (*FastAppleQueue) Get

func (queue *FastAppleQueue) Get(i int) Apple

Get gets the specified element in the queue. Panics if the index is out of range or the queue is nil.

func (*FastAppleQueue) Head

func (queue *FastAppleQueue) Head() Apple

Head gets the first element in the queue. Head is the opposite of Last. Panics if queue is empty or nil.

func (*FastAppleQueue) HeadOption

func (queue *FastAppleQueue) HeadOption() (Apple, bool)

HeadOption returns the oldest item in the queue without removing it. If the queue is nil or empty, it returns the zero value instead.

func (*FastAppleQueue) IsEmpty

func (queue *FastAppleQueue) IsEmpty() bool

IsEmpty returns true if the queue is empty.

func (*FastAppleQueue) IsFull

func (queue *FastAppleQueue) IsFull() bool

IsFull returns true if the queue is full.

func (*FastAppleQueue) IsOverwriting

func (queue *FastAppleQueue) IsOverwriting() bool

IsOverwriting returns true if the queue is overwriting, false if refusing.

func (*FastAppleQueue) IsSequence

func (queue *FastAppleQueue) IsSequence() bool

IsSequence returns true for ordered lists and queues.

func (*FastAppleQueue) IsSet

func (queue *FastAppleQueue) IsSet() bool

IsSet returns false for lists or queues.

func (*FastAppleQueue) Last

func (queue *FastAppleQueue) Last() Apple

Last gets the the newest item in the queue (i.e. last element pushed) without removing it. Last is the opposite of Head. Panics if queue is empty or nil.

func (*FastAppleQueue) LastOption

func (queue *FastAppleQueue) LastOption() (Apple, bool)

LastOption returns the newest item in the queue without removing it. If the queue is nil empty, it returns the zero value instead.

func (*FastAppleQueue) Len

func (queue *FastAppleQueue) Len() int

Len gets the current length of this queue. This is an alias for Size.

func (*FastAppleQueue) Less

func (queue *FastAppleQueue) Less(i, j int) bool

Less reports whether the element with index i should sort before the element with index j. The queue must have been created with a non-nil 'less' comparison function and it must not be empty.

func (*FastAppleQueue) Map

func (queue *FastAppleQueue) Map(f func(Apple) Apple) *FastAppleQueue

Map returns a new FastAppleQueue by transforming every element with function f. The resulting queue is the same size as the original queue. The original queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastAppleQueue) MaxBy

func (queue *FastAppleQueue) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of FastAppleQueue containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*FastAppleQueue) MinBy

func (queue *FastAppleQueue) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of FastAppleQueue containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*FastAppleQueue) NonEmpty

func (queue *FastAppleQueue) NonEmpty() bool

NonEmpty returns true if the queue is not empty.

func (*FastAppleQueue) Offer

func (queue *FastAppleQueue) Offer(items ...Apple) []Apple

Offer appends as many items to the end of the queue as it can. If the queue is already full, what happens depends on whether the queue is configured to overwrite. If it is, the oldest items will be overwritten. Otherwise, it will be filled to capacity and any unwritten items are returned.

If the capacity is too small for the number of items, the excess items are returned. The queue capacity is never altered.

func (*FastAppleQueue) Partition

func (queue *FastAppleQueue) Partition(p func(Apple) bool) (*FastAppleQueue, *FastAppleQueue)

Partition returns two new FastAppleQueues whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original queue.

The original queue is not modified

func (*FastAppleQueue) Pop

func (queue *FastAppleQueue) Pop(n int) []Apple

Pop removes and returns the oldest items from the queue. If the queue is empty, it returns a nil slice. If n is larger than the current queue length, it returns all the available elements, so in this case the returned slice will be shorter than n.

func (*FastAppleQueue) Pop1

func (queue *FastAppleQueue) Pop1() (Apple, bool)

Pop1 removes and returns the oldest item from the queue. If the queue is empty, it returns the zero value instead. The boolean is true only if the element was available.

func (*FastAppleQueue) Push

func (queue *FastAppleQueue) Push(items ...Apple) *FastAppleQueue

Push appends items to the end of the queue. If the queue does not have enough space, more will be allocated: how this happens depends on the overwriting mode.

When overwriting, the oldest items are overwritten with the new data; it expands the queue only if there is still not enough space.

Otherwise, the queue might be reallocated if necessary, ensuring that all the data is pushed without any older items being affected.

The modified queue is returned.

func (*FastAppleQueue) Reallocate

func (queue *FastAppleQueue) Reallocate(capacity int, overwrite bool) *FastAppleQueue

Reallocate adjusts the allocated capacity of the queue and allows the overwriting behaviour to be changed.

If the new queue capacity is different to the current capacity, the queue is re-allocated to the new capacity. If this is less than the current number of elements, the oldest items in the queue are discarded so that the remaining data can fit in the new space available.

If the new queue capacity is the same as the current capacity, the queue is not altered except for adopting the new overwrite flag's value. Therefore this is the means to change the overwriting behaviour.

Reallocate adjusts the storage space but does not clone the underlying elements.

The queue must not be nil.

func (*FastAppleQueue) Send

func (queue *FastAppleQueue) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*FastAppleQueue) Size

func (queue *FastAppleQueue) Size() int

Size gets the number of elements currently in this queue. This is an alias for Len.

func (*FastAppleQueue) Sort

func (queue *FastAppleQueue) Sort()

Sort sorts the queue using the 'less' comparison function, which must not be nil. This function will panic if the collection was created with a nil 'less' function (see NewFastAppleSortedQueue).

func (*FastAppleQueue) Space

func (queue *FastAppleQueue) Space() int

Space returns the space available in the queue.

func (*FastAppleQueue) StableSort

func (queue *FastAppleQueue) StableSort()

StableSort sorts the queue using the 'less' comparison function, which must not be nil. The result is stable so that repeated calls will not arbitrarily swap equal items. This function will panic if the collection was created with a nil 'less' function (see NewFastAppleSortedQueue).

func (*FastAppleQueue) Swap

func (queue *FastAppleQueue) Swap(i, j int)

Swap swaps the elements with indexes i and j. The queue must not be empty.

func (*FastAppleQueue) ToInterfaceSlice

func (queue *FastAppleQueue) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the queue as a slice of arbitrary type. The queue is not altered.

func (*FastAppleQueue) ToSlice

func (queue *FastAppleQueue) ToSlice() []Apple

ToSlice returns the elements of the queue as a slice. The queue is not altered.

type FastAppleSequence added in v3.9.0

type FastAppleSequence interface {
	FastAppleCollection

	// Head gets the first element in the sequence. Head plus Tail include the whole sequence. Head is the opposite of Last.
	Head() Apple

	// HeadOption gets the first element in the sequence, if possible.
	HeadOption() (Apple, bool)

	// Last gets the last element in the sequence. Init plus Last include the whole sequence. Last is the opposite of Head.
	Last() Apple

	// LastOption gets the last element in the sequence, if possible.
	LastOption() (Apple, bool)
}

FastAppleSequence defines an interface for sequence methods on Apple.

type FastAppleSet

type FastAppleSet struct {
	// contains filtered or unexported fields
}

FastAppleSet is the primary type that represents a set.

func BuildFastAppleSetFromChan

func BuildFastAppleSetFromChan(source <-chan Apple) *FastAppleSet

BuildFastAppleSetFromChan constructs a new FastAppleSet from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertFastAppleSet

func ConvertFastAppleSet(values ...interface{}) (*FastAppleSet, bool)

ConvertFastAppleSet constructs a new set containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned set will contain all the values that were correctly converted.

func NewFastAppleSet

func NewFastAppleSet(values ...Apple) *FastAppleSet

NewFastAppleSet creates and returns a reference to an empty set.

func (*FastAppleSet) Add

func (set *FastAppleSet) Add(more ...Apple)

Add adds items to the current set.

func (*FastAppleSet) Cardinality

func (set *FastAppleSet) Cardinality() int

Cardinality returns how many items are currently in the set. This is a synonym for Size.

func (*FastAppleSet) Clear

func (set *FastAppleSet) Clear()

Clear the entire set. Aterwards, it will be an empty set.

func (*FastAppleSet) Clone

func (set *FastAppleSet) Clone() *FastAppleSet

Clone returns a shallow copy of the set. It does not clone the underlying elements.

func (*FastAppleSet) Contains

func (set *FastAppleSet) Contains(i Apple) bool

Contains determines whether a given item is already in the set, returning true if so.

func (*FastAppleSet) ContainsAll

func (set *FastAppleSet) ContainsAll(i ...Apple) bool

ContainsAll determines whether the given items are all in the set, returning true if so.

func (*FastAppleSet) CountBy

func (set *FastAppleSet) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of FastAppleSet that return true for the predicate p.

func (*FastAppleSet) Difference

func (set *FastAppleSet) Difference(other *FastAppleSet) *FastAppleSet

Difference returns a new set with items in the current set but not in the other set

func (*FastAppleSet) Equals

func (set *FastAppleSet) Equals(other *FastAppleSet) bool

Equals determines whether two sets are equal to each other, returning true if so. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.

func (*FastAppleSet) Exists

func (set *FastAppleSet) Exists(p func(Apple) bool) bool

Exists applies a predicate p to every element in the set. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*FastAppleSet) Filter

func (set *FastAppleSet) Filter(p func(Apple) bool) *FastAppleSet

Filter returns a new FastAppleSet whose elements return true for the predicate p.

The original set is not modified

func (*FastAppleSet) Find

func (set *FastAppleSet) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for the predicate p. If there are many matches one is arbtrarily chosen. False is returned if none match.

func (*FastAppleSet) FlatMap

func (set *FastAppleSet) FlatMap(f func(Apple) []Apple) *FastAppleSet

FlatMap returns a new FastAppleSet by transforming every element with a function f that returns zero or more items in a slice. The resulting set may have a different size to the original set. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastAppleSet) Fold added in v3.9.0

func (set *FastAppleSet) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the set using a supplied function, starting from some initial value.

func (*FastAppleSet) Forall

func (set *FastAppleSet) Forall(p func(Apple) bool) bool

Forall applies a predicate function p to every element in the set. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*FastAppleSet) Foreach

func (set *FastAppleSet) Foreach(f func(Apple))

Foreach iterates over the set and executes the function f against each element. The function can safely alter the values via side-effects.

func (*FastAppleSet) GobDecode

func (set *FastAppleSet) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this set type. You must register Apple with the 'gob' package before this method is used.

func (FastAppleSet) GobEncode

func (set FastAppleSet) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this list type. You must register Apple with the 'gob' package before this method is used.

func (*FastAppleSet) Intersect

func (set *FastAppleSet) Intersect(other *FastAppleSet) *FastAppleSet

Intersect returns a new set with items that exist only in both sets.

func (*FastAppleSet) IsEmpty

func (set *FastAppleSet) IsEmpty() bool

IsEmpty returns true if the set is empty.

func (*FastAppleSet) IsSequence

func (set *FastAppleSet) IsSequence() bool

IsSequence returns true for lists and queues.

func (*FastAppleSet) IsSet

func (set *FastAppleSet) IsSet() bool

IsSet returns false for lists or queues.

func (*FastAppleSet) IsSubset

func (set *FastAppleSet) IsSubset(other *FastAppleSet) bool

IsSubset determines whether every item in the other set is in this set, returning true if so.

func (*FastAppleSet) IsSuperset

func (set *FastAppleSet) IsSuperset(other *FastAppleSet) bool

IsSuperset determines whether every item of this set is in the other set, returning true if so.

func (*FastAppleSet) Map

func (set *FastAppleSet) Map(f func(Apple) Apple) *FastAppleSet

Map returns a new FastAppleSet by transforming every element with a function f. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastAppleSet) MaxBy

func (set *FastAppleSet) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of FastAppleSet containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*FastAppleSet) MinBy

func (set *FastAppleSet) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of FastAppleSet containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*FastAppleSet) NonEmpty

func (set *FastAppleSet) NonEmpty() bool

NonEmpty returns true if the set is not empty.

func (*FastAppleSet) Partition

func (set *FastAppleSet) Partition(p func(Apple) bool) (*FastAppleSet, *FastAppleSet)

Partition returns two new FastAppleSets whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original set is not modified

func (*FastAppleSet) Remove

func (set *FastAppleSet) Remove(i Apple)

Remove a single item from the set.

func (*FastAppleSet) Send

func (set *FastAppleSet) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed

func (*FastAppleSet) Size

func (set *FastAppleSet) Size() int

Size returns how many items are currently in the set. This is a synonym for Cardinality.

func (*FastAppleSet) SymmetricDifference

func (set *FastAppleSet) SymmetricDifference(other *FastAppleSet) *FastAppleSet

SymmetricDifference returns a new set with items in the current set or the other set but not in both.

func (*FastAppleSet) ToInterfaceSlice

func (set *FastAppleSet) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current set as a slice of arbitrary type.

func (*FastAppleSet) ToSet

func (set *FastAppleSet) ToSet() *FastAppleSet

ToSet returns the set; this is an identity operation in this case.

func (*FastAppleSet) ToSlice

func (set *FastAppleSet) ToSlice() []Apple

ToSlice returns the elements of the current set as a slice.

func (*FastAppleSet) Union

func (set *FastAppleSet) Union(other *FastAppleSet) *FastAppleSet

Union returns a new set with all items in both sets.

type FastAppleSizer

type FastAppleSizer interface {
	// IsEmpty tests whether FastAppleCollection is empty.
	IsEmpty() bool

	// NonEmpty tests whether FastAppleCollection is empty.
	NonEmpty() bool

	// Size returns the number of items in the collection - an alias of Len().
	Size() int
}

FastAppleSizer defines an interface for sizing methods on Apple collections.

type FastIntCollection

type FastIntCollection interface {
	FastIntSizer
	FastIntMkStringer

	// IsSequence returns true for lists and queues.
	IsSequence() bool

	// IsSet returns false for lists and queues.
	IsSet() bool

	// ToSlice returns a shallow copy as a plain slice.
	ToSlice() []int

	// ToInterfaceSlice returns a shallow copy as a slice of arbitrary type.
	ToInterfaceSlice() []interface{}

	// Exists verifies that one or more elements of FastIntCollection return true for the predicate p.
	Exists(p func(int) bool) bool

	// Forall verifies that all elements of FastIntCollection return true for the predicate p.
	Forall(p func(int) bool) bool

	// Foreach iterates over FastIntCollection and executes the function f against each element.
	Foreach(f func(int))

	// Find returns the first int that returns true for the predicate p.
	// False is returned if none match.
	Find(p func(int) bool) (int, bool)

	// Send returns a channel that will send all the elements in order. Can be used with the plumbing code, for example.
	// A goroutine is created to send the elements; this only terminates when all the elements have been consumed
	Send() <-chan int

	// CountBy gives the number elements of FastIntCollection that return true for the predicate p.
	CountBy(p func(int) bool) int

	// Contains determines whether a given item is already in the collection, returning true if so.
	Contains(v int) bool

	// ContainsAll determines whether the given items are all in the collection, returning true if so.
	ContainsAll(v ...int) bool

	// Clear the entire collection.
	Clear()

	// Add adds items to the current collection.
	Add(more ...int)

	// Min returns the minimum value of all the items in the collection. Panics if there are no elements.
	Min() int

	// Max returns the minimum value of all the items in the collection. Panics if there are no elements.
	Max() int

	// MinBy returns an element of FastIntCollection containing the minimum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such
	// element is returned. Panics if there are no elements.
	MinBy(less func(int, int) bool) int

	// MaxBy returns an element of FastIntCollection containing the maximum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such
	// element is returned. Panics if there are no elements.
	MaxBy(less func(int, int) bool) int

	// Fold aggregates all the values in the collection using a supplied function, starting from some initial value.
	Fold(initial int, fn func(int, int) int) int

	// Sum returns the sum of all the elements in the collection.
	Sum() int
}

FastIntCollection defines an interface for common collection methods on int.

type FastIntIntMap

type FastIntIntMap struct {
	// contains filtered or unexported fields
}

FastIntIntMap is the primary type that represents a thread-safe map

func NewFastIntIntMap

func NewFastIntIntMap(kv ...FastIntIntTuple) *FastIntIntMap

NewFastIntIntMap creates and returns a reference to a map, optionally containing some items.

func NewFastIntIntMap1

func NewFastIntIntMap1(k int, v int) *FastIntIntMap

NewFastIntIntMap1 creates and returns a reference to a map containing one item.

func (*FastIntIntMap) Clear

func (mm *FastIntIntMap) Clear()

Clear clears the entire map.

func (*FastIntIntMap) Clone

func (mm *FastIntIntMap) Clone() *FastIntIntMap

Clone returns a shallow copy of the map. It does not clone the underlying elements.

func (*FastIntIntMap) ContainsAllKeys

func (mm *FastIntIntMap) ContainsAllKeys(kk ...int) bool

ContainsAllKeys determines if the given items are all in the map.

func (*FastIntIntMap) ContainsKey

func (mm *FastIntIntMap) ContainsKey(k int) bool

ContainsKey determines if a given item is already in the map.

func (*FastIntIntMap) DropWhere

func (mm *FastIntIntMap) DropWhere(fn func(int, int) bool) FastIntIntTuples

DropWhere applies a predicate function to every element in the map. If the function returns true, the element is dropped from the map. This is similar to Filter except that the map is modified.

func (*FastIntIntMap) Equals

func (mm *FastIntIntMap) Equals(other *FastIntIntMap) bool

Equals determines if two maps are equal to each other. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for maps to be equal.

func (*FastIntIntMap) Exists

func (mm *FastIntIntMap) Exists(p func(int, int) bool) bool

Exists applies the predicate p to every element in the map. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*FastIntIntMap) Filter

func (mm *FastIntIntMap) Filter(p func(int, int) bool) *FastIntIntMap

Filter applies the predicate p to every element in the map and returns a copied map containing only the elements for which the predicate returned true. The original map is not modified.

func (*FastIntIntMap) Find

func (mm *FastIntIntMap) Find(p func(int, int) bool) (FastIntIntTuple, bool)

Find returns the first int that returns true for the predicate p. False is returned if none match. The original map is not modified.

func (*FastIntIntMap) FlatMap

func (mm *FastIntIntMap) FlatMap(f func(int, int) []FastIntIntTuple) *FastIntIntMap

FlatMap returns a new FastIntMap by transforming every element with the function f that returns zero or more items in a slice. The resulting map may have a different size to the original map. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntIntMap) Forall

func (mm *FastIntIntMap) Forall(p func(int, int) bool) bool

Forall applies the predicate p to every element in the map. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*FastIntIntMap) Foreach

func (mm *FastIntIntMap) Foreach(f func(int, int))

Foreach applies the function f to every element in the map. The function can safely alter the values via side-effects.

func (*FastIntIntMap) Get

func (mm *FastIntIntMap) Get(k int) (int, bool)

Get returns one of the items in the map, if present.

func (*FastIntIntMap) IsEmpty

func (mm *FastIntIntMap) IsEmpty() bool

IsEmpty returns true if the map is empty.

func (*FastIntIntMap) Keys

func (mm *FastIntIntMap) Keys() []int

Keys returns the keys of the current map as a slice.

func (*FastIntIntMap) Map

func (mm *FastIntIntMap) Map(f func(int, int) (int, int)) *FastIntIntMap

Map returns a new FastIntMap by transforming every element with the function f. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntIntMap) MkString

func (mm *FastIntIntMap) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (*FastIntIntMap) MkString4 added in v3.7.0

func (mm *FastIntIntMap) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (*FastIntIntMap) NonEmpty

func (mm *FastIntIntMap) NonEmpty() bool

NonEmpty returns true if the map is not empty.

func (*FastIntIntMap) OrderedSlice added in v3.6.0

func (mm *FastIntIntMap) OrderedSlice(keys []int) FastIntIntTuples

OrderedSlice returns the key/value pairs as a slice in the order specified by keys.

func (*FastIntIntMap) Partition

func (mm *FastIntIntMap) Partition(p func(int, int) bool) (matching *FastIntIntMap, others *FastIntIntMap)

Partition applies the predicate p to every element in the map. It divides the map into two copied maps, the first containing all the elements for which the predicate returned true, and the second containing all the others. The original map is not modified.

func (*FastIntIntMap) Pop

func (mm *FastIntIntMap) Pop(k int) (int, bool)

Pop removes a single item from the map, returning the value present prior to removal. The boolean result is true only if the key had been present.

func (*FastIntIntMap) Put

func (mm *FastIntIntMap) Put(k int, v int) bool

Put adds an item to the current map, replacing any prior value.

func (*FastIntIntMap) Remove

func (mm *FastIntIntMap) Remove(k int)

Remove a single item from the map.

func (*FastIntIntMap) Size

func (mm *FastIntIntMap) Size() int

Size returns how many items are currently in the map. This is a synonym for Len.

func (*FastIntIntMap) String

func (mm *FastIntIntMap) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (*FastIntIntMap) ToSlice

func (mm *FastIntIntMap) ToSlice() FastIntIntTuples

ToSlice returns the key/value pairs as a slice

func (*FastIntIntMap) Values

func (mm *FastIntIntMap) Values() []int

Values returns the values of the current map as a slice.

type FastIntIntTuple

type FastIntIntTuple struct {
	Key int
	Val int
}

FastIntIntTuple represents a key/value pair.

func (FastIntIntTuple) MarshalJSON added in v3.6.0

func (t FastIntIntTuple) MarshalJSON() ([]byte, error)

MarshalJSON implements encoding.Marshaler interface.

func (FastIntIntTuple) UnmarshalJSON added in v3.6.0

func (t FastIntIntTuple) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this tuple type.

type FastIntIntTuples

type FastIntIntTuples []FastIntIntTuple

FastIntIntTuples can be used as a builder for unmodifiable maps.

func FastIntIntZip

func FastIntIntZip(keys ...int) FastIntIntTuples

FastIntIntZip is used with the Values method to zip (i.e. interleave) a slice of keys with a slice of values. These can then be passed in to the NewFastIntIntMap constructor function.

func (FastIntIntTuples) Append1

func (ts FastIntIntTuples) Append1(k int, v int) FastIntIntTuples

Append1 adds one item.

func (FastIntIntTuples) Append2

func (ts FastIntIntTuples) Append2(k1 int, v1 int, k2 int, v2 int) FastIntIntTuples

Append2 adds two items.

func (FastIntIntTuples) Append3

func (ts FastIntIntTuples) Append3(k1 int, v1 int, k2 int, v2 int, k3 int, v3 int) FastIntIntTuples

Append3 adds three items.

func (FastIntIntTuples) MkString added in v3.6.0

func (ts FastIntIntTuples) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (FastIntIntTuples) MkString4 added in v3.7.0

func (ts FastIntIntTuples) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (FastIntIntTuples) String added in v3.6.0

func (ts FastIntIntTuples) String() string

func (FastIntIntTuples) ToMap added in v3.6.0

func (ts FastIntIntTuples) ToMap() *FastIntIntMap

ToMap converts the tuples to a map.

func (FastIntIntTuples) Values

func (ts FastIntIntTuples) Values(values ...int) FastIntIntTuples

Values sets the values in a tuple slice. Use this with FastIntIntZip.

type FastIntList

type FastIntList struct {
	// contains filtered or unexported fields
}

FastIntList contains a slice of type int. It encapsulates the slice and provides methods to access or mutate it.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildFastIntListFromChan

func BuildFastIntListFromChan(source <-chan int) *FastIntList

BuildFastIntListFromChan constructs a new FastIntList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertFastIntList

func ConvertFastIntList(values ...interface{}) (*FastIntList, bool)

ConvertFastIntList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted. Conversions are provided from all built-in numeric types.

func MakeFastIntList

func MakeFastIntList(length, capacity int) *FastIntList

MakeFastIntList makes an empty list with both length and capacity initialised.

func NewFastIntList

func NewFastIntList(values ...int) *FastIntList

NewFastIntList constructs a new list containing the supplied values, if any.

func (*FastIntList) Add

func (list *FastIntList) Add(more ...int)

Add adds items to the current list. This is a synonym for Append.

func (*FastIntList) Append

func (list *FastIntList) Append(more ...int) *FastIntList

Append adds items to the current list. If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned.

func (*FastIntList) Clear

func (list *FastIntList) Clear()

Clear the entire collection.

func (*FastIntList) Clone

func (list *FastIntList) Clone() *FastIntList

Clone returns a shallow copy of the list. It does not clone the underlying elements.

func (*FastIntList) Contains

func (list *FastIntList) Contains(v int) bool

Contains determines whether a given item is already in the list, returning true if so.

func (*FastIntList) ContainsAll

func (list *FastIntList) ContainsAll(i ...int) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (*FastIntList) CountBy

func (list *FastIntList) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of FastIntList that return true for the predicate p.

func (*FastIntList) DistinctBy

func (list *FastIntList) DistinctBy(equal func(int, int) bool) *FastIntList

DistinctBy returns a new FastIntList whose elements are unique, where equality is defined by the equal function.

func (*FastIntList) DoDeleteAt

func (list *FastIntList) DoDeleteAt(index, n int) *FastIntList

DoDeleteAt modifies a FastIntList by deleting n elements from a given index.

The list is modified and the modified list is returned. Panics if the index is out of range or n is large enough to take the index out of range.

func (*FastIntList) DoDeleteFirst

func (list *FastIntList) DoDeleteFirst(n int) *FastIntList

DoDeleteFirst modifies a FastIntList by deleting n elements from the start of the list.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if n is large enough to take the index out of range.

func (*FastIntList) DoDeleteLast

func (list *FastIntList) DoDeleteLast(n int) *FastIntList

DoDeleteLast modifies a FastIntList by deleting n elements from the end of the list.

The list is modified and the modified list is returned. Panics if n is large enough to take the index out of range.

func (*FastIntList) DoInsertAt

func (list *FastIntList) DoInsertAt(index int, more ...int) *FastIntList

DoInsertAt modifies a FastIntList by inserting elements at a given index. This is a generalised version of Append.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if the index is out of range.

func (*FastIntList) DoKeepWhere

func (list *FastIntList) DoKeepWhere(p func(int) bool) *FastIntList

DoKeepWhere modifies a FastIntList by retaining only those elements that match the predicate p. This is very similar to Filter but alters the list in place.

The list is modified and the modified list is returned.

func (*FastIntList) DoReverse

func (list *FastIntList) DoReverse() *FastIntList

DoReverse alters a FastIntList with all elements in the reverse order. Unlike Reverse, it does not allocate new memory.

The list is modified and the modified list is returned.

func (*FastIntList) DoShuffle

func (list *FastIntList) DoShuffle() *FastIntList

DoShuffle returns a shuffled FastIntList, using a version of the Fisher-Yates shuffle.

The list is modified and the modified list is returned.

func (*FastIntList) Drop

func (list *FastIntList) Drop(n int) *FastIntList

Drop returns a slice of FastIntList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*FastIntList) DropLast

func (list *FastIntList) DropLast(n int) *FastIntList

DropLast returns a slice of FastIntList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*FastIntList) DropWhile

func (list *FastIntList) DropWhile(p func(int) bool) *FastIntList

DropWhile returns a new FastIntList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

The original list is not modified.

func (*FastIntList) Equals

func (list *FastIntList) Equals(other *FastIntList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal. Nil lists are considered to be empty.

func (*FastIntList) Exists

func (list *FastIntList) Exists(p func(int) bool) bool

Exists verifies that one or more elements of FastIntList return true for the predicate p.

func (*FastIntList) Filter

func (list *FastIntList) Filter(p func(int) bool) *FastIntList

Filter returns a new FastIntList whose elements return true for predicate p.

The original list is not modified. See also DoKeepWhere (which does modify the original list).

func (*FastIntList) Find

func (list *FastIntList) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for predicate p. False is returned if none match.

func (*FastIntList) FlatMap

func (list *FastIntList) FlatMap(f func(int) []int) *FastIntList

FlatMap returns a new FastIntList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntList) FlatMapToInt64

func (list *FastIntList) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntList) FlatMapToString

func (list *FastIntList) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntList) Fold added in v3.9.0

func (list *FastIntList) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (*FastIntList) Forall

func (list *FastIntList) Forall(p func(int) bool) bool

Forall verifies that all elements of FastIntList return true for the predicate p.

func (*FastIntList) Foreach

func (list *FastIntList) Foreach(f func(int))

Foreach iterates over FastIntList and executes function f against each element. The function can safely alter the values via side-effects.

func (*FastIntList) Get

func (list *FastIntList) Get(i int) int

Get gets the specified element in the list. Panics if the index is out of range or the list is nil.

func (*FastIntList) Head

func (list *FastIntList) Head() int

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (*FastIntList) HeadOption

func (list *FastIntList) HeadOption() (int, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (*FastIntList) IndexWhere

func (list *FastIntList) IndexWhere(p func(int) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (*FastIntList) IndexWhere2

func (list *FastIntList) IndexWhere2(p func(int) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (*FastIntList) Init

func (list *FastIntList) Init() *FastIntList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (*FastIntList) IsEmpty

func (list *FastIntList) IsEmpty() bool

IsEmpty tests whether FastIntList is empty.

func (*FastIntList) IsSequence

func (list *FastIntList) IsSequence() bool

IsSequence returns true for lists and queues.

func (*FastIntList) IsSet

func (list *FastIntList) IsSet() bool

IsSet returns false for lists or queues.

func (*FastIntList) Last

func (list *FastIntList) Last() int

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (*FastIntList) LastIndexWhere

func (list *FastIntList) LastIndexWhere(p func(int) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (*FastIntList) LastIndexWhere2

func (list *FastIntList) LastIndexWhere2(p func(int) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (*FastIntList) LastOption

func (list *FastIntList) LastOption() (int, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (*FastIntList) Len

func (list *FastIntList) Len() int

Len returns the number of items in the list - an alias of Size(). This is one of the three methods in the standard sort.Interface.

func (*FastIntList) Map

func (list *FastIntList) Map(f func(int) int) *FastIntList

Map returns a new FastIntList by transforming every element with function f. The resulting list is the same size as the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntList) MapToInt64

func (list *FastIntList) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntList) MapToString

func (list *FastIntList) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (FastIntList) MarshalJSON

func (list FastIntList) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this list type.

func (*FastIntList) Max

func (list *FastIntList) Max() (result int)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (*FastIntList) MaxBy

func (list *FastIntList) MaxBy(less func(int, int) bool) int

MaxBy returns an element of FastIntList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*FastIntList) Min

func (list *FastIntList) Min() int

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (*FastIntList) MinBy

func (list *FastIntList) MinBy(less func(int, int) bool) int

MinBy returns an element of FastIntList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*FastIntList) MkString

func (list *FastIntList) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (*FastIntList) MkString3

func (list *FastIntList) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (*FastIntList) NonEmpty

func (list *FastIntList) NonEmpty() bool

NonEmpty tests whether FastIntList is empty.

func (*FastIntList) Partition

func (list *FastIntList) Partition(p func(int) bool) (*FastIntList, *FastIntList)

Partition returns two new FastIntLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original list is not modified

func (*FastIntList) Reverse

func (list *FastIntList) Reverse() *FastIntList

Reverse returns a copy of FastIntList with all elements in the reverse order.

The original list is not modified.

func (*FastIntList) Send

func (list *FastIntList) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*FastIntList) Shuffle

func (list *FastIntList) Shuffle() *FastIntList

Shuffle returns a shuffled copy of FastIntList, using a version of the Fisher-Yates shuffle.

The original list is not modified.

func (*FastIntList) Size

func (list *FastIntList) Size() int

Size returns the number of items in the list - an alias of Len().

func (*FastIntList) SortBy

func (list *FastIntList) SortBy(less func(i, j int) bool) *FastIntList

SortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned.

func (*FastIntList) Sorted

func (list *FastIntList) Sorted() *FastIntList

Sorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (*FastIntList) StableSortBy

func (list *FastIntList) StableSortBy(less func(i, j int) bool) *FastIntList

StableSortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned. The algorithm keeps the original order of equal elements.

func (*FastIntList) StableSorted

func (list *FastIntList) StableSorted() *FastIntList

StableSorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (*FastIntList) String

func (list *FastIntList) String() string

String implements the Stringer interface to render the list as a comma-separated string enclosed in square brackets.

func (*FastIntList) StringList

func (list *FastIntList) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (*FastIntList) Sum

func (list *FastIntList) Sum() int

Sum returns the sum of all the elements in the list.

func (*FastIntList) Swap

func (list *FastIntList) Swap(i, j int)

Swap exchanges two elements, which is necessary during sorting etc. This is one of the three methods in the standard sort.Interface.

func (*FastIntList) Tail

func (list *FastIntList) Tail() *FastIntList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (*FastIntList) Take

func (list *FastIntList) Take(n int) *FastIntList

Take returns a slice of FastIntList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*FastIntList) TakeLast

func (list *FastIntList) TakeLast(n int) *FastIntList

TakeLast returns a slice of FastIntList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

The original list is not modified.

func (*FastIntList) TakeWhile

func (list *FastIntList) TakeWhile(p func(int) bool) *FastIntList

TakeWhile returns a new FastIntList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

The original list is not modified.

func (*FastIntList) ToInterfaceSlice

func (list *FastIntList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (*FastIntList) ToList

func (list *FastIntList) ToList() *FastIntList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (*FastIntList) ToSlice

func (list *FastIntList) ToSlice() []int

ToSlice returns the elements of the current list as a slice.

func (*FastIntList) UnmarshalJSON

func (list *FastIntList) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this list type.

type FastIntMkStringer

type FastIntMkStringer interface {
	// String implements the Stringer interface to render the collection as a comma-separated string enclosed
	// in square brackets.
	String() string

	// MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.
	MkString(sep string) string

	// MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.
	MkString3(before, between, after string) string

	// implements json.Marshaler interface {
	MarshalJSON() ([]byte, error)

	// implements json.Unmarshaler interface {
	UnmarshalJSON(b []byte) error

	// StringList gets a collection of strings that depicts all the elements.
	StringList() []string
}

FastIntMkStringer defines an interface for stringer methods on int collections.

type FastIntQueue

type FastIntQueue struct {
	// contains filtered or unexported fields
}

FastIntQueue is a ring buffer containing a slice of type int. It is optimised for FIFO operations.

func BuildFastIntQueueFromChan

func BuildFastIntQueueFromChan(source <-chan int) *FastIntQueue

BuildFastIntQueueFromChan constructs a new FastIntQueue from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func NewFastIntQueue

func NewFastIntQueue(capacity int, overwrite bool) *FastIntQueue

NewFastIntQueue returns a new queue of int. The behaviour when adding to the queue depends on overwrite. If true, the push operation overwrites oldest values up to the space available, when the queue is full. Otherwise, it refuses to overfill the queue.

func NewFastIntSortedQueue

func NewFastIntSortedQueue(capacity int, overwrite bool, less func(i, j int) bool) *FastIntQueue

NewFastIntSortedQueue returns a new queue of int. The behaviour when adding to the queue depends on overwrite. If true, the push operation overwrites oldest values up to the space available, when the queue is full. Otherwise, it refuses to overfill the queue. If the 'less' comparison function is not nil, elements can be easily sorted.

func (*FastIntQueue) Add

func (queue *FastIntQueue) Add(more ...int)

Add adds items to the queue. This is a synonym for Push.

func (*FastIntQueue) Cap

func (queue *FastIntQueue) Cap() int

Cap gets the capacity of this queue.

func (*FastIntQueue) Clear

func (queue *FastIntQueue) Clear()

Clear the entire queue.

func (*FastIntQueue) Clone

func (queue *FastIntQueue) Clone() *FastIntQueue

Clone returns a shallow copy of the queue. It does not clone the underlying elements.

func (*FastIntQueue) CountBy

func (queue *FastIntQueue) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of FastIntQueue that return true for the predicate p.

func (*FastIntQueue) DoKeepWhere

func (queue *FastIntQueue) DoKeepWhere(p func(int) bool) *FastIntQueue

DoKeepWhere modifies a FastIntQueue by retaining only those elements that match the predicate p. This is very similar to Filter but alters the queue in place.

The queue is modified and the modified queue is returned.

func (*FastIntQueue) Exists

func (queue *FastIntQueue) Exists(p func(int) bool) bool

Exists verifies that one or more elements of FastIntQueue return true for the predicate p. The function should not alter the values via side-effects.

func (*FastIntQueue) Filter

func (queue *FastIntQueue) Filter(p func(int) bool) *FastIntQueue

Filter returns a new FastIntQueue whose elements return true for predicate p.

The original queue is not modified. See also DoKeepWhere (which does modify the original queue).

func (*FastIntQueue) Find

func (queue *FastIntQueue) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for predicate p. False is returned if none match.

func (*FastIntQueue) FlatMap

func (queue *FastIntQueue) FlatMap(f func(int) []int) *FastIntQueue

FlatMap returns a new FastIntQueue by transforming every element with function f that returns zero or more items in a slice. The resulting queue may have a different size to the original queue. The original queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntQueue) FlatMapToInt64

func (queue *FastIntQueue) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntQueue) FlatMapToString

func (queue *FastIntQueue) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntQueue) Fold added in v3.9.0

func (queue *FastIntQueue) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the queue using a supplied function, starting from some initial value.

func (*FastIntQueue) Forall

func (queue *FastIntQueue) Forall(p func(int) bool) bool

Forall verifies that all elements of FastIntQueue return true for the predicate p. The function should not alter the values via side-effects.

func (*FastIntQueue) Foreach

func (queue *FastIntQueue) Foreach(f func(int))

Foreach iterates over FastIntQueue and executes function f against each element. The function can safely alter the values via side-effects.

func (*FastIntQueue) Get

func (queue *FastIntQueue) Get(i int) int

Get gets the specified element in the queue. Panics if the index is out of range or the queue is nil.

func (*FastIntQueue) Head

func (queue *FastIntQueue) Head() int

Head gets the first element in the queue. Head is the opposite of Last. Panics if queue is empty or nil.

func (*FastIntQueue) HeadOption

func (queue *FastIntQueue) HeadOption() (int, bool)

HeadOption returns the oldest item in the queue without removing it. If the queue is nil or empty, it returns the zero value instead.

func (*FastIntQueue) IsEmpty

func (queue *FastIntQueue) IsEmpty() bool

IsEmpty returns true if the queue is empty.

func (*FastIntQueue) IsFull

func (queue *FastIntQueue) IsFull() bool

IsFull returns true if the queue is full.

func (*FastIntQueue) IsOverwriting

func (queue *FastIntQueue) IsOverwriting() bool

IsOverwriting returns true if the queue is overwriting, false if refusing.

func (*FastIntQueue) IsSequence

func (queue *FastIntQueue) IsSequence() bool

IsSequence returns true for ordered lists and queues.

func (*FastIntQueue) IsSet

func (queue *FastIntQueue) IsSet() bool

IsSet returns false for lists or queues.

func (*FastIntQueue) Last

func (queue *FastIntQueue) Last() int

Last gets the the newest item in the queue (i.e. last element pushed) without removing it. Last is the opposite of Head. Panics if queue is empty or nil.

func (*FastIntQueue) LastOption

func (queue *FastIntQueue) LastOption() (int, bool)

LastOption returns the newest item in the queue without removing it. If the queue is nil empty, it returns the zero value instead.

func (*FastIntQueue) Len

func (queue *FastIntQueue) Len() int

Len gets the current length of this queue. This is an alias for Size.

func (*FastIntQueue) Less

func (queue *FastIntQueue) Less(i, j int) bool

Less reports whether the element with index i should sort before the element with index j. The queue must have been created with a non-nil 'less' comparison function and it must not be empty.

func (*FastIntQueue) Map

func (queue *FastIntQueue) Map(f func(int) int) *FastIntQueue

Map returns a new FastIntQueue by transforming every element with function f. The resulting queue is the same size as the original queue. The original queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntQueue) MapToInt64

func (queue *FastIntQueue) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntQueue) MapToString

func (queue *FastIntQueue) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntQueue) MaxBy

func (queue *FastIntQueue) MaxBy(less func(int, int) bool) int

MaxBy returns an element of FastIntQueue containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*FastIntQueue) MinBy

func (queue *FastIntQueue) MinBy(less func(int, int) bool) int

MinBy returns an element of FastIntQueue containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*FastIntQueue) NonEmpty

func (queue *FastIntQueue) NonEmpty() bool

NonEmpty returns true if the queue is not empty.

func (*FastIntQueue) Offer

func (queue *FastIntQueue) Offer(items ...int) []int

Offer appends as many items to the end of the queue as it can. If the queue is already full, what happens depends on whether the queue is configured to overwrite. If it is, the oldest items will be overwritten. Otherwise, it will be filled to capacity and any unwritten items are returned.

If the capacity is too small for the number of items, the excess items are returned. The queue capacity is never altered.

func (*FastIntQueue) Partition

func (queue *FastIntQueue) Partition(p func(int) bool) (*FastIntQueue, *FastIntQueue)

Partition returns two new FastIntQueues whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original queue.

The original queue is not modified

func (*FastIntQueue) Pop

func (queue *FastIntQueue) Pop(n int) []int

Pop removes and returns the oldest items from the queue. If the queue is empty, it returns a nil slice. If n is larger than the current queue length, it returns all the available elements, so in this case the returned slice will be shorter than n.

func (*FastIntQueue) Pop1

func (queue *FastIntQueue) Pop1() (int, bool)

Pop1 removes and returns the oldest item from the queue. If the queue is empty, it returns the zero value instead. The boolean is true only if the element was available.

func (*FastIntQueue) Push

func (queue *FastIntQueue) Push(items ...int) *FastIntQueue

Push appends items to the end of the queue. If the queue does not have enough space, more will be allocated: how this happens depends on the overwriting mode.

When overwriting, the oldest items are overwritten with the new data; it expands the queue only if there is still not enough space.

Otherwise, the queue might be reallocated if necessary, ensuring that all the data is pushed without any older items being affected.

The modified queue is returned.

func (*FastIntQueue) Reallocate

func (queue *FastIntQueue) Reallocate(capacity int, overwrite bool) *FastIntQueue

Reallocate adjusts the allocated capacity of the queue and allows the overwriting behaviour to be changed.

If the new queue capacity is different to the current capacity, the queue is re-allocated to the new capacity. If this is less than the current number of elements, the oldest items in the queue are discarded so that the remaining data can fit in the new space available.

If the new queue capacity is the same as the current capacity, the queue is not altered except for adopting the new overwrite flag's value. Therefore this is the means to change the overwriting behaviour.

Reallocate adjusts the storage space but does not clone the underlying elements.

The queue must not be nil.

func (*FastIntQueue) Send

func (queue *FastIntQueue) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*FastIntQueue) Size

func (queue *FastIntQueue) Size() int

Size gets the number of elements currently in this queue. This is an alias for Len.

func (*FastIntQueue) Sort

func (queue *FastIntQueue) Sort()

Sort sorts the queue using the 'less' comparison function, which must not be nil. This function will panic if the collection was created with a nil 'less' function (see NewFastIntSortedQueue).

func (*FastIntQueue) Space

func (queue *FastIntQueue) Space() int

Space returns the space available in the queue.

func (*FastIntQueue) StableSort

func (queue *FastIntQueue) StableSort()

StableSort sorts the queue using the 'less' comparison function, which must not be nil. The result is stable so that repeated calls will not arbitrarily swap equal items. This function will panic if the collection was created with a nil 'less' function (see NewFastIntSortedQueue).

func (*FastIntQueue) Swap

func (queue *FastIntQueue) Swap(i, j int)

Swap swaps the elements with indexes i and j. The queue must not be empty.

func (*FastIntQueue) ToInterfaceSlice

func (queue *FastIntQueue) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the queue as a slice of arbitrary type. The queue is not altered.

func (*FastIntQueue) ToSlice

func (queue *FastIntQueue) ToSlice() []int

ToSlice returns the elements of the queue as a slice. The queue is not altered.

type FastIntSequence added in v3.9.0

type FastIntSequence interface {
	FastIntCollection

	// Head gets the first element in the sequence. Head plus Tail include the whole sequence. Head is the opposite of Last.
	Head() int

	// HeadOption gets the first element in the sequence, if possible.
	HeadOption() (int, bool)

	// Last gets the last element in the sequence. Init plus Last include the whole sequence. Last is the opposite of Head.
	Last() int

	// LastOption gets the last element in the sequence, if possible.
	LastOption() (int, bool)
}

FastIntSequence defines an interface for sequence methods on int.

type FastIntSet

type FastIntSet struct {
	// contains filtered or unexported fields
}

FastIntSet is the primary type that represents a set.

func BuildFastIntSetFromChan

func BuildFastIntSetFromChan(source <-chan int) *FastIntSet

BuildFastIntSetFromChan constructs a new FastIntSet from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertFastIntSet

func ConvertFastIntSet(values ...interface{}) (*FastIntSet, bool)

ConvertFastIntSet constructs a new set containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned set will contain all the values that were correctly converted.

func NewFastIntSet

func NewFastIntSet(values ...int) *FastIntSet

NewFastIntSet creates and returns a reference to an empty set.

func (*FastIntSet) Add

func (set *FastIntSet) Add(more ...int)

Add adds items to the current set.

func (*FastIntSet) Cardinality

func (set *FastIntSet) Cardinality() int

Cardinality returns how many items are currently in the set. This is a synonym for Size.

func (*FastIntSet) Clear

func (set *FastIntSet) Clear()

Clear the entire set. Aterwards, it will be an empty set.

func (*FastIntSet) Clone

func (set *FastIntSet) Clone() *FastIntSet

Clone returns a shallow copy of the set. It does not clone the underlying elements.

func (*FastIntSet) Contains

func (set *FastIntSet) Contains(i int) bool

Contains determines whether a given item is already in the set, returning true if so.

func (*FastIntSet) ContainsAll

func (set *FastIntSet) ContainsAll(i ...int) bool

ContainsAll determines whether the given items are all in the set, returning true if so.

func (*FastIntSet) CountBy

func (set *FastIntSet) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of FastIntSet that return true for the predicate p.

func (*FastIntSet) Difference

func (set *FastIntSet) Difference(other *FastIntSet) *FastIntSet

Difference returns a new set with items in the current set but not in the other set

func (*FastIntSet) Equals

func (set *FastIntSet) Equals(other *FastIntSet) bool

Equals determines whether two sets are equal to each other, returning true if so. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.

func (*FastIntSet) Exists

func (set *FastIntSet) Exists(p func(int) bool) bool

Exists applies a predicate p to every element in the set. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*FastIntSet) Filter

func (set *FastIntSet) Filter(p func(int) bool) *FastIntSet

Filter returns a new FastIntSet whose elements return true for the predicate p.

The original set is not modified

func (*FastIntSet) Find

func (set *FastIntSet) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for the predicate p. If there are many matches one is arbtrarily chosen. False is returned if none match.

func (*FastIntSet) FlatMap

func (set *FastIntSet) FlatMap(f func(int) []int) *FastIntSet

FlatMap returns a new FastIntSet by transforming every element with a function f that returns zero or more items in a slice. The resulting set may have a different size to the original set. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntSet) FlatMapToInt64

func (set *FastIntSet) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntSet) FlatMapToString

func (set *FastIntSet) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntSet) Fold added in v3.9.0

func (set *FastIntSet) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the set using a supplied function, starting from some initial value.

func (*FastIntSet) Forall

func (set *FastIntSet) Forall(p func(int) bool) bool

Forall applies a predicate function p to every element in the set. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*FastIntSet) Foreach

func (set *FastIntSet) Foreach(f func(int))

Foreach iterates over the set and executes the function f against each element. The function can safely alter the values via side-effects.

func (*FastIntSet) Intersect

func (set *FastIntSet) Intersect(other *FastIntSet) *FastIntSet

Intersect returns a new set with items that exist only in both sets.

func (*FastIntSet) IsEmpty

func (set *FastIntSet) IsEmpty() bool

IsEmpty returns true if the set is empty.

func (*FastIntSet) IsSequence

func (set *FastIntSet) IsSequence() bool

IsSequence returns true for lists and queues.

func (*FastIntSet) IsSet

func (set *FastIntSet) IsSet() bool

IsSet returns false for lists or queues.

func (*FastIntSet) IsSubset

func (set *FastIntSet) IsSubset(other *FastIntSet) bool

IsSubset determines whether every item in the other set is in this set, returning true if so.

func (*FastIntSet) IsSuperset

func (set *FastIntSet) IsSuperset(other *FastIntSet) bool

IsSuperset determines whether every item of this set is in the other set, returning true if so.

func (*FastIntSet) Map

func (set *FastIntSet) Map(f func(int) int) *FastIntSet

Map returns a new FastIntSet by transforming every element with a function f. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntSet) MapToInt64

func (set *FastIntSet) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntSet) MapToString

func (set *FastIntSet) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastIntSet) MarshalJSON

func (set *FastIntSet) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this set type.

func (*FastIntSet) Max

func (set *FastIntSet) Max() (result int)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (*FastIntSet) MaxBy

func (set *FastIntSet) MaxBy(less func(int, int) bool) int

MaxBy returns an element of FastIntSet containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*FastIntSet) Min

func (set *FastIntSet) Min() int

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (*FastIntSet) MinBy

func (set *FastIntSet) MinBy(less func(int, int) bool) int

MinBy returns an element of FastIntSet containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*FastIntSet) MkString

func (set *FastIntSet) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (*FastIntSet) MkString3

func (set *FastIntSet) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (*FastIntSet) NonEmpty

func (set *FastIntSet) NonEmpty() bool

NonEmpty returns true if the set is not empty.

func (*FastIntSet) Partition

func (set *FastIntSet) Partition(p func(int) bool) (*FastIntSet, *FastIntSet)

Partition returns two new FastIntSets whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original set is not modified

func (*FastIntSet) Remove

func (set *FastIntSet) Remove(i int)

Remove a single item from the set.

func (*FastIntSet) Send

func (set *FastIntSet) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed

func (*FastIntSet) Size

func (set *FastIntSet) Size() int

Size returns how many items are currently in the set. This is a synonym for Cardinality.

func (*FastIntSet) String

func (set *FastIntSet) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (*FastIntSet) StringList

func (set *FastIntSet) StringList() []string

StringSet gets a list of strings that depicts all the elements.

func (*FastIntSet) StringMap

func (set *FastIntSet) StringMap() map[string]bool

StringMap renders the set as a map of strings. The value of each item in the set becomes stringified as a key in the resulting map.

func (*FastIntSet) Sum

func (set *FastIntSet) Sum() int

Sum returns the sum of all the elements in the set.

func (*FastIntSet) SymmetricDifference

func (set *FastIntSet) SymmetricDifference(other *FastIntSet) *FastIntSet

SymmetricDifference returns a new set with items in the current set or the other set but not in both.

func (*FastIntSet) ToInterfaceSlice

func (set *FastIntSet) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current set as a slice of arbitrary type.

func (*FastIntSet) ToSet

func (set *FastIntSet) ToSet() *FastIntSet

ToSet returns the set; this is an identity operation in this case.

func (*FastIntSet) ToSlice

func (set *FastIntSet) ToSlice() []int

ToSlice returns the elements of the current set as a slice.

func (*FastIntSet) Union

func (set *FastIntSet) Union(other *FastIntSet) *FastIntSet

Union returns a new set with all items in both sets.

func (*FastIntSet) UnmarshalJSON

func (set *FastIntSet) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this set type.

type FastIntSizer

type FastIntSizer interface {
	// IsEmpty tests whether FastIntCollection is empty.
	IsEmpty() bool

	// NonEmpty tests whether FastIntCollection is empty.
	NonEmpty() bool

	// Size returns the number of items in the collection - an alias of Len().
	Size() int
}

FastIntSizer defines an interface for sizing methods on int collections.

type FastStringAppleMap

type FastStringAppleMap struct {
	// contains filtered or unexported fields
}

FastStringAppleMap is the primary type that represents a thread-safe map

func NewFastStringAppleMap

func NewFastStringAppleMap(kv ...FastStringAppleTuple) *FastStringAppleMap

NewFastStringAppleMap creates and returns a reference to a map, optionally containing some items.

func NewFastStringAppleMap1

func NewFastStringAppleMap1(k string, v Apple) *FastStringAppleMap

NewFastStringAppleMap1 creates and returns a reference to a map containing one item.

func (*FastStringAppleMap) Clear

func (mm *FastStringAppleMap) Clear()

Clear clears the entire map.

func (*FastStringAppleMap) Clone

Clone returns a shallow copy of the map. It does not clone the underlying elements.

func (*FastStringAppleMap) ContainsAllKeys

func (mm *FastStringAppleMap) ContainsAllKeys(kk ...string) bool

ContainsAllKeys determines if the given items are all in the map.

func (*FastStringAppleMap) ContainsKey

func (mm *FastStringAppleMap) ContainsKey(k string) bool

ContainsKey determines if a given item is already in the map.

func (*FastStringAppleMap) DropWhere

func (mm *FastStringAppleMap) DropWhere(fn func(string, Apple) bool) FastStringAppleTuples

DropWhere applies a predicate function to every element in the map. If the function returns true, the element is dropped from the map. This is similar to Filter except that the map is modified.

func (*FastStringAppleMap) Exists

func (mm *FastStringAppleMap) Exists(p func(string, Apple) bool) bool

Exists applies the predicate p to every element in the map. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*FastStringAppleMap) Filter

func (mm *FastStringAppleMap) Filter(p func(string, Apple) bool) *FastStringAppleMap

Filter applies the predicate p to every element in the map and returns a copied map containing only the elements for which the predicate returned true. The original map is not modified.

func (*FastStringAppleMap) Find

Find returns the first Apple that returns true for the predicate p. False is returned if none match. The original map is not modified.

func (*FastStringAppleMap) FlatMap

FlatMap returns a new FastAppleMap by transforming every element with the function f that returns zero or more items in a slice. The resulting map may have a different size to the original map. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastStringAppleMap) Forall

func (mm *FastStringAppleMap) Forall(p func(string, Apple) bool) bool

Forall applies the predicate p to every element in the map. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*FastStringAppleMap) Foreach

func (mm *FastStringAppleMap) Foreach(f func(string, Apple))

Foreach applies the function f to every element in the map. The function can safely alter the values via side-effects.

func (*FastStringAppleMap) Get

func (mm *FastStringAppleMap) Get(k string) (Apple, bool)

Get returns one of the items in the map, if present.

func (*FastStringAppleMap) GobDecode

func (mm *FastStringAppleMap) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this map type. You must register Apple with the 'gob' package before this method is used.

func (*FastStringAppleMap) GobEncode

func (mm *FastStringAppleMap) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this map type. You must register Apple with the 'gob' package before this method is used.

func (*FastStringAppleMap) IsEmpty

func (mm *FastStringAppleMap) IsEmpty() bool

IsEmpty returns true if the map is empty.

func (*FastStringAppleMap) Keys

func (mm *FastStringAppleMap) Keys() []string

Keys returns the keys of the current map as a slice.

func (*FastStringAppleMap) Map

Map returns a new FastAppleMap by transforming every element with the function f. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastStringAppleMap) NonEmpty

func (mm *FastStringAppleMap) NonEmpty() bool

NonEmpty returns true if the map is not empty.

func (*FastStringAppleMap) OrderedSlice added in v3.6.0

func (mm *FastStringAppleMap) OrderedSlice(keys []string) FastStringAppleTuples

OrderedSlice returns the key/value pairs as a slice in the order specified by keys.

func (*FastStringAppleMap) Partition

func (mm *FastStringAppleMap) Partition(p func(string, Apple) bool) (matching *FastStringAppleMap, others *FastStringAppleMap)

Partition applies the predicate p to every element in the map. It divides the map into two copied maps, the first containing all the elements for which the predicate returned true, and the second containing all the others. The original map is not modified.

func (*FastStringAppleMap) Pop

func (mm *FastStringAppleMap) Pop(k string) (Apple, bool)

Pop removes a single item from the map, returning the value present prior to removal. The boolean result is true only if the key had been present.

func (*FastStringAppleMap) Put

func (mm *FastStringAppleMap) Put(k string, v Apple) bool

Put adds an item to the current map, replacing any prior value.

func (*FastStringAppleMap) Remove

func (mm *FastStringAppleMap) Remove(k string)

Remove a single item from the map.

func (*FastStringAppleMap) Size

func (mm *FastStringAppleMap) Size() int

Size returns how many items are currently in the map. This is a synonym for Len.

func (*FastStringAppleMap) ToSlice

ToSlice returns the key/value pairs as a slice

func (*FastStringAppleMap) Values

func (mm *FastStringAppleMap) Values() []Apple

Values returns the values of the current map as a slice.

type FastStringAppleTuple

type FastStringAppleTuple struct {
	Key string
	Val Apple
}

FastStringAppleTuple represents a key/value pair.

type FastStringAppleTuples

type FastStringAppleTuples []FastStringAppleTuple

FastStringAppleTuples can be used as a builder for unmodifiable maps.

func FastStringAppleZip

func FastStringAppleZip(keys ...string) FastStringAppleTuples

FastStringAppleZip is used with the Values method to zip (i.e. interleave) a slice of keys with a slice of values. These can then be passed in to the NewFastStringAppleMap constructor function.

func (FastStringAppleTuples) Append1

Append1 adds one item.

func (FastStringAppleTuples) Append2

Append2 adds two items.

func (FastStringAppleTuples) Append3

func (ts FastStringAppleTuples) Append3(k1 string, v1 Apple, k2 string, v2 Apple, k3 string, v3 Apple) FastStringAppleTuples

Append3 adds three items.

func (FastStringAppleTuples) ToMap added in v3.6.0

ToMap converts the tuples to a map.

func (FastStringAppleTuples) Values

func (ts FastStringAppleTuples) Values(values ...Apple) FastStringAppleTuples

Values sets the values in a tuple slice. Use this with FastStringAppleZip.

type FastStringList added in v3.5.4

type FastStringList struct {
	// contains filtered or unexported fields
}

FastStringList contains a slice of type string. It encapsulates the slice and provides methods to access or mutate it.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildFastStringListFromChan added in v3.5.4

func BuildFastStringListFromChan(source <-chan string) *FastStringList

BuildFastStringListFromChan constructs a new FastStringList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertFastStringList added in v3.5.4

func ConvertFastStringList(values ...interface{}) (*FastStringList, bool)

ConvertFastStringList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted.

func MakeFastStringList added in v3.5.4

func MakeFastStringList(length, capacity int) *FastStringList

MakeFastStringList makes an empty list with both length and capacity initialised.

func NewFastStringList added in v3.5.4

func NewFastStringList(values ...string) *FastStringList

NewFastStringList constructs a new list containing the supplied values, if any.

func (*FastStringList) Add added in v3.5.4

func (list *FastStringList) Add(more ...string)

Add adds items to the current list. This is a synonym for Append.

func (*FastStringList) Append added in v3.5.4

func (list *FastStringList) Append(more ...string) *FastStringList

Append adds items to the current list. If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned.

func (*FastStringList) Clear added in v3.5.4

func (list *FastStringList) Clear()

Clear the entire collection.

func (*FastStringList) Clone added in v3.5.4

func (list *FastStringList) Clone() *FastStringList

Clone returns a shallow copy of the list. It does not clone the underlying elements.

func (*FastStringList) Contains added in v3.5.4

func (list *FastStringList) Contains(v string) bool

Contains determines whether a given item is already in the list, returning true if so.

func (*FastStringList) ContainsAll added in v3.5.4

func (list *FastStringList) ContainsAll(i ...string) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (*FastStringList) CountBy added in v3.5.4

func (list *FastStringList) CountBy(p func(string) bool) (result int)

CountBy gives the number elements of FastStringList that return true for the predicate p.

func (*FastStringList) DistinctBy added in v3.5.4

func (list *FastStringList) DistinctBy(equal func(string, string) bool) *FastStringList

DistinctBy returns a new FastStringList whose elements are unique, where equality is defined by the equal function.

func (*FastStringList) DoDeleteAt added in v3.5.4

func (list *FastStringList) DoDeleteAt(index, n int) *FastStringList

DoDeleteAt modifies a FastStringList by deleting n elements from a given index.

The list is modified and the modified list is returned. Panics if the index is out of range or n is large enough to take the index out of range.

func (*FastStringList) DoDeleteFirst added in v3.5.4

func (list *FastStringList) DoDeleteFirst(n int) *FastStringList

DoDeleteFirst modifies a FastStringList by deleting n elements from the start of the list.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if n is large enough to take the index out of range.

func (*FastStringList) DoDeleteLast added in v3.5.4

func (list *FastStringList) DoDeleteLast(n int) *FastStringList

DoDeleteLast modifies a FastStringList by deleting n elements from the end of the list.

The list is modified and the modified list is returned. Panics if n is large enough to take the index out of range.

func (*FastStringList) DoInsertAt added in v3.5.4

func (list *FastStringList) DoInsertAt(index int, more ...string) *FastStringList

DoInsertAt modifies a FastStringList by inserting elements at a given index. This is a generalised version of Append.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if the index is out of range.

func (*FastStringList) DoKeepWhere added in v3.5.4

func (list *FastStringList) DoKeepWhere(p func(string) bool) *FastStringList

DoKeepWhere modifies a FastStringList by retaining only those elements that match the predicate p. This is very similar to Filter but alters the list in place.

The list is modified and the modified list is returned.

func (*FastStringList) DoReverse added in v3.5.4

func (list *FastStringList) DoReverse() *FastStringList

DoReverse alters a FastStringList with all elements in the reverse order. Unlike Reverse, it does not allocate new memory.

The list is modified and the modified list is returned.

func (*FastStringList) DoShuffle added in v3.5.4

func (list *FastStringList) DoShuffle() *FastStringList

DoShuffle returns a shuffled FastStringList, using a version of the Fisher-Yates shuffle.

The list is modified and the modified list is returned.

func (*FastStringList) Drop added in v3.5.4

func (list *FastStringList) Drop(n int) *FastStringList

Drop returns a slice of FastStringList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*FastStringList) DropLast added in v3.5.4

func (list *FastStringList) DropLast(n int) *FastStringList

DropLast returns a slice of FastStringList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*FastStringList) DropWhile added in v3.5.4

func (list *FastStringList) DropWhile(p func(string) bool) *FastStringList

DropWhile returns a new FastStringList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

The original list is not modified.

func (*FastStringList) Equals added in v3.5.4

func (list *FastStringList) Equals(other *FastStringList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal. Nil lists are considered to be empty.

func (*FastStringList) Exists added in v3.5.4

func (list *FastStringList) Exists(p func(string) bool) bool

Exists verifies that one or more elements of FastStringList return true for the predicate p.

func (*FastStringList) Filter added in v3.5.4

func (list *FastStringList) Filter(p func(string) bool) *FastStringList

Filter returns a new FastStringList whose elements return true for predicate p.

The original list is not modified. See also DoKeepWhere (which does modify the original list).

func (*FastStringList) Find added in v3.5.4

func (list *FastStringList) Find(p func(string) bool) (string, bool)

Find returns the first string that returns true for predicate p. False is returned if none match.

func (*FastStringList) FlatMap added in v3.5.4

func (list *FastStringList) FlatMap(f func(string) []string) *FastStringList

FlatMap returns a new FastStringList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastStringList) FlatMapToInt added in v3.5.4

func (list *FastStringList) FlatMapToInt(f func(string) []int) []int

FlatMapToInt returns a new []int by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastStringList) Fold added in v3.9.0

func (list *FastStringList) Fold(initial string, fn func(string, string) string) string

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (*FastStringList) Forall added in v3.5.4

func (list *FastStringList) Forall(p func(string) bool) bool

Forall verifies that all elements of FastStringList return true for the predicate p.

func (*FastStringList) Foreach added in v3.5.4

func (list *FastStringList) Foreach(f func(string))

Foreach iterates over FastStringList and executes function f against each element. The function can safely alter the values via side-effects.

func (*FastStringList) Get added in v3.5.4

func (list *FastStringList) Get(i int) string

Get gets the specified element in the list. Panics if the index is out of range or the list is nil.

func (*FastStringList) Head added in v3.5.4

func (list *FastStringList) Head() string

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (*FastStringList) HeadOption added in v3.5.4

func (list *FastStringList) HeadOption() (string, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (*FastStringList) IndexWhere added in v3.5.4

func (list *FastStringList) IndexWhere(p func(string) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (*FastStringList) IndexWhere2 added in v3.5.4

func (list *FastStringList) IndexWhere2(p func(string) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (*FastStringList) Init added in v3.5.4

func (list *FastStringList) Init() *FastStringList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (*FastStringList) IsEmpty added in v3.5.4

func (list *FastStringList) IsEmpty() bool

IsEmpty tests whether FastStringList is empty.

func (*FastStringList) IsSequence added in v3.5.4

func (list *FastStringList) IsSequence() bool

IsSequence returns true for lists and queues.

func (*FastStringList) IsSet added in v3.5.4

func (list *FastStringList) IsSet() bool

IsSet returns false for lists or queues.

func (*FastStringList) Last added in v3.5.4

func (list *FastStringList) Last() string

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (*FastStringList) LastIndexWhere added in v3.5.4

func (list *FastStringList) LastIndexWhere(p func(string) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (*FastStringList) LastIndexWhere2 added in v3.5.4

func (list *FastStringList) LastIndexWhere2(p func(string) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (*FastStringList) LastOption added in v3.5.4

func (list *FastStringList) LastOption() (string, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (*FastStringList) Len added in v3.5.4

func (list *FastStringList) Len() int

Len returns the number of items in the list - an alias of Size(). This is one of the three methods in the standard sort.Interface.

func (*FastStringList) Map added in v3.5.4

func (list *FastStringList) Map(f func(string) string) *FastStringList

Map returns a new FastStringList by transforming every element with function f. The resulting list is the same size as the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*FastStringList) MapToInt added in v3.5.4

func (list *FastStringList) MapToInt(f func(string) int) []int

MapToInt returns a new []int by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (FastStringList) MarshalJSON added in v3.5.4

func (list FastStringList) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this list type.

func (*FastStringList) Max added in v3.5.4

func (list *FastStringList) Max() (result string)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (*FastStringList) MaxBy added in v3.5.4

func (list *FastStringList) MaxBy(less func(string, string) bool) string

MaxBy returns an element of FastStringList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*FastStringList) Min added in v3.5.4

func (list *FastStringList) Min() string

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (*FastStringList) MinBy added in v3.5.4

func (list *FastStringList) MinBy(less func(string, string) bool) string

MinBy returns an element of FastStringList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*FastStringList) MkString added in v3.5.4

func (list *FastStringList) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (*FastStringList) MkString3 added in v3.5.4

func (list *FastStringList) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (*FastStringList) NonEmpty added in v3.5.4

func (list *FastStringList) NonEmpty() bool

NonEmpty tests whether FastStringList is empty.

func (*FastStringList) Partition added in v3.5.4

func (list *FastStringList) Partition(p func(string) bool) (*FastStringList, *FastStringList)

Partition returns two new FastStringLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original list is not modified

func (*FastStringList) Reverse added in v3.5.4

func (list *FastStringList) Reverse() *FastStringList

Reverse returns a copy of FastStringList with all elements in the reverse order.

The original list is not modified.

func (*FastStringList) Send added in v3.5.4

func (list *FastStringList) Send() <-chan string

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*FastStringList) Shuffle added in v3.5.4

func (list *FastStringList) Shuffle() *FastStringList

Shuffle returns a shuffled copy of FastStringList, using a version of the Fisher-Yates shuffle.

The original list is not modified.

func (*FastStringList) Size added in v3.5.4

func (list *FastStringList) Size() int

Size returns the number of items in the list - an alias of Len().

func (*FastStringList) SortBy added in v3.5.4

func (list *FastStringList) SortBy(less func(i, j string) bool) *FastStringList

SortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned.

func (*FastStringList) Sorted added in v3.5.4

func (list *FastStringList) Sorted() *FastStringList

Sorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (*FastStringList) StableSortBy added in v3.5.4

func (list *FastStringList) StableSortBy(less func(i, j string) bool) *FastStringList

StableSortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned. The algorithm keeps the original order of equal elements.

func (*FastStringList) StableSorted added in v3.5.4

func (list *FastStringList) StableSorted() *FastStringList

StableSorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (*FastStringList) String added in v3.5.4

func (list *FastStringList) String() string

String implements the Stringer interface to render the list as a comma-separated string enclosed in square brackets.

func (*FastStringList) StringList added in v3.5.4

func (list *FastStringList) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (*FastStringList) Swap added in v3.5.4

func (list *FastStringList) Swap(i, j int)

Swap exchanges two elements, which is necessary during sorting etc. This is one of the three methods in the standard sort.Interface.

func (*FastStringList) Tail added in v3.5.4

func (list *FastStringList) Tail() *FastStringList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (*FastStringList) Take added in v3.5.4

func (list *FastStringList) Take(n int) *FastStringList

Take returns a slice of FastStringList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*FastStringList) TakeLast added in v3.5.4

func (list *FastStringList) TakeLast(n int) *FastStringList

TakeLast returns a slice of FastStringList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

The original list is not modified.

func (*FastStringList) TakeWhile added in v3.5.4

func (list *FastStringList) TakeWhile(p func(string) bool) *FastStringList

TakeWhile returns a new FastStringList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

The original list is not modified.

func (*FastStringList) ToInterfaceSlice added in v3.5.4

func (list *FastStringList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (*FastStringList) ToList added in v3.5.4

func (list *FastStringList) ToList() *FastStringList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (*FastStringList) ToSlice added in v3.5.4

func (list *FastStringList) ToSlice() []string

ToSlice returns the elements of the current list as a slice.

func (*FastStringList) UnmarshalJSON added in v3.5.4

func (list *FastStringList) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this list type.

type ImmutableAppleCollection

type ImmutableAppleCollection interface {
	ImmutableAppleSizer

	// IsSequence returns true for lists and queues.
	IsSequence() bool

	// IsSet returns false for lists and queues.
	IsSet() bool

	// ToSlice returns a shallow copy as a plain slice.
	ToSlice() []Apple

	// ToInterfaceSlice returns a shallow copy as a slice of arbitrary type.
	ToInterfaceSlice() []interface{}

	// Exists verifies that one or more elements of ImmutableAppleCollection return true for the predicate p.
	Exists(p func(Apple) bool) bool

	// Forall verifies that all elements of ImmutableAppleCollection return true for the predicate p.
	Forall(p func(Apple) bool) bool

	// Foreach iterates over ImmutableAppleCollection and executes the function f against each element.
	Foreach(f func(Apple))

	// Find returns the first Apple that returns true for the predicate p.
	// False is returned if none match.
	Find(p func(Apple) bool) (Apple, bool)

	// MapToString returns a new []string by transforming every element with function f.
	// The resulting slice is the same size as the collection. The collection is not modified.
	MapToString(f func(Apple) string) []string

	// FlatMapString returns a new []string by transforming every element with function f
	// that returns zero or more items in a slice. The resulting slice may have a different size to the
	// collection. The collection is not modified.
	FlatMapToString(f func(Apple) []string) []string

	// Send returns a channel that will send all the elements in order. Can be used with the plumbing code, for example.
	// A goroutine is created to send the elements; this only terminates when all the elements have been consumed
	Send() <-chan Apple

	// CountBy gives the number elements of ImmutableAppleCollection that return true for the predicate p.
	CountBy(p func(Apple) bool) int

	// MinBy returns an element of ImmutableAppleCollection containing the minimum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such
	// element is returned. Panics if there are no elements.
	MinBy(less func(Apple, Apple) bool) Apple

	// MaxBy returns an element of ImmutableAppleCollection containing the maximum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such
	// element is returned. Panics if there are no elements.
	MaxBy(less func(Apple, Apple) bool) Apple

	// Fold aggregates all the values in the collection using a supplied function, starting from some initial value.
	Fold(initial Apple, fn func(Apple, Apple) Apple) Apple
}

ImmutableAppleCollection defines an interface for common collection methods on Apple.

type ImmutableAppleList

type ImmutableAppleList struct {
	// contains filtered or unexported fields
}

ImmutableAppleList contains a slice of type Apple. It is designed to be immutable - ideal for race-free reference lists etc. It encapsulates the slice and provides methods to access it. Importantly, *none of its methods ever mutate a list*; they merely return new lists where required.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildImmutableAppleListFromChan

func BuildImmutableAppleListFromChan(source <-chan Apple) *ImmutableAppleList

BuildImmutableAppleListFromChan constructs a new ImmutableAppleList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertImmutableAppleList

func ConvertImmutableAppleList(values ...interface{}) (*ImmutableAppleList, bool)

ConvertImmutableAppleList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted.

func NewImmutableAppleList

func NewImmutableAppleList(values ...Apple) *ImmutableAppleList

NewImmutableAppleList constructs a new list containing the supplied values, if any.

func (*ImmutableAppleList) Append

func (list *ImmutableAppleList) Append(more ...Apple) *ImmutableAppleList

Append returns a new list with all original items and all in `more`; they retain their order. The original list is not altered.

func (*ImmutableAppleList) Clone

func (list *ImmutableAppleList) Clone() *ImmutableAppleList

Clone returns the same list, which is immutable.

func (*ImmutableAppleList) CountBy

func (list *ImmutableAppleList) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of ImmutableAppleList that return true for the predicate p.

func (*ImmutableAppleList) DistinctBy

func (list *ImmutableAppleList) DistinctBy(equal func(Apple, Apple) bool) *ImmutableAppleList

DistinctBy returns a new ImmutableAppleList whose elements are unique, where equality is defined by the equal function.

func (*ImmutableAppleList) Drop

func (list *ImmutableAppleList) Drop(n int) *ImmutableAppleList

Drop returns a slice of ImmutableAppleList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

func (*ImmutableAppleList) DropLast

func (list *ImmutableAppleList) DropLast(n int) *ImmutableAppleList

DropLast returns a slice of ImmutableAppleList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

func (*ImmutableAppleList) DropWhile

func (list *ImmutableAppleList) DropWhile(p func(Apple) bool) *ImmutableAppleList

DropWhile returns a new ImmutableAppleList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

func (*ImmutableAppleList) Exists

func (list *ImmutableAppleList) Exists(p func(Apple) bool) bool

Exists verifies that one or more elements of ImmutableAppleList return true for the predicate p.

func (*ImmutableAppleList) Filter

func (list *ImmutableAppleList) Filter(p func(Apple) bool) *ImmutableAppleList

Filter returns a new ImmutableAppleList whose elements return true for predicate p.

func (*ImmutableAppleList) Find

func (list *ImmutableAppleList) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for predicate p. False is returned if none match.

func (*ImmutableAppleList) FlatMap

func (list *ImmutableAppleList) FlatMap(f func(Apple) []Apple) *ImmutableAppleList

FlatMap returns a new ImmutableAppleList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableAppleList) FlatMapToString added in v3.5.0

func (list *ImmutableAppleList) FlatMapToString(f func(Apple) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableAppleList) Fold added in v3.9.0

func (list *ImmutableAppleList) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (*ImmutableAppleList) Forall

func (list *ImmutableAppleList) Forall(p func(Apple) bool) bool

Forall verifies that all elements of ImmutableAppleList return true for the predicate p.

func (*ImmutableAppleList) Foreach

func (list *ImmutableAppleList) Foreach(f func(Apple))

Foreach iterates over ImmutableAppleList and executes function f against each element. The function receives copies that do not alter the list elements when they are changed.

func (*ImmutableAppleList) Get

func (list *ImmutableAppleList) Get(i int) Apple

Get gets the specified element in the list. Panics if the index is out of range or the list is nil.

func (*ImmutableAppleList) GobDecode

func (list *ImmutableAppleList) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this list type. You must register Apple with the 'gob' package before this method is used.

func (ImmutableAppleList) GobEncode

func (list ImmutableAppleList) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this list type. You must register Apple with the 'gob' package before this method is used.

func (*ImmutableAppleList) Head

func (list *ImmutableAppleList) Head() Apple

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (*ImmutableAppleList) HeadOption

func (list *ImmutableAppleList) HeadOption() (Apple, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (*ImmutableAppleList) IndexWhere

func (list *ImmutableAppleList) IndexWhere(p func(Apple) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (*ImmutableAppleList) IndexWhere2

func (list *ImmutableAppleList) IndexWhere2(p func(Apple) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (*ImmutableAppleList) Init

func (list *ImmutableAppleList) Init() *ImmutableAppleList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (*ImmutableAppleList) IsEmpty

func (list *ImmutableAppleList) IsEmpty() bool

IsEmpty tests whether ImmutableAppleList is empty.

func (*ImmutableAppleList) IsSequence

func (list *ImmutableAppleList) IsSequence() bool

IsSequence returns true for lists and queues.

func (*ImmutableAppleList) IsSet

func (list *ImmutableAppleList) IsSet() bool

IsSet returns false for lists or queues.

func (*ImmutableAppleList) Last

func (list *ImmutableAppleList) Last() Apple

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (*ImmutableAppleList) LastIndexWhere

func (list *ImmutableAppleList) LastIndexWhere(p func(Apple) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (*ImmutableAppleList) LastIndexWhere2

func (list *ImmutableAppleList) LastIndexWhere2(p func(Apple) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (*ImmutableAppleList) LastOption

func (list *ImmutableAppleList) LastOption() (Apple, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (*ImmutableAppleList) Len

func (list *ImmutableAppleList) Len() int

Len returns the number of items in the list - an alias of Size().

func (*ImmutableAppleList) Map

func (list *ImmutableAppleList) Map(f func(Apple) Apple) *ImmutableAppleList

Map returns a new ImmutableAppleList by transforming every element with function f. The resulting list is the same size as the original list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableAppleList) MapToString added in v3.5.0

func (list *ImmutableAppleList) MapToString(f func(Apple) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableAppleList) MaxBy

func (list *ImmutableAppleList) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of ImmutableAppleList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*ImmutableAppleList) MinBy

func (list *ImmutableAppleList) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of ImmutableAppleList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*ImmutableAppleList) NonEmpty

func (list *ImmutableAppleList) NonEmpty() bool

NonEmpty tests whether ImmutableAppleList is empty.

func (*ImmutableAppleList) Partition

func (list *ImmutableAppleList) Partition(p func(Apple) bool) (*ImmutableAppleList, *ImmutableAppleList)

Partition returns two new AppleLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

func (*ImmutableAppleList) Reverse

func (list *ImmutableAppleList) Reverse() *ImmutableAppleList

Reverse returns a copy of ImmutableAppleList with all elements in the reverse order.

func (*ImmutableAppleList) Send

func (list *ImmutableAppleList) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*ImmutableAppleList) Shuffle

func (list *ImmutableAppleList) Shuffle() *ImmutableAppleList

Shuffle returns a shuffled copy of ImmutableAppleList, using a version of the Fisher-Yates shuffle.

func (*ImmutableAppleList) Size

func (list *ImmutableAppleList) Size() int

Size returns the number of items in the list - an alias of Len().

func (*ImmutableAppleList) SortBy

func (list *ImmutableAppleList) SortBy(less func(i, j Apple) bool) *ImmutableAppleList

SortBy returns a new list in which the elements are sorted by a specified ordering.

func (*ImmutableAppleList) StableSortBy

func (list *ImmutableAppleList) StableSortBy(less func(i, j Apple) bool) *ImmutableAppleList

StableSortBy returns a new list in which the elements are sorted by a specified ordering. The algorithm keeps the original order of equal elements.

func (*ImmutableAppleList) Tail

func (list *ImmutableAppleList) Tail() *ImmutableAppleList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (*ImmutableAppleList) Take

func (list *ImmutableAppleList) Take(n int) *ImmutableAppleList

Take returns a slice of ImmutableAppleList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*ImmutableAppleList) TakeLast

func (list *ImmutableAppleList) TakeLast(n int) *ImmutableAppleList

TakeLast returns a slice of ImmutableAppleList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*ImmutableAppleList) TakeWhile

func (list *ImmutableAppleList) TakeWhile(p func(Apple) bool) *ImmutableAppleList

TakeWhile returns a new ImmutableAppleList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

func (*ImmutableAppleList) ToInterfaceSlice

func (list *ImmutableAppleList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (*ImmutableAppleList) ToList

func (list *ImmutableAppleList) ToList() *ImmutableAppleList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (*ImmutableAppleList) ToSlice

func (list *ImmutableAppleList) ToSlice() []Apple

ToSlice returns the elements of the current list as a slice.

type ImmutableAppleSequence added in v3.9.0

type ImmutableAppleSequence interface {
	ImmutableAppleCollection

	// Head gets the first element in the sequence. Head plus Tail include the whole sequence. Head is the opposite of Last.
	Head() Apple

	// HeadOption gets the first element in the sequence, if possible.
	HeadOption() (Apple, bool)

	// Last gets the last element in the sequence. Init plus Last include the whole sequence. Last is the opposite of Head.
	Last() Apple

	// LastOption gets the last element in the sequence, if possible.
	LastOption() (Apple, bool)
}

ImmutableAppleSequence defines an interface for sequence methods on Apple.

type ImmutableAppleSet

type ImmutableAppleSet struct {
	// contains filtered or unexported fields
}

ImmutableAppleSet is the primary type that represents a set.

func BuildImmutableAppleSetFromChan

func BuildImmutableAppleSetFromChan(source <-chan Apple) *ImmutableAppleSet

BuildImmutableAppleSetFromChan constructs a new ImmutableAppleSet from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertImmutableAppleSet

func ConvertImmutableAppleSet(values ...interface{}) (*ImmutableAppleSet, bool)

ConvertImmutableAppleSet constructs a new set containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned set will contain all the values that were correctly converted.

func NewImmutableAppleSet

func NewImmutableAppleSet(values ...Apple) *ImmutableAppleSet

NewImmutableAppleSet creates and returns a reference to an empty set.

func (*ImmutableAppleSet) Add

func (set *ImmutableAppleSet) Add(more ...Apple) *ImmutableAppleSet

Add returns a new set with all original items and all in `more`. The original set is not altered.

func (*ImmutableAppleSet) Cardinality

func (set *ImmutableAppleSet) Cardinality() int

Cardinality returns how many items are currently in the set. This is a synonym for Size.

func (*ImmutableAppleSet) Clone

func (set *ImmutableAppleSet) Clone() *ImmutableAppleSet

Clone returns the same set, which is immutable.

func (*ImmutableAppleSet) Contains

func (set *ImmutableAppleSet) Contains(i Apple) bool

Contains determines whether a given item is already in the set, returning true if so.

func (*ImmutableAppleSet) ContainsAll

func (set *ImmutableAppleSet) ContainsAll(i ...Apple) bool

ContainsAll determines whether a given item is already in the set, returning true if so.

func (*ImmutableAppleSet) CountBy

func (set *ImmutableAppleSet) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of ImmutableAppleSet that return true for the predicate p.

func (*ImmutableAppleSet) Difference

func (set *ImmutableAppleSet) Difference(other *ImmutableAppleSet) *ImmutableAppleSet

Difference returns a new set with items in the current set but not in the other set

func (*ImmutableAppleSet) Equals

func (set *ImmutableAppleSet) Equals(other *ImmutableAppleSet) bool

Equals determines whether two sets are equal to each other, returning true if so. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.

func (*ImmutableAppleSet) Exists

func (set *ImmutableAppleSet) Exists(p func(Apple) bool) bool

Exists applies a predicate p to every element in the set. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*ImmutableAppleSet) Filter

func (set *ImmutableAppleSet) Filter(p func(Apple) bool) *ImmutableAppleSet

Filter returns a new ImmutableAppleSet whose elements return true for the predicate p.

func (*ImmutableAppleSet) Find

func (set *ImmutableAppleSet) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for the predicate p. If there are many matches one is arbtrarily chosen. False is returned if none match.

func (*ImmutableAppleSet) FlatMap

func (set *ImmutableAppleSet) FlatMap(f func(Apple) []Apple) *ImmutableAppleSet

FlatMap returns a new ImmutableAppleSet by transforming every element with a function f that returns zero or more items in a slice. The resulting set may have a different size to the original set.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableAppleSet) FlatMapToString added in v3.5.0

func (set *ImmutableAppleSet) FlatMapToString(f func(Apple) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableAppleSet) Fold added in v3.9.0

func (set *ImmutableAppleSet) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the set using a supplied function, starting from some initial value.

func (*ImmutableAppleSet) Forall

func (set *ImmutableAppleSet) Forall(p func(Apple) bool) bool

Forall applies a predicate function p to every element in the set. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*ImmutableAppleSet) Foreach

func (set *ImmutableAppleSet) Foreach(f func(Apple))

Foreach iterates over AppleSet and executes the function f against each element.

func (*ImmutableAppleSet) GobDecode

func (set *ImmutableAppleSet) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this set type. You must register Apple with the 'gob' package before this method is used.

func (ImmutableAppleSet) GobEncode

func (set ImmutableAppleSet) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this list type. You must register Apple with the 'gob' package before this method is used.

func (*ImmutableAppleSet) Intersect

func (set *ImmutableAppleSet) Intersect(other *ImmutableAppleSet) *ImmutableAppleSet

Intersect returns a new set with items that exist only in both sets.

func (*ImmutableAppleSet) IsEmpty

func (set *ImmutableAppleSet) IsEmpty() bool

IsEmpty returns true if the set is empty.

func (*ImmutableAppleSet) IsSequence

func (set *ImmutableAppleSet) IsSequence() bool

IsSequence returns true for lists and queues.

func (*ImmutableAppleSet) IsSet

func (set *ImmutableAppleSet) IsSet() bool

IsSet returns false for lists or queues.

func (*ImmutableAppleSet) IsSubset

func (set *ImmutableAppleSet) IsSubset(other *ImmutableAppleSet) bool

IsSubset determines whether every item in the other set is in this set, returning true if so.

func (*ImmutableAppleSet) IsSuperset

func (set *ImmutableAppleSet) IsSuperset(other *ImmutableAppleSet) bool

IsSuperset determines whether every item of this set is in the other set, returning true if so.

func (*ImmutableAppleSet) Map

func (set *ImmutableAppleSet) Map(f func(Apple) Apple) *ImmutableAppleSet

Map returns a new ImmutableAppleSet by transforming every element with a function f.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableAppleSet) MapToString added in v3.5.0

func (set *ImmutableAppleSet) MapToString(f func(Apple) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the set.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableAppleSet) MaxBy

func (set *ImmutableAppleSet) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of ImmutableAppleSet containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*ImmutableAppleSet) MinBy

func (set *ImmutableAppleSet) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of ImmutableAppleSet containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*ImmutableAppleSet) NonEmpty

func (set *ImmutableAppleSet) NonEmpty() bool

NonEmpty returns true if the set is not empty.

func (*ImmutableAppleSet) Partition

func (set *ImmutableAppleSet) Partition(p func(Apple) bool) (*ImmutableAppleSet, *ImmutableAppleSet)

Partition returns two new AppleSets whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

func (*ImmutableAppleSet) Remove

func (set *ImmutableAppleSet) Remove(i Apple) *ImmutableAppleSet

Remove removes a single item from the set. A new set is returned that has all the elements except the removed one.

func (*ImmutableAppleSet) Send

func (set *ImmutableAppleSet) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed

func (*ImmutableAppleSet) Size

func (set *ImmutableAppleSet) Size() int

Size returns how many items are currently in the set. This is a synonym for Cardinality.

func (*ImmutableAppleSet) SymmetricDifference

func (set *ImmutableAppleSet) SymmetricDifference(other *ImmutableAppleSet) *ImmutableAppleSet

SymmetricDifference returns a new set with items in the current set or the other set but not in both.

func (*ImmutableAppleSet) ToInterfaceSlice

func (set *ImmutableAppleSet) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current set as a slice of arbitrary type.

func (*ImmutableAppleSet) ToSet

func (set *ImmutableAppleSet) ToSet() *ImmutableAppleSet

ToSet returns the set; this is an identity operation in this case.

func (*ImmutableAppleSet) ToSlice

func (set *ImmutableAppleSet) ToSlice() []Apple

ToSlice returns the elements of the current set as a slice.

func (*ImmutableAppleSet) Union

Union returns a new set with all items in both sets.

type ImmutableAppleSizer

type ImmutableAppleSizer interface {
	// IsEmpty tests whether ImmutableAppleCollection is empty.
	IsEmpty() bool

	// NonEmpty tests whether ImmutableAppleCollection is empty.
	NonEmpty() bool

	// Size returns the number of items in the list - an alias of Len().
	Size() int
}

ImmutableAppleSizer defines an interface for sizing methods on Apple collections.

type ImmutableIntCollection

type ImmutableIntCollection interface {
	ImmutableIntSizer
	ImmutableIntMkStringer

	// IsSequence returns true for lists and queues.
	IsSequence() bool

	// IsSet returns false for lists and queues.
	IsSet() bool

	// ToSlice returns a shallow copy as a plain slice.
	ToSlice() []int

	// ToInterfaceSlice returns a shallow copy as a slice of arbitrary type.
	ToInterfaceSlice() []interface{}

	// Exists verifies that one or more elements of ImmutableIntCollection return true for the predicate p.
	Exists(p func(int) bool) bool

	// Forall verifies that all elements of ImmutableIntCollection return true for the predicate p.
	Forall(p func(int) bool) bool

	// Foreach iterates over ImmutableIntCollection and executes the function f against each element.
	Foreach(f func(int))

	// Find returns the first int that returns true for the predicate p.
	// False is returned if none match.
	Find(p func(int) bool) (int, bool)

	// MapToString returns a new []string by transforming every element with function f.
	// The resulting slice is the same size as the collection. The collection is not modified.
	MapToString(f func(int) string) []string

	// MapToInt64 returns a new []int64 by transforming every element with function f.
	// The resulting slice is the same size as the collection. The collection is not modified.
	MapToInt64(f func(int) int64) []int64

	// FlatMapString returns a new []string by transforming every element with function f
	// that returns zero or more items in a slice. The resulting slice may have a different size to the
	// collection. The collection is not modified.
	FlatMapToString(f func(int) []string) []string

	// FlatMapInt64 returns a new []int64 by transforming every element with function f
	// that returns zero or more items in a slice. The resulting slice may have a different size to the
	// collection. The collection is not modified.
	FlatMapToInt64(f func(int) []int64) []int64

	// Send returns a channel that will send all the elements in order. Can be used with the plumbing code, for example.
	// A goroutine is created to send the elements; this only terminates when all the elements have been consumed
	Send() <-chan int

	// CountBy gives the number elements of ImmutableIntCollection that return true for the predicate p.
	CountBy(p func(int) bool) int

	// Contains determines whether a given item is already in the collection, returning true if so.
	Contains(v int) bool

	// ContainsAll determines whether the given items are all in the collection, returning true if so.
	ContainsAll(v ...int) bool

	// Min returns the minimum value of all the items in the collection. Panics if there are no elements.
	Min() int

	// Max returns the minimum value of all the items in the collection. Panics if there are no elements.
	Max() int

	// MinBy returns an element of ImmutableIntCollection containing the minimum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such
	// element is returned. Panics if there are no elements.
	MinBy(less func(int, int) bool) int

	// MaxBy returns an element of ImmutableIntCollection containing the maximum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such
	// element is returned. Panics if there are no elements.
	MaxBy(less func(int, int) bool) int

	// Fold aggregates all the values in the collection using a supplied function, starting from some initial value.
	Fold(initial int, fn func(int, int) int) int

	// Sum returns the sum of all the elements in the collection.
	Sum() int
}

ImmutableIntCollection defines an interface for common collection methods on int.

type ImmutableIntIntMap

type ImmutableIntIntMap struct {
	// contains filtered or unexported fields
}

ImmutableIntIntMap is the primary type that represents a thread-safe map

func NewImmutableIntIntMap

func NewImmutableIntIntMap(kv ...ImmutableIntIntTuple) *ImmutableIntIntMap

NewImmutableIntIntMap creates and returns a reference to a map, optionally containing some items.

func NewImmutableIntIntMap1

func NewImmutableIntIntMap1(k int, v int) *ImmutableIntIntMap

NewImmutableIntIntMap1 creates and returns a reference to a map containing one item.

func (*ImmutableIntIntMap) Clone

Clone returns the same map, which is immutable.

func (*ImmutableIntIntMap) ContainsAllKeys

func (mm *ImmutableIntIntMap) ContainsAllKeys(kk ...int) bool

ContainsAllKeys determines if the given items are all in the map.

func (*ImmutableIntIntMap) ContainsKey

func (mm *ImmutableIntIntMap) ContainsKey(k int) bool

ContainsKey determines if a given item is already in the map.

func (*ImmutableIntIntMap) Equals

func (mm *ImmutableIntIntMap) Equals(other *ImmutableIntIntMap) bool

Equals determines if two maps are equal to each other. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for maps to be equal.

func (*ImmutableIntIntMap) Exists

func (mm *ImmutableIntIntMap) Exists(p func(int, int) bool) bool

Exists applies the predicate p to every element in the map. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*ImmutableIntIntMap) Filter

func (mm *ImmutableIntIntMap) Filter(p func(int, int) bool) *ImmutableIntIntMap

Filter applies the predicate p to every element in the map and returns a copied map containing only the elements for which the predicate returned true.

func (*ImmutableIntIntMap) Find

func (mm *ImmutableIntIntMap) Find(p func(int, int) bool) (ImmutableIntIntTuple, bool)

Find returns the first int that returns true for the predicate p. False is returned if none match.

func (*ImmutableIntIntMap) FlatMap

FlatMap returns a new ImmutableIntMap by transforming every element with the function f that returns zero or more items in a slice. The resulting map may have a different size to the original map.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntIntMap) Forall

func (mm *ImmutableIntIntMap) Forall(f func(int, int) bool) bool

Forall applies the predicate p to every element in the map. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*ImmutableIntIntMap) Foreach

func (mm *ImmutableIntIntMap) Foreach(f func(int, int))

Foreach applies the function f to every element in the map. The function can safely alter the values via side-effects.

func (*ImmutableIntIntMap) Get

func (mm *ImmutableIntIntMap) Get(k int) (int, bool)

Get returns one of the items in the map, if present.

func (*ImmutableIntIntMap) IsEmpty

func (mm *ImmutableIntIntMap) IsEmpty() bool

IsEmpty returns true if the map is empty.

func (*ImmutableIntIntMap) Keys

func (mm *ImmutableIntIntMap) Keys() []int

Keys returns the keys of the current map as a slice.

func (*ImmutableIntIntMap) Map

func (mm *ImmutableIntIntMap) Map(f func(int, int) (int, int)) *ImmutableIntIntMap

Map returns a new ImmutableIntMap by transforming every element with the function f.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntIntMap) MkString

func (mm *ImmutableIntIntMap) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (*ImmutableIntIntMap) MkString4 added in v3.7.0

func (mm *ImmutableIntIntMap) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (*ImmutableIntIntMap) NonEmpty

func (mm *ImmutableIntIntMap) NonEmpty() bool

NonEmpty returns true if the map is not empty.

func (*ImmutableIntIntMap) OrderedSlice added in v3.6.0

func (mm *ImmutableIntIntMap) OrderedSlice(keys []int) ImmutableIntIntTuples

OrderedSlice returns the key/value pairs as a slice in the order specified by keys.

func (*ImmutableIntIntMap) Partition

func (mm *ImmutableIntIntMap) Partition(p func(int, int) bool) (matching *ImmutableIntIntMap, others *ImmutableIntIntMap)

Partition applies the predicate p to every element in the map. It divides the map into two copied maps, the first containing all the elements for which the predicate returned true, and the second containing all the others.

func (*ImmutableIntIntMap) Put added in v3.3.0

Put adds an item to a clone of the map, replacing any prior value and returning the cloned map.

func (*ImmutableIntIntMap) Size

func (mm *ImmutableIntIntMap) Size() int

Size returns how many items are currently in the map. This is a synonym for Len.

func (*ImmutableIntIntMap) String

func (mm *ImmutableIntIntMap) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (*ImmutableIntIntMap) ToSlice

ToSlice returns the key/value pairs as a slice

func (*ImmutableIntIntMap) Values

func (mm *ImmutableIntIntMap) Values() []int

Values returns the values of the current map as a slice.

type ImmutableIntIntTuple

type ImmutableIntIntTuple struct {
	Key int
	Val int
}

ImmutableIntIntTuple represents a key/value pair.

func (ImmutableIntIntTuple) MarshalJSON added in v3.6.0

func (t ImmutableIntIntTuple) MarshalJSON() ([]byte, error)

MarshalJSON implements encoding.Marshaler interface.

func (ImmutableIntIntTuple) UnmarshalJSON added in v3.6.0

func (t ImmutableIntIntTuple) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this tuple type.

type ImmutableIntIntTuples

type ImmutableIntIntTuples []ImmutableIntIntTuple

ImmutableIntIntTuples can be used as a builder for unmodifiable maps.

func ImmutableIntIntZip

func ImmutableIntIntZip(keys ...int) ImmutableIntIntTuples

ImmutableIntIntZip is used with the Values method to zip (i.e. interleave) a slice of keys with a slice of values. These can then be passed in to the NewImmutableIntIntMap constructor function.

func (ImmutableIntIntTuples) Append1

Append1 adds one item.

func (ImmutableIntIntTuples) Append2

func (ts ImmutableIntIntTuples) Append2(k1 int, v1 int, k2 int, v2 int) ImmutableIntIntTuples

Append2 adds two items.

func (ImmutableIntIntTuples) Append3

func (ts ImmutableIntIntTuples) Append3(k1 int, v1 int, k2 int, v2 int, k3 int, v3 int) ImmutableIntIntTuples

Append3 adds three items.

func (ImmutableIntIntTuples) MkString added in v3.6.0

func (ts ImmutableIntIntTuples) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (ImmutableIntIntTuples) MkString4 added in v3.7.0

func (ts ImmutableIntIntTuples) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (ImmutableIntIntTuples) String added in v3.6.0

func (ts ImmutableIntIntTuples) String() string

func (ImmutableIntIntTuples) ToMap added in v3.6.0

ToMap converts the tuples to a map.

func (ImmutableIntIntTuples) Values

func (ts ImmutableIntIntTuples) Values(values ...int) ImmutableIntIntTuples

Values sets the values in a tuple slice. Use this with ImmutableIntIntZip.

type ImmutableIntList

type ImmutableIntList struct {
	// contains filtered or unexported fields
}

ImmutableIntList contains a slice of type int. It is designed to be immutable - ideal for race-free reference lists etc. It encapsulates the slice and provides methods to access it. Importantly, *none of its methods ever mutate a list*; they merely return new lists where required.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildImmutableIntListFromChan

func BuildImmutableIntListFromChan(source <-chan int) *ImmutableIntList

BuildImmutableIntListFromChan constructs a new ImmutableIntList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertImmutableIntList

func ConvertImmutableIntList(values ...interface{}) (*ImmutableIntList, bool)

ConvertImmutableIntList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted. Conversions are provided from all built-in numeric types.

func NewImmutableIntList

func NewImmutableIntList(values ...int) *ImmutableIntList

NewImmutableIntList constructs a new list containing the supplied values, if any.

func (*ImmutableIntList) Append

func (list *ImmutableIntList) Append(more ...int) *ImmutableIntList

Append returns a new list with all original items and all in `more`; they retain their order. The original list is not altered.

func (*ImmutableIntList) Clone

func (list *ImmutableIntList) Clone() *ImmutableIntList

Clone returns the same list, which is immutable.

func (*ImmutableIntList) Contains

func (list *ImmutableIntList) Contains(v int) bool

Contains determines whether a given item is already in the list, returning true if so.

func (*ImmutableIntList) ContainsAll

func (list *ImmutableIntList) ContainsAll(i ...int) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (*ImmutableIntList) CountBy

func (list *ImmutableIntList) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of ImmutableIntList that return true for the predicate p.

func (*ImmutableIntList) DistinctBy

func (list *ImmutableIntList) DistinctBy(equal func(int, int) bool) *ImmutableIntList

DistinctBy returns a new ImmutableIntList whose elements are unique, where equality is defined by the equal function.

func (*ImmutableIntList) Drop

func (list *ImmutableIntList) Drop(n int) *ImmutableIntList

Drop returns a slice of ImmutableIntList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

func (*ImmutableIntList) DropLast

func (list *ImmutableIntList) DropLast(n int) *ImmutableIntList

DropLast returns a slice of ImmutableIntList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

func (*ImmutableIntList) DropWhile

func (list *ImmutableIntList) DropWhile(p func(int) bool) *ImmutableIntList

DropWhile returns a new ImmutableIntList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

func (*ImmutableIntList) Equals

func (list *ImmutableIntList) Equals(other *ImmutableIntList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal. Nil lists are considered to be empty.

func (*ImmutableIntList) Exists

func (list *ImmutableIntList) Exists(p func(int) bool) bool

Exists verifies that one or more elements of ImmutableIntList return true for the predicate p.

func (*ImmutableIntList) Filter

func (list *ImmutableIntList) Filter(p func(int) bool) *ImmutableIntList

Filter returns a new ImmutableIntList whose elements return true for predicate p.

func (*ImmutableIntList) Find

func (list *ImmutableIntList) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for predicate p. False is returned if none match.

func (*ImmutableIntList) FlatMap

func (list *ImmutableIntList) FlatMap(f func(int) []int) *ImmutableIntList

FlatMap returns a new ImmutableIntList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntList) FlatMapToInt64 added in v3.5.0

func (list *ImmutableIntList) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntList) FlatMapToString added in v3.5.0

func (list *ImmutableIntList) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntList) Fold added in v3.9.0

func (list *ImmutableIntList) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (*ImmutableIntList) Forall

func (list *ImmutableIntList) Forall(p func(int) bool) bool

Forall verifies that all elements of ImmutableIntList return true for the predicate p.

func (*ImmutableIntList) Foreach

func (list *ImmutableIntList) Foreach(f func(int))

Foreach iterates over ImmutableIntList and executes function f against each element. The function receives copies that do not alter the list elements when they are changed.

func (*ImmutableIntList) Get

func (list *ImmutableIntList) Get(i int) int

Get gets the specified element in the list. Panics if the index is out of range or the list is nil.

func (*ImmutableIntList) Head

func (list *ImmutableIntList) Head() int

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (*ImmutableIntList) HeadOption

func (list *ImmutableIntList) HeadOption() (int, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (*ImmutableIntList) IndexWhere

func (list *ImmutableIntList) IndexWhere(p func(int) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (*ImmutableIntList) IndexWhere2

func (list *ImmutableIntList) IndexWhere2(p func(int) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (*ImmutableIntList) Init

func (list *ImmutableIntList) Init() *ImmutableIntList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (*ImmutableIntList) IsEmpty

func (list *ImmutableIntList) IsEmpty() bool

IsEmpty tests whether ImmutableIntList is empty.

func (*ImmutableIntList) IsSequence

func (list *ImmutableIntList) IsSequence() bool

IsSequence returns true for lists and queues.

func (*ImmutableIntList) IsSet

func (list *ImmutableIntList) IsSet() bool

IsSet returns false for lists or queues.

func (*ImmutableIntList) Last

func (list *ImmutableIntList) Last() int

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (*ImmutableIntList) LastIndexWhere

func (list *ImmutableIntList) LastIndexWhere(p func(int) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (*ImmutableIntList) LastIndexWhere2

func (list *ImmutableIntList) LastIndexWhere2(p func(int) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (*ImmutableIntList) LastOption

func (list *ImmutableIntList) LastOption() (int, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (*ImmutableIntList) Len

func (list *ImmutableIntList) Len() int

Len returns the number of items in the list - an alias of Size().

func (*ImmutableIntList) Map

func (list *ImmutableIntList) Map(f func(int) int) *ImmutableIntList

Map returns a new ImmutableIntList by transforming every element with function f. The resulting list is the same size as the original list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntList) MapToInt64 added in v3.5.0

func (list *ImmutableIntList) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntList) MapToString added in v3.5.0

func (list *ImmutableIntList) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (ImmutableIntList) MarshalJSON

func (list ImmutableIntList) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this list type.

func (*ImmutableIntList) Max

func (list *ImmutableIntList) Max() (result int)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (*ImmutableIntList) MaxBy

func (list *ImmutableIntList) MaxBy(less func(int, int) bool) int

MaxBy returns an element of ImmutableIntList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*ImmutableIntList) Min

func (list *ImmutableIntList) Min() int

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (*ImmutableIntList) MinBy

func (list *ImmutableIntList) MinBy(less func(int, int) bool) int

MinBy returns an element of ImmutableIntList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*ImmutableIntList) MkString

func (list *ImmutableIntList) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (*ImmutableIntList) MkString3

func (list *ImmutableIntList) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (*ImmutableIntList) NonEmpty

func (list *ImmutableIntList) NonEmpty() bool

NonEmpty tests whether ImmutableIntList is empty.

func (*ImmutableIntList) Partition

func (list *ImmutableIntList) Partition(p func(int) bool) (*ImmutableIntList, *ImmutableIntList)

Partition returns two new intLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

func (*ImmutableIntList) Reverse

func (list *ImmutableIntList) Reverse() *ImmutableIntList

Reverse returns a copy of ImmutableIntList with all elements in the reverse order.

func (*ImmutableIntList) Send

func (list *ImmutableIntList) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*ImmutableIntList) Shuffle

func (list *ImmutableIntList) Shuffle() *ImmutableIntList

Shuffle returns a shuffled copy of ImmutableIntList, using a version of the Fisher-Yates shuffle.

func (*ImmutableIntList) Size

func (list *ImmutableIntList) Size() int

Size returns the number of items in the list - an alias of Len().

func (*ImmutableIntList) SortBy

func (list *ImmutableIntList) SortBy(less func(i, j int) bool) *ImmutableIntList

SortBy returns a new list in which the elements are sorted by a specified ordering.

func (*ImmutableIntList) Sorted

func (list *ImmutableIntList) Sorted() *ImmutableIntList

Sorted returns a new list in which the elements are sorted by their natural ordering.

func (*ImmutableIntList) StableSortBy

func (list *ImmutableIntList) StableSortBy(less func(i, j int) bool) *ImmutableIntList

StableSortBy returns a new list in which the elements are sorted by a specified ordering. The algorithm keeps the original order of equal elements.

func (*ImmutableIntList) StableSorted

func (list *ImmutableIntList) StableSorted() *ImmutableIntList

StableSorted returns a new list in which the elements are sorted by their natural ordering.

func (*ImmutableIntList) String

func (list *ImmutableIntList) String() string

String implements the Stringer interface to render the list as a comma-separated string enclosed in square brackets.

func (*ImmutableIntList) StringList

func (list *ImmutableIntList) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (*ImmutableIntList) Sum

func (list *ImmutableIntList) Sum() int

Sum returns the sum of all the elements in the list.

func (*ImmutableIntList) Tail

func (list *ImmutableIntList) Tail() *ImmutableIntList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (*ImmutableIntList) Take

func (list *ImmutableIntList) Take(n int) *ImmutableIntList

Take returns a slice of ImmutableIntList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*ImmutableIntList) TakeLast

func (list *ImmutableIntList) TakeLast(n int) *ImmutableIntList

TakeLast returns a slice of ImmutableIntList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*ImmutableIntList) TakeWhile

func (list *ImmutableIntList) TakeWhile(p func(int) bool) *ImmutableIntList

TakeWhile returns a new ImmutableIntList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

func (*ImmutableIntList) ToInterfaceSlice

func (list *ImmutableIntList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (*ImmutableIntList) ToList

func (list *ImmutableIntList) ToList() *ImmutableIntList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (*ImmutableIntList) ToSlice

func (list *ImmutableIntList) ToSlice() []int

ToSlice returns the elements of the current list as a slice.

func (*ImmutableIntList) UnmarshalJSON

func (list *ImmutableIntList) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this list type.

type ImmutableIntMkStringer

type ImmutableIntMkStringer interface {
	// String implements the Stringer interface to render the list as a comma-separated string enclosed
	// in square brackets.
	String() string

	// MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.
	MkString(sep string) string

	// MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.
	MkString3(before, between, after string) string

	// implements json.Marshaler interface {
	MarshalJSON() ([]byte, error)

	// StringList gets a slice of strings that depicts all the elements.
	StringList() []string
}

ImmutableIntMkStringer defines an interface for stringer methods on int collections.

type ImmutableIntSequence added in v3.9.0

type ImmutableIntSequence interface {
	ImmutableIntCollection

	// Head gets the first element in the sequence. Head plus Tail include the whole sequence. Head is the opposite of Last.
	Head() int

	// HeadOption gets the first element in the sequence, if possible.
	HeadOption() (int, bool)

	// Last gets the last element in the sequence. Init plus Last include the whole sequence. Last is the opposite of Head.
	Last() int

	// LastOption gets the last element in the sequence, if possible.
	LastOption() (int, bool)
}

ImmutableIntSequence defines an interface for sequence methods on int.

type ImmutableIntSet

type ImmutableIntSet struct {
	// contains filtered or unexported fields
}

ImmutableIntSet is the primary type that represents a set.

func BuildImmutableIntSetFromChan

func BuildImmutableIntSetFromChan(source <-chan int) *ImmutableIntSet

BuildImmutableIntSetFromChan constructs a new ImmutableIntSet from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertImmutableIntSet

func ConvertImmutableIntSet(values ...interface{}) (*ImmutableIntSet, bool)

ConvertImmutableIntSet constructs a new set containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned set will contain all the values that were correctly converted.

func NewImmutableIntSet

func NewImmutableIntSet(values ...int) *ImmutableIntSet

NewImmutableIntSet creates and returns a reference to an empty set.

func (*ImmutableIntSet) Add

func (set *ImmutableIntSet) Add(more ...int) *ImmutableIntSet

Add returns a new set with all original items and all in `more`. The original set is not altered.

func (*ImmutableIntSet) Cardinality

func (set *ImmutableIntSet) Cardinality() int

Cardinality returns how many items are currently in the set. This is a synonym for Size.

func (*ImmutableIntSet) Clone

func (set *ImmutableIntSet) Clone() *ImmutableIntSet

Clone returns the same set, which is immutable.

func (*ImmutableIntSet) Contains

func (set *ImmutableIntSet) Contains(i int) bool

Contains determines whether a given item is already in the set, returning true if so.

func (*ImmutableIntSet) ContainsAll

func (set *ImmutableIntSet) ContainsAll(i ...int) bool

ContainsAll determines whether a given item is already in the set, returning true if so.

func (*ImmutableIntSet) CountBy

func (set *ImmutableIntSet) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of ImmutableIntSet that return true for the predicate p.

func (*ImmutableIntSet) Difference

func (set *ImmutableIntSet) Difference(other *ImmutableIntSet) *ImmutableIntSet

Difference returns a new set with items in the current set but not in the other set

func (*ImmutableIntSet) Equals

func (set *ImmutableIntSet) Equals(other *ImmutableIntSet) bool

Equals determines whether two sets are equal to each other, returning true if so. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.

func (*ImmutableIntSet) Exists

func (set *ImmutableIntSet) Exists(p func(int) bool) bool

Exists applies a predicate p to every element in the set. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*ImmutableIntSet) Filter

func (set *ImmutableIntSet) Filter(p func(int) bool) *ImmutableIntSet

Filter returns a new ImmutableIntSet whose elements return true for the predicate p.

func (*ImmutableIntSet) Find

func (set *ImmutableIntSet) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for the predicate p. If there are many matches one is arbtrarily chosen. False is returned if none match.

func (*ImmutableIntSet) FlatMap

func (set *ImmutableIntSet) FlatMap(f func(int) []int) *ImmutableIntSet

FlatMap returns a new ImmutableIntSet by transforming every element with a function f that returns zero or more items in a slice. The resulting set may have a different size to the original set.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntSet) FlatMapToInt64 added in v3.5.0

func (set *ImmutableIntSet) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntSet) FlatMapToString added in v3.5.0

func (set *ImmutableIntSet) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntSet) Fold added in v3.9.0

func (set *ImmutableIntSet) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the set using a supplied function, starting from some initial value.

func (*ImmutableIntSet) Forall

func (set *ImmutableIntSet) Forall(p func(int) bool) bool

Forall applies a predicate function p to every element in the set. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*ImmutableIntSet) Foreach

func (set *ImmutableIntSet) Foreach(f func(int))

Foreach iterates over intSet and executes the function f against each element.

func (*ImmutableIntSet) Intersect

func (set *ImmutableIntSet) Intersect(other *ImmutableIntSet) *ImmutableIntSet

Intersect returns a new set with items that exist only in both sets.

func (*ImmutableIntSet) IsEmpty

func (set *ImmutableIntSet) IsEmpty() bool

IsEmpty returns true if the set is empty.

func (*ImmutableIntSet) IsSequence

func (set *ImmutableIntSet) IsSequence() bool

IsSequence returns true for lists and queues.

func (*ImmutableIntSet) IsSet

func (set *ImmutableIntSet) IsSet() bool

IsSet returns false for lists or queues.

func (*ImmutableIntSet) IsSubset

func (set *ImmutableIntSet) IsSubset(other *ImmutableIntSet) bool

IsSubset determines whether every item in the other set is in this set, returning true if so.

func (*ImmutableIntSet) IsSuperset

func (set *ImmutableIntSet) IsSuperset(other *ImmutableIntSet) bool

IsSuperset determines whether every item of this set is in the other set, returning true if so.

func (*ImmutableIntSet) Map

func (set *ImmutableIntSet) Map(f func(int) int) *ImmutableIntSet

Map returns a new ImmutableIntSet by transforming every element with a function f.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntSet) MapToInt64 added in v3.5.0

func (set *ImmutableIntSet) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the set.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntSet) MapToString added in v3.5.0

func (set *ImmutableIntSet) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the set.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableIntSet) MarshalJSON

func (set *ImmutableIntSet) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this set type.

func (*ImmutableIntSet) Max

func (set *ImmutableIntSet) Max() (result int)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (*ImmutableIntSet) MaxBy

func (set *ImmutableIntSet) MaxBy(less func(int, int) bool) int

MaxBy returns an element of ImmutableIntSet containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*ImmutableIntSet) Min

func (set *ImmutableIntSet) Min() int

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (*ImmutableIntSet) MinBy

func (set *ImmutableIntSet) MinBy(less func(int, int) bool) int

MinBy returns an element of ImmutableIntSet containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*ImmutableIntSet) MkString

func (set *ImmutableIntSet) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (*ImmutableIntSet) MkString3

func (set *ImmutableIntSet) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (*ImmutableIntSet) NonEmpty

func (set *ImmutableIntSet) NonEmpty() bool

NonEmpty returns true if the set is not empty.

func (*ImmutableIntSet) Partition

func (set *ImmutableIntSet) Partition(p func(int) bool) (*ImmutableIntSet, *ImmutableIntSet)

Partition returns two new intSets whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

func (*ImmutableIntSet) Remove

func (set *ImmutableIntSet) Remove(i int) *ImmutableIntSet

Remove removes a single item from the set. A new set is returned that has all the elements except the removed one.

func (*ImmutableIntSet) Send

func (set *ImmutableIntSet) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed

func (*ImmutableIntSet) Size

func (set *ImmutableIntSet) Size() int

Size returns how many items are currently in the set. This is a synonym for Cardinality.

func (*ImmutableIntSet) String

func (set *ImmutableIntSet) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (*ImmutableIntSet) StringList

func (set *ImmutableIntSet) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (*ImmutableIntSet) StringMap

func (set *ImmutableIntSet) StringMap() map[string]bool

StringMap renders the set as a map of strings. The value of each item in the set becomes stringified as a key in the resulting map.

func (*ImmutableIntSet) Sum

func (set *ImmutableIntSet) Sum() int

Sum returns the sum of all the elements in the set.

func (*ImmutableIntSet) SymmetricDifference

func (set *ImmutableIntSet) SymmetricDifference(other *ImmutableIntSet) *ImmutableIntSet

SymmetricDifference returns a new set with items in the current set or the other set but not in both.

func (*ImmutableIntSet) ToInterfaceSlice

func (set *ImmutableIntSet) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current set as a slice of arbitrary type.

func (*ImmutableIntSet) ToSet

func (set *ImmutableIntSet) ToSet() *ImmutableIntSet

ToSet returns the set; this is an identity operation in this case.

func (*ImmutableIntSet) ToSlice

func (set *ImmutableIntSet) ToSlice() []int

ToSlice returns the elements of the current set as a slice.

func (*ImmutableIntSet) Union

func (set *ImmutableIntSet) Union(other *ImmutableIntSet) *ImmutableIntSet

Union returns a new set with all items in both sets.

func (*ImmutableIntSet) UnmarshalJSON

func (set *ImmutableIntSet) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this set type.

type ImmutableIntSizer

type ImmutableIntSizer interface {
	// IsEmpty tests whether ImmutableIntCollection is empty.
	IsEmpty() bool

	// NonEmpty tests whether ImmutableIntCollection is empty.
	NonEmpty() bool

	// Size returns the number of items in the list - an alias of Len().
	Size() int
}

ImmutableIntSizer defines an interface for sizing methods on int collections.

type ImmutableStringAppleMap

type ImmutableStringAppleMap struct {
	// contains filtered or unexported fields
}

ImmutableStringAppleMap is the primary type that represents a thread-safe map

func NewImmutableStringAppleMap

func NewImmutableStringAppleMap(kv ...ImmutableStringAppleTuple) *ImmutableStringAppleMap

NewImmutableStringAppleMap creates and returns a reference to a map, optionally containing some items.

func NewImmutableStringAppleMap1

func NewImmutableStringAppleMap1(k string, v Apple) *ImmutableStringAppleMap

NewImmutableStringAppleMap1 creates and returns a reference to a map containing one item.

func (*ImmutableStringAppleMap) Clone

Clone returns the same map, which is immutable.

func (*ImmutableStringAppleMap) ContainsAllKeys

func (mm *ImmutableStringAppleMap) ContainsAllKeys(kk ...string) bool

ContainsAllKeys determines if the given items are all in the map.

func (*ImmutableStringAppleMap) ContainsKey

func (mm *ImmutableStringAppleMap) ContainsKey(k string) bool

ContainsKey determines if a given item is already in the map.

func (*ImmutableStringAppleMap) Exists

func (mm *ImmutableStringAppleMap) Exists(p func(string, Apple) bool) bool

Exists applies the predicate p to every element in the map. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*ImmutableStringAppleMap) Filter

Filter applies the predicate p to every element in the map and returns a copied map containing only the elements for which the predicate returned true.

func (*ImmutableStringAppleMap) Find

Find returns the first Apple that returns true for the predicate p. False is returned if none match.

func (*ImmutableStringAppleMap) FlatMap

FlatMap returns a new ImmutableAppleMap by transforming every element with the function f that returns zero or more items in a slice. The resulting map may have a different size to the original map.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableStringAppleMap) Forall

func (mm *ImmutableStringAppleMap) Forall(f func(string, Apple) bool) bool

Forall applies the predicate p to every element in the map. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*ImmutableStringAppleMap) Foreach

func (mm *ImmutableStringAppleMap) Foreach(f func(string, Apple))

Foreach applies the function f to every element in the map. The function can safely alter the values via side-effects.

func (*ImmutableStringAppleMap) Get

func (mm *ImmutableStringAppleMap) Get(k string) (Apple, bool)

Get returns one of the items in the map, if present.

func (*ImmutableStringAppleMap) GobDecode

func (mm *ImmutableStringAppleMap) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this map type. You must register Apple with the 'gob' package before this method is used.

func (*ImmutableStringAppleMap) GobEncode

func (mm *ImmutableStringAppleMap) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this map type. You must register Apple with the 'gob' package before this method is used.

func (*ImmutableStringAppleMap) IsEmpty

func (mm *ImmutableStringAppleMap) IsEmpty() bool

IsEmpty returns true if the map is empty.

func (*ImmutableStringAppleMap) Keys

func (mm *ImmutableStringAppleMap) Keys() []string

Keys returns the keys of the current map as a slice.

func (*ImmutableStringAppleMap) Map

Map returns a new ImmutableAppleMap by transforming every element with the function f.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableStringAppleMap) NonEmpty

func (mm *ImmutableStringAppleMap) NonEmpty() bool

NonEmpty returns true if the map is not empty.

func (*ImmutableStringAppleMap) OrderedSlice added in v3.6.0

OrderedSlice returns the key/value pairs as a slice in the order specified by keys.

func (*ImmutableStringAppleMap) Partition

func (mm *ImmutableStringAppleMap) Partition(p func(string, Apple) bool) (matching *ImmutableStringAppleMap, others *ImmutableStringAppleMap)

Partition applies the predicate p to every element in the map. It divides the map into two copied maps, the first containing all the elements for which the predicate returned true, and the second containing all the others.

func (*ImmutableStringAppleMap) Put added in v3.3.0

Put adds an item to a clone of the map, replacing any prior value and returning the cloned map.

func (*ImmutableStringAppleMap) Size

func (mm *ImmutableStringAppleMap) Size() int

Size returns how many items are currently in the map. This is a synonym for Len.

func (*ImmutableStringAppleMap) ToSlice

ToSlice returns the key/value pairs as a slice

func (*ImmutableStringAppleMap) Values

func (mm *ImmutableStringAppleMap) Values() []Apple

Values returns the values of the current map as a slice.

type ImmutableStringAppleTuple

type ImmutableStringAppleTuple struct {
	Key string
	Val Apple
}

ImmutableStringAppleTuple represents a key/value pair.

type ImmutableStringAppleTuples

type ImmutableStringAppleTuples []ImmutableStringAppleTuple

ImmutableStringAppleTuples can be used as a builder for unmodifiable maps.

func ImmutableStringAppleZip

func ImmutableStringAppleZip(keys ...string) ImmutableStringAppleTuples

ImmutableStringAppleZip is used with the Values method to zip (i.e. interleave) a slice of keys with a slice of values. These can then be passed in to the NewImmutableStringAppleMap constructor function.

func (ImmutableStringAppleTuples) Append1

Append1 adds one item.

func (ImmutableStringAppleTuples) Append2

Append2 adds two items.

func (ImmutableStringAppleTuples) Append3

Append3 adds three items.

func (ImmutableStringAppleTuples) ToMap added in v3.6.0

ToMap converts the tuples to a map.

func (ImmutableStringAppleTuples) Values

Values sets the values in a tuple slice. Use this with ImmutableStringAppleZip.

type ImmutableStringList added in v3.5.4

type ImmutableStringList struct {
	// contains filtered or unexported fields
}

ImmutableStringList contains a slice of type string. It is designed to be immutable - ideal for race-free reference lists etc. It encapsulates the slice and provides methods to access it. Importantly, *none of its methods ever mutate a list*; they merely return new lists where required.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildImmutableStringListFromChan added in v3.5.4

func BuildImmutableStringListFromChan(source <-chan string) *ImmutableStringList

BuildImmutableStringListFromChan constructs a new ImmutableStringList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertImmutableStringList added in v3.5.4

func ConvertImmutableStringList(values ...interface{}) (*ImmutableStringList, bool)

ConvertImmutableStringList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted.

func NewImmutableStringList added in v3.5.4

func NewImmutableStringList(values ...string) *ImmutableStringList

NewImmutableStringList constructs a new list containing the supplied values, if any.

func (*ImmutableStringList) Append added in v3.5.4

func (list *ImmutableStringList) Append(more ...string) *ImmutableStringList

Append returns a new list with all original items and all in `more`; they retain their order. The original list is not altered.

func (*ImmutableStringList) Clone added in v3.5.4

Clone returns the same list, which is immutable.

func (*ImmutableStringList) Contains added in v3.5.4

func (list *ImmutableStringList) Contains(v string) bool

Contains determines whether a given item is already in the list, returning true if so.

func (*ImmutableStringList) ContainsAll added in v3.5.4

func (list *ImmutableStringList) ContainsAll(i ...string) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (*ImmutableStringList) CountBy added in v3.5.4

func (list *ImmutableStringList) CountBy(p func(string) bool) (result int)

CountBy gives the number elements of ImmutableStringList that return true for the predicate p.

func (*ImmutableStringList) DistinctBy added in v3.5.4

func (list *ImmutableStringList) DistinctBy(equal func(string, string) bool) *ImmutableStringList

DistinctBy returns a new ImmutableStringList whose elements are unique, where equality is defined by the equal function.

func (*ImmutableStringList) Drop added in v3.5.4

Drop returns a slice of ImmutableStringList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

func (*ImmutableStringList) DropLast added in v3.5.4

func (list *ImmutableStringList) DropLast(n int) *ImmutableStringList

DropLast returns a slice of ImmutableStringList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

func (*ImmutableStringList) DropWhile added in v3.5.4

func (list *ImmutableStringList) DropWhile(p func(string) bool) *ImmutableStringList

DropWhile returns a new ImmutableStringList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

func (*ImmutableStringList) Equals added in v3.5.4

func (list *ImmutableStringList) Equals(other *ImmutableStringList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal. Nil lists are considered to be empty.

func (*ImmutableStringList) Exists added in v3.5.4

func (list *ImmutableStringList) Exists(p func(string) bool) bool

Exists verifies that one or more elements of ImmutableStringList return true for the predicate p.

func (*ImmutableStringList) Filter added in v3.5.4

func (list *ImmutableStringList) Filter(p func(string) bool) *ImmutableStringList

Filter returns a new ImmutableStringList whose elements return true for predicate p.

func (*ImmutableStringList) Find added in v3.5.4

func (list *ImmutableStringList) Find(p func(string) bool) (string, bool)

Find returns the first string that returns true for predicate p. False is returned if none match.

func (*ImmutableStringList) FlatMap added in v3.5.4

func (list *ImmutableStringList) FlatMap(f func(string) []string) *ImmutableStringList

FlatMap returns a new ImmutableStringList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableStringList) FlatMapToInt added in v3.5.4

func (list *ImmutableStringList) FlatMapToInt(f func(string) []int) []int

FlatMapToInt returns a new []int by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableStringList) Fold added in v3.9.0

func (list *ImmutableStringList) Fold(initial string, fn func(string, string) string) string

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (*ImmutableStringList) Forall added in v3.5.4

func (list *ImmutableStringList) Forall(p func(string) bool) bool

Forall verifies that all elements of ImmutableStringList return true for the predicate p.

func (*ImmutableStringList) Foreach added in v3.5.4

func (list *ImmutableStringList) Foreach(f func(string))

Foreach iterates over ImmutableStringList and executes function f against each element. The function receives copies that do not alter the list elements when they are changed.

func (*ImmutableStringList) Get added in v3.5.4

func (list *ImmutableStringList) Get(i int) string

Get gets the specified element in the list. Panics if the index is out of range or the list is nil.

func (*ImmutableStringList) Head added in v3.5.4

func (list *ImmutableStringList) Head() string

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (*ImmutableStringList) HeadOption added in v3.5.4

func (list *ImmutableStringList) HeadOption() (string, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (*ImmutableStringList) IndexWhere added in v3.5.4

func (list *ImmutableStringList) IndexWhere(p func(string) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (*ImmutableStringList) IndexWhere2 added in v3.5.4

func (list *ImmutableStringList) IndexWhere2(p func(string) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (*ImmutableStringList) Init added in v3.5.4

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (*ImmutableStringList) IsEmpty added in v3.5.4

func (list *ImmutableStringList) IsEmpty() bool

IsEmpty tests whether ImmutableStringList is empty.

func (*ImmutableStringList) IsSequence added in v3.5.4

func (list *ImmutableStringList) IsSequence() bool

IsSequence returns true for lists and queues.

func (*ImmutableStringList) IsSet added in v3.5.4

func (list *ImmutableStringList) IsSet() bool

IsSet returns false for lists or queues.

func (*ImmutableStringList) Last added in v3.5.4

func (list *ImmutableStringList) Last() string

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (*ImmutableStringList) LastIndexWhere added in v3.5.4

func (list *ImmutableStringList) LastIndexWhere(p func(string) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (*ImmutableStringList) LastIndexWhere2 added in v3.5.4

func (list *ImmutableStringList) LastIndexWhere2(p func(string) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (*ImmutableStringList) LastOption added in v3.5.4

func (list *ImmutableStringList) LastOption() (string, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (*ImmutableStringList) Len added in v3.5.4

func (list *ImmutableStringList) Len() int

Len returns the number of items in the list - an alias of Size().

func (*ImmutableStringList) Map added in v3.5.4

Map returns a new ImmutableStringList by transforming every element with function f. The resulting list is the same size as the original list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*ImmutableStringList) MapToInt added in v3.5.4

func (list *ImmutableStringList) MapToInt(f func(string) int) []int

MapToInt returns a new []int by transforming every element with function f. The resulting slice is the same size as the list.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (ImmutableStringList) MarshalJSON added in v3.5.4

func (list ImmutableStringList) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this list type.

func (*ImmutableStringList) Max added in v3.5.4

func (list *ImmutableStringList) Max() (result string)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (*ImmutableStringList) MaxBy added in v3.5.4

func (list *ImmutableStringList) MaxBy(less func(string, string) bool) string

MaxBy returns an element of ImmutableStringList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*ImmutableStringList) Min added in v3.5.4

func (list *ImmutableStringList) Min() string

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (*ImmutableStringList) MinBy added in v3.5.4

func (list *ImmutableStringList) MinBy(less func(string, string) bool) string

MinBy returns an element of ImmutableStringList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*ImmutableStringList) MkString added in v3.5.4

func (list *ImmutableStringList) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (*ImmutableStringList) MkString3 added in v3.5.4

func (list *ImmutableStringList) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (*ImmutableStringList) NonEmpty added in v3.5.4

func (list *ImmutableStringList) NonEmpty() bool

NonEmpty tests whether ImmutableStringList is empty.

func (*ImmutableStringList) Partition added in v3.5.4

Partition returns two new stringLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

func (*ImmutableStringList) Reverse added in v3.5.4

func (list *ImmutableStringList) Reverse() *ImmutableStringList

Reverse returns a copy of ImmutableStringList with all elements in the reverse order.

func (*ImmutableStringList) Send added in v3.5.4

func (list *ImmutableStringList) Send() <-chan string

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*ImmutableStringList) Shuffle added in v3.5.4

func (list *ImmutableStringList) Shuffle() *ImmutableStringList

Shuffle returns a shuffled copy of ImmutableStringList, using a version of the Fisher-Yates shuffle.

func (*ImmutableStringList) Size added in v3.5.4

func (list *ImmutableStringList) Size() int

Size returns the number of items in the list - an alias of Len().

func (*ImmutableStringList) SortBy added in v3.5.4

func (list *ImmutableStringList) SortBy(less func(i, j string) bool) *ImmutableStringList

SortBy returns a new list in which the elements are sorted by a specified ordering.

func (*ImmutableStringList) Sorted added in v3.5.4

func (list *ImmutableStringList) Sorted() *ImmutableStringList

Sorted returns a new list in which the elements are sorted by their natural ordering.

func (*ImmutableStringList) StableSortBy added in v3.5.4

func (list *ImmutableStringList) StableSortBy(less func(i, j string) bool) *ImmutableStringList

StableSortBy returns a new list in which the elements are sorted by a specified ordering. The algorithm keeps the original order of equal elements.

func (*ImmutableStringList) StableSorted added in v3.5.4

func (list *ImmutableStringList) StableSorted() *ImmutableStringList

StableSorted returns a new list in which the elements are sorted by their natural ordering.

func (*ImmutableStringList) String added in v3.5.4

func (list *ImmutableStringList) String() string

String implements the Stringer interface to render the list as a comma-separated string enclosed in square brackets.

func (*ImmutableStringList) StringList added in v3.5.4

func (list *ImmutableStringList) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (*ImmutableStringList) Tail added in v3.5.4

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (*ImmutableStringList) Take added in v3.5.4

Take returns a slice of ImmutableStringList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*ImmutableStringList) TakeLast added in v3.5.4

func (list *ImmutableStringList) TakeLast(n int) *ImmutableStringList

TakeLast returns a slice of ImmutableStringList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*ImmutableStringList) TakeWhile added in v3.5.4

func (list *ImmutableStringList) TakeWhile(p func(string) bool) *ImmutableStringList

TakeWhile returns a new ImmutableStringList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

func (*ImmutableStringList) ToInterfaceSlice added in v3.5.4

func (list *ImmutableStringList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (*ImmutableStringList) ToList added in v3.5.4

func (list *ImmutableStringList) ToList() *ImmutableStringList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (*ImmutableStringList) ToSlice added in v3.5.4

func (list *ImmutableStringList) ToSlice() []string

ToSlice returns the elements of the current list as a slice.

func (*ImmutableStringList) UnmarshalJSON added in v3.5.4

func (list *ImmutableStringList) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this list type.

type IntCollection

type IntCollection interface {
	IntSizer
	IntMkStringer

	// IsSequence returns true for lists and queues.
	IsSequence() bool

	// IsSet returns false for lists and queues.
	IsSet() bool

	// ToSlice returns a shallow copy as a plain slice.
	ToSlice() []int

	// ToInterfaceSlice returns a shallow copy as a slice of arbitrary type.
	ToInterfaceSlice() []interface{}

	// Exists verifies that one or more elements of IntCollection return true for the predicate p.
	Exists(p func(int) bool) bool

	// Forall verifies that all elements of IntCollection return true for the predicate p.
	Forall(p func(int) bool) bool

	// Foreach iterates over IntCollection and executes the function f against each element.
	Foreach(f func(int))

	// Find returns the first int that returns true for the predicate p.
	// False is returned if none match.
	Find(p func(int) bool) (int, bool)

	// MapToString returns a new []string by transforming every element with function f.
	// The resulting slice is the same size as the collection. The collection is not modified.
	MapToString(f func(int) string) []string

	// MapToInt64 returns a new []int64 by transforming every element with function f.
	// The resulting slice is the same size as the collection. The collection is not modified.
	MapToInt64(f func(int) int64) []int64

	// FlatMapString returns a new []string by transforming every element with function f
	// that returns zero or more items in a slice. The resulting slice may have a different size to the
	// collection. The collection is not modified.
	FlatMapToString(f func(int) []string) []string

	// FlatMapInt64 returns a new []int64 by transforming every element with function f
	// that returns zero or more items in a slice. The resulting slice may have a different size to the
	// collection. The collection is not modified.
	FlatMapToInt64(f func(int) []int64) []int64

	// Send returns a channel that will send all the elements in order. Can be used with the plumbing code, for example.
	// A goroutine is created to send the elements; this only terminates when all the elements have been consumed
	Send() <-chan int

	// CountBy gives the number elements of IntCollection that return true for the predicate p.
	CountBy(p func(int) bool) int

	// Contains determines whether a given item is already in the collection, returning true if so.
	Contains(v int) bool

	// ContainsAll determines whether the given items are all in the collection, returning true if so.
	ContainsAll(v ...int) bool

	// Clear the entire collection.
	Clear()

	// Add adds items to the current collection.
	Add(more ...int)

	// Min returns the minimum value of all the items in the collection. Panics if there are no elements.
	Min() int

	// Max returns the minimum value of all the items in the collection. Panics if there are no elements.
	Max() int

	// MinBy returns an element of IntCollection containing the minimum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such
	// element is returned. Panics if there are no elements.
	MinBy(less func(int, int) bool) int

	// MaxBy returns an element of IntCollection containing the maximum value, when compared to other elements
	// using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such
	// element is returned. Panics if there are no elements.
	MaxBy(less func(int, int) bool) int

	// Fold aggregates all the values in the collection using a supplied function, starting from some initial value.
	Fold(initial int, fn func(int, int) int) int

	// Sum returns the sum of all the elements in the collection.
	Sum() int
}

IntCollection defines an interface for common collection methods on int.

type IntIntMap

type IntIntMap struct {
	// contains filtered or unexported fields
}

IntIntMap is the primary type that represents a thread-safe map

func NewIntIntMap

func NewIntIntMap(kv ...IntIntTuple) *IntIntMap

NewIntIntMap creates and returns a reference to a map, optionally containing some items.

func NewIntIntMap1

func NewIntIntMap1(k int, v int) *IntIntMap

NewIntIntMap1 creates and returns a reference to a map containing one item.

func (*IntIntMap) Clear

func (mm *IntIntMap) Clear()

Clear clears the entire map.

func (*IntIntMap) Clone

func (mm *IntIntMap) Clone() *IntIntMap

Clone returns a shallow copy of the map. It does not clone the underlying elements.

func (*IntIntMap) ContainsAllKeys

func (mm *IntIntMap) ContainsAllKeys(kk ...int) bool

ContainsAllKeys determines if the given items are all in the map.

func (*IntIntMap) ContainsKey

func (mm *IntIntMap) ContainsKey(k int) bool

ContainsKey determines if a given item is already in the map.

func (*IntIntMap) DropWhere

func (mm *IntIntMap) DropWhere(fn func(int, int) bool) IntIntTuples

DropWhere applies a predicate function to every element in the map. If the function returns true, the element is dropped from the map. This is similar to Filter except that the map is modified.

func (*IntIntMap) Equals

func (mm *IntIntMap) Equals(other *IntIntMap) bool

Equals determines if two maps are equal to each other. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for maps to be equal.

func (*IntIntMap) Exists

func (mm *IntIntMap) Exists(p func(int, int) bool) bool

Exists applies the predicate p to every element in the map. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*IntIntMap) Filter

func (mm *IntIntMap) Filter(p func(int, int) bool) *IntIntMap

Filter applies the predicate p to every element in the map and returns a copied map containing only the elements for which the predicate returned true. The original map is not modified.

func (*IntIntMap) Find

func (mm *IntIntMap) Find(p func(int, int) bool) (IntIntTuple, bool)

Find returns the first int that returns true for the predicate p. False is returned if none match. The original map is not modified.

func (*IntIntMap) FlatMap

func (mm *IntIntMap) FlatMap(f func(int, int) []IntIntTuple) *IntIntMap

FlatMap returns a new IntMap by transforming every element with the function f that returns zero or more items in a slice. The resulting map may have a different size to the original map. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntIntMap) Forall

func (mm *IntIntMap) Forall(p func(int, int) bool) bool

Forall applies the predicate p to every element in the map. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*IntIntMap) Foreach

func (mm *IntIntMap) Foreach(f func(int, int))

Foreach applies the function f to every element in the map. The function can safely alter the values via side-effects.

func (*IntIntMap) Get

func (mm *IntIntMap) Get(k int) (int, bool)

Get returns one of the items in the map, if present.

func (*IntIntMap) GobDecode added in v3.6.0

func (mm *IntIntMap) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this map type. You must register int with the 'gob' package before this method is used.

func (*IntIntMap) GobEncode added in v3.6.0

func (mm *IntIntMap) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this map type. You must register int with the 'gob' package before this method is used.

func (*IntIntMap) IsEmpty

func (mm *IntIntMap) IsEmpty() bool

IsEmpty returns true if the map is empty.

func (*IntIntMap) Keys

func (mm *IntIntMap) Keys() []int

Keys returns the keys of the current map as a slice.

func (*IntIntMap) Map

func (mm *IntIntMap) Map(f func(int, int) (int, int)) *IntIntMap

Map returns a new IntMap by transforming every element with the function f. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntIntMap) MkString

func (mm *IntIntMap) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (*IntIntMap) MkString4 added in v3.7.0

func (mm *IntIntMap) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (*IntIntMap) NonEmpty

func (mm *IntIntMap) NonEmpty() bool

NonEmpty returns true if the map is not empty.

func (*IntIntMap) OrderedSlice added in v3.6.0

func (mm *IntIntMap) OrderedSlice(keys []int) IntIntTuples

OrderedSlice returns the key/value pairs as a slice in the order specified by keys.

func (*IntIntMap) Partition

func (mm *IntIntMap) Partition(p func(int, int) bool) (matching *IntIntMap, others *IntIntMap)

Partition applies the predicate p to every element in the map. It divides the map into two copied maps, the first containing all the elements for which the predicate returned true, and the second containing all the others. The original map is not modified.

func (*IntIntMap) Pop

func (mm *IntIntMap) Pop(k int) (int, bool)

Pop removes a single item from the map, returning the value present prior to removal. The boolean result is true only if the key had been present.

func (*IntIntMap) Put

func (mm *IntIntMap) Put(k int, v int) bool

Put adds an item to the current map, replacing any prior value.

func (*IntIntMap) Remove

func (mm *IntIntMap) Remove(k int)

Remove a single item from the map.

func (*IntIntMap) Size

func (mm *IntIntMap) Size() int

Size returns how many items are currently in the map. This is a synonym for Len.

func (*IntIntMap) String

func (mm *IntIntMap) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (*IntIntMap) ToSlice

func (mm *IntIntMap) ToSlice() IntIntTuples

ToSlice returns the key/value pairs as a slice

func (*IntIntMap) Values

func (mm *IntIntMap) Values() []int

Values returns the values of the current map as a slice.

type IntIntTuple

type IntIntTuple struct {
	Key int
	Val int
}

IntIntTuple represents a key/value pair.

func (IntIntTuple) MarshalJSON added in v3.6.0

func (t IntIntTuple) MarshalJSON() ([]byte, error)

MarshalJSON implements encoding.Marshaler interface.

func (IntIntTuple) UnmarshalJSON added in v3.6.0

func (t IntIntTuple) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this tuple type.

type IntIntTuples

type IntIntTuples []IntIntTuple

IntIntTuples can be used as a builder for unmodifiable maps.

func IntIntZip

func IntIntZip(keys ...int) IntIntTuples

IntIntZip is used with the Values method to zip (i.e. interleave) a slice of keys with a slice of values. These can then be passed in to the NewIntIntMap constructor function.

func (IntIntTuples) Append1

func (ts IntIntTuples) Append1(k int, v int) IntIntTuples

Append1 adds one item.

func (IntIntTuples) Append2

func (ts IntIntTuples) Append2(k1 int, v1 int, k2 int, v2 int) IntIntTuples

Append2 adds two items.

func (IntIntTuples) Append3

func (ts IntIntTuples) Append3(k1 int, v1 int, k2 int, v2 int, k3 int, v3 int) IntIntTuples

Append3 adds three items.

func (IntIntTuples) MkString added in v3.6.0

func (ts IntIntTuples) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (IntIntTuples) MkString4 added in v3.7.0

func (ts IntIntTuples) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (IntIntTuples) String added in v3.6.0

func (ts IntIntTuples) String() string

func (IntIntTuples) ToMap added in v3.6.0

func (ts IntIntTuples) ToMap() *IntIntMap

ToMap converts the tuples to a map.

func (IntIntTuples) Values

func (ts IntIntTuples) Values(values ...int) IntIntTuples

Values sets the values in a tuple slice. Use this with IntIntZip.

type IntList

type IntList struct {
	// contains filtered or unexported fields
}

IntList contains a slice of type int. It encapsulates the slice and provides methods to access or mutate it.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildIntListFromChan

func BuildIntListFromChan(source <-chan int) *IntList

BuildIntListFromChan constructs a new IntList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertIntList

func ConvertIntList(values ...interface{}) (*IntList, bool)

ConvertIntList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted. Conversions are provided from all built-in numeric types.

func MakeIntList

func MakeIntList(length, capacity int) *IntList

MakeIntList makes an empty list with both length and capacity initialised.

func NewIntList

func NewIntList(values ...int) *IntList

NewIntList constructs a new list containing the supplied values, if any.

func (*IntList) Add

func (list *IntList) Add(more ...int)

Add adds items to the current list. This is a synonym for Append.

func (*IntList) Append

func (list *IntList) Append(more ...int) *IntList

Append adds items to the current list. If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned.

func (*IntList) Clear

func (list *IntList) Clear()

Clear the entire collection.

func (*IntList) Clone

func (list *IntList) Clone() *IntList

Clone returns a shallow copy of the list. It does not clone the underlying elements.

func (*IntList) Contains

func (list *IntList) Contains(v int) bool

Contains determines whether a given item is already in the list, returning true if so.

func (*IntList) ContainsAll

func (list *IntList) ContainsAll(i ...int) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (*IntList) CountBy

func (list *IntList) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of IntList that return true for the predicate p.

func (*IntList) DistinctBy

func (list *IntList) DistinctBy(equal func(int, int) bool) *IntList

DistinctBy returns a new IntList whose elements are unique, where equality is defined by the equal function.

func (*IntList) DoDeleteAt

func (list *IntList) DoDeleteAt(index, n int) *IntList

DoDeleteAt modifies a IntList by deleting n elements from a given index.

The list is modified and the modified list is returned. Panics if the index is out of range or n is large enough to take the index out of range.

func (*IntList) DoDeleteFirst

func (list *IntList) DoDeleteFirst(n int) *IntList

DoDeleteFirst modifies a IntList by deleting n elements from the start of the list.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if n is large enough to take the index out of range.

func (*IntList) DoDeleteLast

func (list *IntList) DoDeleteLast(n int) *IntList

DoDeleteLast modifies a IntList by deleting n elements from the end of the list.

The list is modified and the modified list is returned. Panics if n is large enough to take the index out of range.

func (*IntList) DoInsertAt

func (list *IntList) DoInsertAt(index int, more ...int) *IntList

DoInsertAt modifies a IntList by inserting elements at a given index. This is a generalised version of Append.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if the index is out of range.

func (*IntList) DoKeepWhere

func (list *IntList) DoKeepWhere(p func(int) bool) *IntList

DoKeepWhere modifies a IntList by retaining only those elements that match the predicate p. This is very similar to Filter but alters the list in place.

The list is modified and the modified list is returned.

func (*IntList) DoReverse

func (list *IntList) DoReverse() *IntList

DoReverse alters a IntList with all elements in the reverse order. Unlike Reverse, it does not allocate new memory.

The list is modified and the modified list is returned.

func (*IntList) DoShuffle

func (list *IntList) DoShuffle() *IntList

DoShuffle returns a shuffled IntList, using a version of the Fisher-Yates shuffle.

The list is modified and the modified list is returned.

func (*IntList) Drop

func (list *IntList) Drop(n int) *IntList

Drop returns a slice of IntList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*IntList) DropLast

func (list *IntList) DropLast(n int) *IntList

DropLast returns a slice of IntList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*IntList) DropWhile

func (list *IntList) DropWhile(p func(int) bool) *IntList

DropWhile returns a new IntList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

The original list is not modified.

func (*IntList) Equals

func (list *IntList) Equals(other *IntList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal. Nil lists are considered to be empty.

func (*IntList) Exists

func (list *IntList) Exists(p func(int) bool) bool

Exists verifies that one or more elements of IntList return true for the predicate p.

func (*IntList) Filter

func (list *IntList) Filter(p func(int) bool) *IntList

Filter returns a new IntList whose elements return true for predicate p.

The original list is not modified. See also DoKeepWhere (which does modify the original list).

func (*IntList) Find

func (list *IntList) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for predicate p. False is returned if none match.

func (*IntList) FlatMap

func (list *IntList) FlatMap(f func(int) []int) *IntList

FlatMap returns a new IntList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntList) FlatMapToInt64

func (list *IntList) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntList) FlatMapToString

func (list *IntList) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntList) Fold added in v3.9.0

func (list *IntList) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (*IntList) Forall

func (list *IntList) Forall(p func(int) bool) bool

Forall verifies that all elements of IntList return true for the predicate p.

func (*IntList) Foreach

func (list *IntList) Foreach(f func(int))

Foreach iterates over IntList and executes function f against each element. The function can safely alter the values via side-effects.

func (*IntList) Get

func (list *IntList) Get(i int) int

Get gets the specified element in the list. Panics if the index is out of range or the list is nil.

func (*IntList) Head

func (list *IntList) Head() int

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (*IntList) HeadOption

func (list *IntList) HeadOption() (int, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (*IntList) IndexWhere

func (list *IntList) IndexWhere(p func(int) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (*IntList) IndexWhere2

func (list *IntList) IndexWhere2(p func(int) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (*IntList) Init

func (list *IntList) Init() *IntList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (*IntList) IsEmpty

func (list *IntList) IsEmpty() bool

IsEmpty tests whether IntList is empty.

func (*IntList) IsSequence

func (list *IntList) IsSequence() bool

IsSequence returns true for lists and queues.

func (*IntList) IsSet

func (list *IntList) IsSet() bool

IsSet returns false for lists or queues.

func (*IntList) Last

func (list *IntList) Last() int

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (*IntList) LastIndexWhere

func (list *IntList) LastIndexWhere(p func(int) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (*IntList) LastIndexWhere2

func (list *IntList) LastIndexWhere2(p func(int) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (*IntList) LastOption

func (list *IntList) LastOption() (int, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (*IntList) Len

func (list *IntList) Len() int

Len returns the number of items in the list - an alias of Size(). This is one of the three methods in the standard sort.Interface.

func (*IntList) Map

func (list *IntList) Map(f func(int) int) *IntList

Map returns a new IntList by transforming every element with function f. The resulting list is the same size as the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntList) MapToInt64

func (list *IntList) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntList) MapToString

func (list *IntList) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (IntList) MarshalJSON

func (list IntList) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this list type.

func (*IntList) Max

func (list *IntList) Max() (result int)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (*IntList) MaxBy

func (list *IntList) MaxBy(less func(int, int) bool) int

MaxBy returns an element of IntList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*IntList) Min

func (list *IntList) Min() int

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (*IntList) MinBy

func (list *IntList) MinBy(less func(int, int) bool) int

MinBy returns an element of IntList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*IntList) MkString

func (list *IntList) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (*IntList) MkString3

func (list *IntList) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (*IntList) NonEmpty

func (list *IntList) NonEmpty() bool

NonEmpty tests whether IntList is empty.

func (*IntList) Partition

func (list *IntList) Partition(p func(int) bool) (*IntList, *IntList)

Partition returns two new IntLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original list is not modified

func (*IntList) Reverse

func (list *IntList) Reverse() *IntList

Reverse returns a copy of IntList with all elements in the reverse order.

The original list is not modified.

func (*IntList) Send

func (list *IntList) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*IntList) Shuffle

func (list *IntList) Shuffle() *IntList

Shuffle returns a shuffled copy of IntList, using a version of the Fisher-Yates shuffle.

The original list is not modified.

func (*IntList) Size

func (list *IntList) Size() int

Size returns the number of items in the list - an alias of Len().

func (*IntList) SortBy

func (list *IntList) SortBy(less func(i, j int) bool) *IntList

SortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned.

func (*IntList) Sorted

func (list *IntList) Sorted() *IntList

Sorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (*IntList) StableSortBy

func (list *IntList) StableSortBy(less func(i, j int) bool) *IntList

StableSortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned. The algorithm keeps the original order of equal elements.

func (*IntList) StableSorted

func (list *IntList) StableSorted() *IntList

StableSorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (*IntList) String

func (list *IntList) String() string

String implements the Stringer interface to render the list as a comma-separated string enclosed in square brackets.

func (*IntList) StringList

func (list *IntList) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (*IntList) Sum

func (list *IntList) Sum() int

Sum returns the sum of all the elements in the list.

func (*IntList) Swap

func (list *IntList) Swap(i, j int)

Swap exchanges two elements, which is necessary during sorting etc. This is one of the three methods in the standard sort.Interface.

func (*IntList) Tail

func (list *IntList) Tail() *IntList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (*IntList) Take

func (list *IntList) Take(n int) *IntList

Take returns a slice of IntList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*IntList) TakeLast

func (list *IntList) TakeLast(n int) *IntList

TakeLast returns a slice of IntList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

The original list is not modified.

func (*IntList) TakeWhile

func (list *IntList) TakeWhile(p func(int) bool) *IntList

TakeWhile returns a new IntList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

The original list is not modified.

func (*IntList) ToInterfaceSlice

func (list *IntList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (*IntList) ToList

func (list *IntList) ToList() *IntList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (*IntList) ToSlice

func (list *IntList) ToSlice() []int

ToSlice returns the elements of the current list as a slice.

func (*IntList) UnmarshalJSON

func (list *IntList) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this list type.

type IntMkStringer

type IntMkStringer interface {
	// String implements the Stringer interface to render the collection as a comma-separated string enclosed
	// in square brackets.
	String() string

	// MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.
	MkString(sep string) string

	// MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.
	MkString3(before, between, after string) string

	// implements json.Marshaler interface {
	MarshalJSON() ([]byte, error)

	// implements json.Unmarshaler interface {
	UnmarshalJSON(b []byte) error

	// StringList gets a collection of strings that depicts all the elements.
	StringList() []string
}

IntMkStringer defines an interface for stringer methods on int collections.

type IntQueue

type IntQueue struct {
	// contains filtered or unexported fields
}

IntQueue is a ring buffer containing a slice of type int. It is optimised for FIFO operations.

func BuildIntQueueFromChan

func BuildIntQueueFromChan(source <-chan int) *IntQueue

BuildIntQueueFromChan constructs a new IntQueue from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func NewIntQueue

func NewIntQueue(capacity int, overwrite bool) *IntQueue

NewIntQueue returns a new queue of int. The behaviour when adding to the queue depends on overwrite. If true, the push operation overwrites oldest values up to the space available, when the queue is full. Otherwise, it refuses to overfill the queue.

func NewIntSortedQueue

func NewIntSortedQueue(capacity int, overwrite bool, less func(i, j int) bool) *IntQueue

NewIntSortedQueue returns a new queue of int. The behaviour when adding to the queue depends on overwrite. If true, the push operation overwrites oldest values up to the space available, when the queue is full. Otherwise, it refuses to overfill the queue. If the 'less' comparison function is not nil, elements can be easily sorted.

func (*IntQueue) Add

func (queue *IntQueue) Add(more ...int)

Add adds items to the queue. This is a synonym for Push.

func (*IntQueue) Cap

func (queue *IntQueue) Cap() int

Cap gets the capacity of this queue.

func (*IntQueue) Clear

func (queue *IntQueue) Clear()

Clear the entire queue.

func (*IntQueue) Clone

func (queue *IntQueue) Clone() *IntQueue

Clone returns a shallow copy of the queue. It does not clone the underlying elements.

func (*IntQueue) CountBy

func (queue *IntQueue) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of IntQueue that return true for the predicate p.

func (*IntQueue) DoKeepWhere

func (queue *IntQueue) DoKeepWhere(p func(int) bool) *IntQueue

DoKeepWhere modifies a IntQueue by retaining only those elements that match the predicate p. This is very similar to Filter but alters the queue in place.

The queue is modified and the modified queue is returned.

func (*IntQueue) Exists

func (queue *IntQueue) Exists(p func(int) bool) bool

Exists verifies that one or more elements of IntQueue return true for the predicate p. The function should not alter the values via side-effects.

func (*IntQueue) Filter

func (queue *IntQueue) Filter(p func(int) bool) *IntQueue

Filter returns a new IntQueue whose elements return true for predicate p.

The original queue is not modified. See also DoKeepWhere (which does modify the original queue).

func (*IntQueue) Find

func (queue *IntQueue) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for predicate p. False is returned if none match.

func (*IntQueue) FlatMap

func (queue *IntQueue) FlatMap(f func(int) []int) *IntQueue

FlatMap returns a new IntQueue by transforming every element with function f that returns zero or more items in a slice. The resulting queue may have a different size to the original queue. The original queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntQueue) FlatMapToInt64

func (queue *IntQueue) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntQueue) FlatMapToString

func (queue *IntQueue) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntQueue) Fold added in v3.9.0

func (queue *IntQueue) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the queue using a supplied function, starting from some initial value.

func (*IntQueue) Forall

func (queue *IntQueue) Forall(p func(int) bool) bool

Forall verifies that all elements of IntQueue return true for the predicate p. The function should not alter the values via side-effects.

func (*IntQueue) Foreach

func (queue *IntQueue) Foreach(f func(int))

Foreach iterates over IntQueue and executes function f against each element. The function can safely alter the values via side-effects.

func (*IntQueue) Get

func (queue *IntQueue) Get(i int) int

Get gets the specified element in the queue. Panics if the index is out of range or the queue is nil.

func (*IntQueue) Head

func (queue *IntQueue) Head() int

Head gets the first element in the queue. Head is the opposite of Last. Panics if queue is empty or nil.

func (*IntQueue) HeadOption

func (queue *IntQueue) HeadOption() (int, bool)

HeadOption returns the oldest item in the queue without removing it. If the queue is nil or empty, it returns the zero value instead.

func (*IntQueue) IsEmpty

func (queue *IntQueue) IsEmpty() bool

IsEmpty returns true if the queue is empty.

func (*IntQueue) IsFull

func (queue *IntQueue) IsFull() bool

IsFull returns true if the queue is full.

func (*IntQueue) IsOverwriting

func (queue *IntQueue) IsOverwriting() bool

IsOverwriting returns true if the queue is overwriting, false if refusing.

func (*IntQueue) IsSequence

func (queue *IntQueue) IsSequence() bool

IsSequence returns true for ordered lists and queues.

func (*IntQueue) IsSet

func (queue *IntQueue) IsSet() bool

IsSet returns false for lists or queues.

func (*IntQueue) Last

func (queue *IntQueue) Last() int

Last gets the the newest item in the queue (i.e. last element pushed) without removing it. Last is the opposite of Head. Panics if queue is empty or nil.

func (*IntQueue) LastOption

func (queue *IntQueue) LastOption() (int, bool)

LastOption returns the newest item in the queue without removing it. If the queue is nil empty, it returns the zero value instead.

func (*IntQueue) Len

func (queue *IntQueue) Len() int

Len gets the current length of this queue. This is an alias for Size.

func (*IntQueue) Less

func (queue *IntQueue) Less(i, j int) bool

Less reports whether the element with index i should sort before the element with index j. The queue must have been created with a non-nil 'less' comparison function and it must not be empty.

func (*IntQueue) Map

func (queue *IntQueue) Map(f func(int) int) *IntQueue

Map returns a new IntQueue by transforming every element with function f. The resulting queue is the same size as the original queue. The original queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntQueue) MapToInt64

func (queue *IntQueue) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntQueue) MapToString

func (queue *IntQueue) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the queue. The queue is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntQueue) MaxBy

func (queue *IntQueue) MaxBy(less func(int, int) bool) int

MaxBy returns an element of IntQueue containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*IntQueue) MinBy

func (queue *IntQueue) MinBy(less func(int, int) bool) int

MinBy returns an element of IntQueue containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*IntQueue) NonEmpty

func (queue *IntQueue) NonEmpty() bool

NonEmpty returns true if the queue is not empty.

func (*IntQueue) Offer

func (queue *IntQueue) Offer(items ...int) []int

Offer appends as many items to the end of the queue as it can. If the queue is already full, what happens depends on whether the queue is configured to overwrite. If it is, the oldest items will be overwritten. Otherwise, it will be filled to capacity and any unwritten items are returned.

If the capacity is too small for the number of items, the excess items are returned. The queue capacity is never altered.

func (*IntQueue) Partition

func (queue *IntQueue) Partition(p func(int) bool) (*IntQueue, *IntQueue)

Partition returns two new IntQueues whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original queue.

The original queue is not modified

func (*IntQueue) Pop

func (queue *IntQueue) Pop(n int) []int

Pop removes and returns the oldest items from the queue. If the queue is empty, it returns a nil slice. If n is larger than the current queue length, it returns all the available elements, so in this case the returned slice will be shorter than n.

func (*IntQueue) Pop1

func (queue *IntQueue) Pop1() (int, bool)

Pop1 removes and returns the oldest item from the queue. If the queue is empty, it returns the zero value instead. The boolean is true only if the element was available.

func (*IntQueue) Push

func (queue *IntQueue) Push(items ...int) *IntQueue

Push appends items to the end of the queue. If the queue does not have enough space, more will be allocated: how this happens depends on the overwriting mode.

When overwriting, the oldest items are overwritten with the new data; it expands the queue only if there is still not enough space.

Otherwise, the queue might be reallocated if necessary, ensuring that all the data is pushed without any older items being affected.

The modified queue is returned.

func (*IntQueue) Reallocate

func (queue *IntQueue) Reallocate(capacity int, overwrite bool) *IntQueue

Reallocate adjusts the allocated capacity of the queue and allows the overwriting behaviour to be changed.

If the new queue capacity is different to the current capacity, the queue is re-allocated to the new capacity. If this is less than the current number of elements, the oldest items in the queue are discarded so that the remaining data can fit in the new space available.

If the new queue capacity is the same as the current capacity, the queue is not altered except for adopting the new overwrite flag's value. Therefore this is the means to change the overwriting behaviour.

Reallocate adjusts the storage space but does not clone the underlying elements.

The queue must not be nil.

func (*IntQueue) Send

func (queue *IntQueue) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*IntQueue) Size

func (queue *IntQueue) Size() int

Size gets the number of elements currently in this queue. This is an alias for Len.

func (*IntQueue) Sort

func (queue *IntQueue) Sort()

Sort sorts the queue using the 'less' comparison function, which must not be nil. This function will panic if the collection was created with a nil 'less' function (see NewIntSortedQueue).

func (*IntQueue) Space

func (queue *IntQueue) Space() int

Space returns the space available in the queue.

func (*IntQueue) StableSort

func (queue *IntQueue) StableSort()

StableSort sorts the queue using the 'less' comparison function, which must not be nil. The result is stable so that repeated calls will not arbitrarily swap equal items. This function will panic if the collection was created with a nil 'less' function (see NewIntSortedQueue).

func (*IntQueue) Swap

func (queue *IntQueue) Swap(i, j int)

Swap swaps the elements with indexes i and j. The queue must not be empty.

func (*IntQueue) ToInterfaceSlice

func (queue *IntQueue) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the queue as a slice of arbitrary type. The queue is not altered.

func (*IntQueue) ToSlice

func (queue *IntQueue) ToSlice() []int

ToSlice returns the elements of the queue as a slice. The queue is not altered.

type IntSequence added in v3.9.0

type IntSequence interface {
	IntCollection

	// Head gets the first element in the sequence. Head plus Tail include the whole sequence. Head is the opposite of Last.
	Head() int

	// HeadOption gets the first element in the sequence, if possible.
	HeadOption() (int, bool)

	// Last gets the last element in the sequence. Init plus Last include the whole sequence. Last is the opposite of Head.
	Last() int

	// LastOption gets the last element in the sequence, if possible.
	LastOption() (int, bool)
}

IntSequence defines an interface for sequence methods on int.

type IntSet

type IntSet struct {
	// contains filtered or unexported fields
}

IntSet is the primary type that represents a set.

func BuildIntSetFromChan

func BuildIntSetFromChan(source <-chan int) *IntSet

BuildIntSetFromChan constructs a new IntSet from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertIntSet

func ConvertIntSet(values ...interface{}) (*IntSet, bool)

ConvertIntSet constructs a new set containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned set will contain all the values that were correctly converted.

func NewIntSet

func NewIntSet(values ...int) *IntSet

NewIntSet creates and returns a reference to an empty set.

func (*IntSet) Add

func (set *IntSet) Add(more ...int)

Add adds items to the current set.

func (*IntSet) Cardinality

func (set *IntSet) Cardinality() int

Cardinality returns how many items are currently in the set. This is a synonym for Size.

func (*IntSet) Clear

func (set *IntSet) Clear()

Clear the entire set. Aterwards, it will be an empty set.

func (*IntSet) Clone

func (set *IntSet) Clone() *IntSet

Clone returns a shallow copy of the set. It does not clone the underlying elements.

func (*IntSet) Contains

func (set *IntSet) Contains(i int) bool

Contains determines whether a given item is already in the set, returning true if so.

func (*IntSet) ContainsAll

func (set *IntSet) ContainsAll(i ...int) bool

ContainsAll determines whether the given items are all in the set, returning true if so.

func (*IntSet) CountBy

func (set *IntSet) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of IntSet that return true for the predicate p.

func (*IntSet) Difference

func (set *IntSet) Difference(other *IntSet) *IntSet

Difference returns a new set with items in the current set but not in the other set

func (*IntSet) Equals

func (set *IntSet) Equals(other *IntSet) bool

Equals determines whether two sets are equal to each other, returning true if so. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.

func (*IntSet) Exists

func (set *IntSet) Exists(p func(int) bool) bool

Exists applies a predicate p to every element in the set. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*IntSet) Filter

func (set *IntSet) Filter(p func(int) bool) *IntSet

Filter returns a new IntSet whose elements return true for the predicate p.

The original set is not modified

func (*IntSet) Find

func (set *IntSet) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for the predicate p. If there are many matches one is arbtrarily chosen. False is returned if none match.

func (*IntSet) FlatMap

func (set *IntSet) FlatMap(f func(int) []int) *IntSet

FlatMap returns a new IntSet by transforming every element with a function f that returns zero or more items in a slice. The resulting set may have a different size to the original set. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntSet) FlatMapToInt64

func (set *IntSet) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntSet) FlatMapToString

func (set *IntSet) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntSet) Fold added in v3.9.0

func (set *IntSet) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the set using a supplied function, starting from some initial value.

func (*IntSet) Forall

func (set *IntSet) Forall(p func(int) bool) bool

Forall applies a predicate function p to every element in the set. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*IntSet) Foreach

func (set *IntSet) Foreach(f func(int))

Foreach iterates over the set and executes the function f against each element. The function can safely alter the values via side-effects.

func (*IntSet) Intersect

func (set *IntSet) Intersect(other *IntSet) *IntSet

Intersect returns a new set with items that exist only in both sets.

func (*IntSet) IsEmpty

func (set *IntSet) IsEmpty() bool

IsEmpty returns true if the set is empty.

func (*IntSet) IsSequence

func (set *IntSet) IsSequence() bool

IsSequence returns true for lists and queues.

func (*IntSet) IsSet

func (set *IntSet) IsSet() bool

IsSet returns false for lists or queues.

func (*IntSet) IsSubset

func (set *IntSet) IsSubset(other *IntSet) bool

IsSubset determines whether every item in the other set is in this set, returning true if so.

func (*IntSet) IsSuperset

func (set *IntSet) IsSuperset(other *IntSet) bool

IsSuperset determines whether every item of this set is in the other set, returning true if so.

func (*IntSet) Map

func (set *IntSet) Map(f func(int) int) *IntSet

Map returns a new IntSet by transforming every element with a function f. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntSet) MapToInt64

func (set *IntSet) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntSet) MapToString

func (set *IntSet) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*IntSet) MarshalJSON

func (set *IntSet) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this set type.

func (*IntSet) Max

func (set *IntSet) Max() (result int)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (*IntSet) MaxBy

func (set *IntSet) MaxBy(less func(int, int) bool) int

MaxBy returns an element of IntSet containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*IntSet) Min

func (set *IntSet) Min() int

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (*IntSet) MinBy

func (set *IntSet) MinBy(less func(int, int) bool) int

MinBy returns an element of IntSet containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*IntSet) MkString

func (set *IntSet) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (*IntSet) MkString3

func (set *IntSet) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (*IntSet) NonEmpty

func (set *IntSet) NonEmpty() bool

NonEmpty returns true if the set is not empty.

func (*IntSet) Partition

func (set *IntSet) Partition(p func(int) bool) (*IntSet, *IntSet)

Partition returns two new IntSets whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original set is not modified

func (*IntSet) Remove

func (set *IntSet) Remove(i int)

Remove a single item from the set.

func (*IntSet) Send

func (set *IntSet) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed

func (*IntSet) Size

func (set *IntSet) Size() int

Size returns how many items are currently in the set. This is a synonym for Cardinality.

func (*IntSet) String

func (set *IntSet) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (*IntSet) StringList

func (set *IntSet) StringList() []string

StringSet gets a list of strings that depicts all the elements.

func (*IntSet) StringMap

func (set *IntSet) StringMap() map[string]bool

StringMap renders the set as a map of strings. The value of each item in the set becomes stringified as a key in the resulting map.

func (*IntSet) Sum

func (set *IntSet) Sum() int

Sum returns the sum of all the elements in the set.

func (*IntSet) SymmetricDifference

func (set *IntSet) SymmetricDifference(other *IntSet) *IntSet

SymmetricDifference returns a new set with items in the current set or the other set but not in both.

func (*IntSet) ToInterfaceSlice

func (set *IntSet) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current set as a slice of arbitrary type.

func (*IntSet) ToSet

func (set *IntSet) ToSet() *IntSet

ToSet returns the set; this is an identity operation in this case.

func (*IntSet) ToSlice

func (set *IntSet) ToSlice() []int

ToSlice returns the elements of the current set as a slice.

func (*IntSet) Union

func (set *IntSet) Union(other *IntSet) *IntSet

Union returns a new set with all items in both sets.

func (*IntSet) UnmarshalJSON

func (set *IntSet) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this set type.

type IntSizer

type IntSizer interface {
	// IsEmpty tests whether IntCollection is empty.
	IsEmpty() bool

	// NonEmpty tests whether IntCollection is empty.
	NonEmpty() bool

	// Size returns the number of items in the collection - an alias of Len().
	Size() int
}

IntSizer defines an interface for sizing methods on int collections.

type SimpleAppleList

type SimpleAppleList []Apple

SimpleAppleList is a slice of type Apple. Use it where you would use []Apple. To add items to the list, simply use the normal built-in append function.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildSimpleAppleListFromChan

func BuildSimpleAppleListFromChan(source <-chan Apple) SimpleAppleList

BuildSimpleAppleListFromChan constructs a new SimpleAppleList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertSimpleAppleList

func ConvertSimpleAppleList(values ...interface{}) (SimpleAppleList, bool)

ConvertSimpleAppleList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted.

func MakeSimpleAppleList

func MakeSimpleAppleList(length, capacity int) SimpleAppleList

MakeSimpleAppleList makes an empty list with both length and capacity initialised.

func NewSimpleAppleList

func NewSimpleAppleList(values ...Apple) SimpleAppleList

NewSimpleAppleList constructs a new list containing the supplied values, if any.

func (SimpleAppleList) Clone

func (list SimpleAppleList) Clone() SimpleAppleList

Clone returns a shallow copy of the list. It does not clone the underlying elements.

func (SimpleAppleList) Contains

func (list SimpleAppleList) Contains(v Apple) bool

Contains determines whether a given item is already in the list, returning true if so.

func (SimpleAppleList) ContainsAll

func (list SimpleAppleList) ContainsAll(i ...Apple) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (SimpleAppleList) CountBy

func (list SimpleAppleList) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of SimpleAppleList that return true for the predicate p.

func (SimpleAppleList) DistinctBy

func (list SimpleAppleList) DistinctBy(equal func(Apple, Apple) bool) SimpleAppleList

DistinctBy returns a new SimpleAppleList whose elements are unique, where equality is defined by the equal function.

func (SimpleAppleList) DoReverse

func (list SimpleAppleList) DoReverse() SimpleAppleList

DoReverse alters a SimpleAppleList with all elements in the reverse order. Unlike Reverse, it does not allocate new memory.

The list is modified and the modified list is returned.

func (SimpleAppleList) DoShuffle

func (list SimpleAppleList) DoShuffle() SimpleAppleList

DoShuffle returns a shuffled SimpleAppleList, using a version of the Fisher-Yates shuffle.

The list is modified and the modified list is returned.

func (SimpleAppleList) Drop

func (list SimpleAppleList) Drop(n int) SimpleAppleList

Drop returns a slice of SimpleAppleList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (SimpleAppleList) DropLast

func (list SimpleAppleList) DropLast(n int) SimpleAppleList

DropLast returns a slice of SimpleAppleList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (SimpleAppleList) DropWhile

func (list SimpleAppleList) DropWhile(p func(Apple) bool) SimpleAppleList

DropWhile returns a new SimpleAppleList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

The original list is not modified.

func (SimpleAppleList) Equals

func (list SimpleAppleList) Equals(other SimpleAppleList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal.

func (SimpleAppleList) Exists

func (list SimpleAppleList) Exists(p func(Apple) bool) bool

Exists verifies that one or more elements of SimpleAppleList return true for the predicate p.

func (SimpleAppleList) Filter

func (list SimpleAppleList) Filter(p func(Apple) bool) SimpleAppleList

Filter returns a new SimpleAppleList whose elements return true for predicate p.

The original list is not modified.

func (SimpleAppleList) Find

func (list SimpleAppleList) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for predicate p. False is returned if none match.

func (SimpleAppleList) FlatMap

func (list SimpleAppleList) FlatMap(f func(Apple) []Apple) SimpleAppleList

FlatMap returns a new SimpleAppleList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleAppleList) FlatMapToString added in v3.5.0

func (list SimpleAppleList) FlatMapToString(f func(Apple) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleAppleList) Fold added in v3.9.0

func (list SimpleAppleList) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (SimpleAppleList) Forall

func (list SimpleAppleList) Forall(p func(Apple) bool) bool

Forall verifies that all elements of SimpleAppleList return true for the predicate p.

func (SimpleAppleList) Foreach

func (list SimpleAppleList) Foreach(f func(Apple))

Foreach iterates over SimpleAppleList and executes function f against each element.

func (SimpleAppleList) Get

func (list SimpleAppleList) Get(i int) Apple

Get gets the specified element in the list. Panics if the index is out of range or the list is nil. The simple list is a dressed-up slice and normal slice operations will also work.

func (SimpleAppleList) Head

func (list SimpleAppleList) Head() Apple

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (SimpleAppleList) HeadOption

func (list SimpleAppleList) HeadOption() (Apple, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (SimpleAppleList) IndexWhere

func (list SimpleAppleList) IndexWhere(p func(Apple) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (SimpleAppleList) IndexWhere2

func (list SimpleAppleList) IndexWhere2(p func(Apple) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (SimpleAppleList) Init

func (list SimpleAppleList) Init() SimpleAppleList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (SimpleAppleList) IsEmpty

func (list SimpleAppleList) IsEmpty() bool

IsEmpty tests whether SimpleAppleList is empty.

func (SimpleAppleList) IsSequence

func (list SimpleAppleList) IsSequence() bool

IsSequence returns true for lists and queues.

func (SimpleAppleList) IsSet

func (list SimpleAppleList) IsSet() bool

IsSet returns false for lists or queues.

func (SimpleAppleList) Last

func (list SimpleAppleList) Last() Apple

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (SimpleAppleList) LastIndexWhere

func (list SimpleAppleList) LastIndexWhere(p func(Apple) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (SimpleAppleList) LastIndexWhere2

func (list SimpleAppleList) LastIndexWhere2(p func(Apple) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (SimpleAppleList) LastOption

func (list SimpleAppleList) LastOption() (Apple, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (SimpleAppleList) Len

func (list SimpleAppleList) Len() int

Len returns the number of items in the list - an alias of Size(). This is one of the three methods in the standard sort.Interface.

func (SimpleAppleList) Map

func (list SimpleAppleList) Map(f func(Apple) Apple) SimpleAppleList

Map returns a new SimpleAppleList by transforming every element with function f. The resulting list is the same size as the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleAppleList) MapToString added in v3.5.0

func (list SimpleAppleList) MapToString(f func(Apple) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleAppleList) MaxBy

func (list SimpleAppleList) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of SimpleAppleList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (SimpleAppleList) MinBy

func (list SimpleAppleList) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of SimpleAppleList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (SimpleAppleList) NonEmpty

func (list SimpleAppleList) NonEmpty() bool

NonEmpty tests whether SimpleAppleList is empty.

func (SimpleAppleList) Partition

func (list SimpleAppleList) Partition(p func(Apple) bool) (SimpleAppleList, SimpleAppleList)

Partition returns two new AppleLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original list is not modified.

func (SimpleAppleList) Reverse

func (list SimpleAppleList) Reverse() SimpleAppleList

Reverse returns a copy of SimpleAppleList with all elements in the reverse order.

The original list is not modified.

func (SimpleAppleList) Send

func (list SimpleAppleList) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (SimpleAppleList) Shuffle

func (list SimpleAppleList) Shuffle() SimpleAppleList

Shuffle returns a shuffled copy of SimpleAppleList, using a version of the Fisher-Yates shuffle.

The original list is not modified.

func (SimpleAppleList) Size

func (list SimpleAppleList) Size() int

Size returns the number of items in the list - an alias of Len().

func (SimpleAppleList) SortBy

func (list SimpleAppleList) SortBy(less func(i, j Apple) bool) SimpleAppleList

SortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned.

func (SimpleAppleList) StableSortBy

func (list SimpleAppleList) StableSortBy(less func(i, j Apple) bool) SimpleAppleList

StableSortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned. The algorithm keeps the original order of equal elements.

func (SimpleAppleList) Swap

func (list SimpleAppleList) Swap(i, j int)

Swap exchanges two elements, which is necessary during sorting etc. This is one of the three methods in the standard sort.Interface.

func (SimpleAppleList) Tail

func (list SimpleAppleList) Tail() SimpleAppleList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (SimpleAppleList) Take

func (list SimpleAppleList) Take(n int) SimpleAppleList

Take returns a slice of SimpleAppleList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (SimpleAppleList) TakeLast

func (list SimpleAppleList) TakeLast(n int) SimpleAppleList

TakeLast returns a slice of SimpleAppleList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

The original list is not modified.

func (SimpleAppleList) TakeWhile

func (list SimpleAppleList) TakeWhile(p func(Apple) bool) SimpleAppleList

TakeWhile returns a new SimpleAppleList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

The original list is not modified.

func (SimpleAppleList) ToInterfaceSlice

func (list SimpleAppleList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (SimpleAppleList) ToList

func (list SimpleAppleList) ToList() SimpleAppleList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (SimpleAppleList) ToSlice

func (list SimpleAppleList) ToSlice() []Apple

ToSlice returns the elements of the list as a slice, which is an identity operation in this case, because the simple list is merely a dressed-up slice.

type SimpleAppleSet

type SimpleAppleSet map[Apple]struct{}

SimpleAppleSet is the primary type that represents a set

func BuildSimpleAppleSetFromChan

func BuildSimpleAppleSetFromChan(source <-chan Apple) SimpleAppleSet

BuildSimpleAppleSetFromChan constructs a new SimpleAppleSet from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertSimpleAppleSet

func ConvertSimpleAppleSet(values ...interface{}) (SimpleAppleSet, bool)

ConvertSimpleAppleSet constructs a new set containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned set will contain all the values that were correctly converted.

func NewSimpleAppleSet

func NewSimpleAppleSet(values ...Apple) SimpleAppleSet

NewSimpleAppleSet creates and returns a reference to an empty set.

func (SimpleAppleSet) Add

func (set SimpleAppleSet) Add(more ...Apple) SimpleAppleSet

Add adds items to the current set, returning the modified set.

func (SimpleAppleSet) Append

func (set SimpleAppleSet) Append(more ...Apple) SimpleAppleSet

Append inserts more items into a clone of the set. It returns the augmented set. The original set is unmodified.

func (SimpleAppleSet) Cardinality

func (set SimpleAppleSet) Cardinality() int

Cardinality returns how many items are currently in the set. This is a synonym for Size.

func (*SimpleAppleSet) Clear

func (set *SimpleAppleSet) Clear()

Clear the entire set. Aterwards, it will be an empty set.

func (SimpleAppleSet) Clone

func (set SimpleAppleSet) Clone() SimpleAppleSet

Clone returns a shallow copy of the set. It does not clone the underlying elements.

func (SimpleAppleSet) Contains

func (set SimpleAppleSet) Contains(i Apple) bool

Contains determines whether a given item is already in the set, returning true if so.

func (SimpleAppleSet) ContainsAll

func (set SimpleAppleSet) ContainsAll(i ...Apple) bool

ContainsAll determines whether a given item is already in the set, returning true if so.

func (SimpleAppleSet) CountBy

func (set SimpleAppleSet) CountBy(p func(Apple) bool) (result int)

CountBy gives the number elements of SimpleAppleSet that return true for the predicate p.

func (SimpleAppleSet) Difference

func (set SimpleAppleSet) Difference(other SimpleAppleSet) SimpleAppleSet

Difference returns a new set with items in the current set but not in the other set

func (SimpleAppleSet) Equals

func (set SimpleAppleSet) Equals(other SimpleAppleSet) bool

Equals determines whether two sets are equal to each other, returning true if so. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.

func (SimpleAppleSet) Exists

func (set SimpleAppleSet) Exists(p func(Apple) bool) bool

Exists applies a predicate p to every element in the set. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (SimpleAppleSet) Filter

func (set SimpleAppleSet) Filter(p func(Apple) bool) SimpleAppleSet

Filter returns a new SimpleAppleSet whose elements return true for the predicate p.

The original set is not modified

func (SimpleAppleSet) Find

func (set SimpleAppleSet) Find(p func(Apple) bool) (Apple, bool)

Find returns the first Apple that returns true for the predicate p. If there are many matches one is arbtrarily chosen. False is returned if none match.

func (SimpleAppleSet) FlatMap

func (set SimpleAppleSet) FlatMap(f func(Apple) []Apple) SimpleAppleSet

FlatMap returns a new SimpleAppleSet by transforming every element with a function f that returns zero or more items in a slice. The resulting set may have a different size to the original set. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleAppleSet) FlatMapToString

func (set SimpleAppleSet) FlatMapToString(f func(Apple) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleAppleSet) Fold added in v3.9.0

func (set SimpleAppleSet) Fold(initial Apple, fn func(Apple, Apple) Apple) Apple

Fold aggregates all the values in the set using a supplied function, starting from some initial value.

func (SimpleAppleSet) Forall

func (set SimpleAppleSet) Forall(p func(Apple) bool) bool

Forall applies a predicate function p to every element in the set. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (SimpleAppleSet) Foreach

func (set SimpleAppleSet) Foreach(f func(Apple))

Foreach iterates over the set and executes the function f against each element.

func (SimpleAppleSet) Intersect

func (set SimpleAppleSet) Intersect(other SimpleAppleSet) SimpleAppleSet

Intersect returns a new set with items that exist only in both sets.

func (SimpleAppleSet) IsEmpty

func (set SimpleAppleSet) IsEmpty() bool

IsEmpty returns true if the set is empty.

func (SimpleAppleSet) IsSequence

func (set SimpleAppleSet) IsSequence() bool

IsSequence returns true for lists and queues.

func (SimpleAppleSet) IsSet

func (set SimpleAppleSet) IsSet() bool

IsSet returns false for lists or queues.

func (SimpleAppleSet) IsSubset

func (set SimpleAppleSet) IsSubset(other SimpleAppleSet) bool

IsSubset determines whether every item in the other set is in this set, returning true if so.

func (SimpleAppleSet) IsSuperset

func (set SimpleAppleSet) IsSuperset(other SimpleAppleSet) bool

IsSuperset determines whether every item of this set is in the other set, returning true if so.

func (SimpleAppleSet) Map

func (set SimpleAppleSet) Map(f func(Apple) Apple) SimpleAppleSet

Map returns a new SimpleAppleSet by transforming every element with a function f. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleAppleSet) MapToString

func (set SimpleAppleSet) MapToString(f func(Apple) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleAppleSet) MaxBy

func (set SimpleAppleSet) MaxBy(less func(Apple, Apple) bool) Apple

MaxBy returns an element of SimpleAppleSet containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (SimpleAppleSet) MinBy

func (set SimpleAppleSet) MinBy(less func(Apple, Apple) bool) Apple

MinBy returns an element of SimpleAppleSet containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (SimpleAppleSet) NonEmpty

func (set SimpleAppleSet) NonEmpty() bool

NonEmpty returns true if the set is not empty.

func (SimpleAppleSet) Partition

func (set SimpleAppleSet) Partition(p func(Apple) bool) (SimpleAppleSet, SimpleAppleSet)

Partition returns two new SimpleAppleSets whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't.

The original set is not modified

func (SimpleAppleSet) Remove

func (set SimpleAppleSet) Remove(i Apple)

Remove a single item from the set.

func (SimpleAppleSet) Send

func (set SimpleAppleSet) Send() <-chan Apple

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed

func (SimpleAppleSet) Size

func (set SimpleAppleSet) Size() int

Size returns how many items are currently in the set. This is a synonym for Cardinality.

func (SimpleAppleSet) SymmetricDifference

func (set SimpleAppleSet) SymmetricDifference(other SimpleAppleSet) SimpleAppleSet

SymmetricDifference returns a new set with items in the current set or the other set but not in both.

func (SimpleAppleSet) ToInterfaceSlice

func (set SimpleAppleSet) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current set as a slice of arbitrary type.

func (SimpleAppleSet) ToSet

func (set SimpleAppleSet) ToSet() SimpleAppleSet

ToSet returns the set; this is an identity operation in this case.

func (SimpleAppleSet) ToSlice

func (set SimpleAppleSet) ToSlice() []Apple

ToSlice returns the elements of the current set as a slice.

func (SimpleAppleSet) Union

func (set SimpleAppleSet) Union(other SimpleAppleSet) SimpleAppleSet

Union returns a new set with all items in both sets.

type SimpleIntIntMap

type SimpleIntIntMap map[int]int

SimpleIntIntMap is the primary type that represents a map

func NewSimpleIntIntMap

func NewSimpleIntIntMap(kv ...SimpleIntIntTuple) SimpleIntIntMap

NewSimpleIntIntMap creates and returns a reference to a map, optionally containing some items.

func NewSimpleIntIntMap1

func NewSimpleIntIntMap1(k int, v int) SimpleIntIntMap

NewSimpleIntIntMap1 creates and returns a reference to a map containing one item.

func (*SimpleIntIntMap) Clear

func (mm *SimpleIntIntMap) Clear()

Clear clears the entire map.

func (SimpleIntIntMap) Clone

func (mm SimpleIntIntMap) Clone() SimpleIntIntMap

Clone returns a shallow copy of the map. It does not clone the underlying elements.

func (SimpleIntIntMap) ContainsAllKeys

func (mm SimpleIntIntMap) ContainsAllKeys(kk ...int) bool

ContainsAllKeys determines if the given items are all in the map.

func (SimpleIntIntMap) ContainsKey

func (mm SimpleIntIntMap) ContainsKey(k int) bool

ContainsKey determines if a given item is already in the map.

func (SimpleIntIntMap) DropWhere

func (mm SimpleIntIntMap) DropWhere(fn func(int, int) bool) SimpleIntIntTuples

DropWhere applies a predicate function to every element in the map. If the function returns true, the element is dropped from the map. This is similar to Filter except that the map is modified.

func (SimpleIntIntMap) Equals

func (mm SimpleIntIntMap) Equals(other SimpleIntIntMap) bool

Equals determines if two maps are equal to each other. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for maps to be equal.

func (SimpleIntIntMap) Exists

func (mm SimpleIntIntMap) Exists(p func(int, int) bool) bool

Exists applies the predicate p to every element in the map. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (SimpleIntIntMap) Filter

func (mm SimpleIntIntMap) Filter(p func(int, int) bool) SimpleIntIntMap

Filter applies the predicate p to every element in the map and returns a copied map containing only the elements for which the predicate returned true. The original map is not modified.

func (SimpleIntIntMap) Find

func (mm SimpleIntIntMap) Find(p func(int, int) bool) (SimpleIntIntTuple, bool)

Find returns the first int that returns true for the predicate p. False is returned if none match. The original map is not modified.

func (SimpleIntIntMap) FlatMap

func (mm SimpleIntIntMap) FlatMap(f func(int, int) []SimpleIntIntTuple) SimpleIntIntMap

FlatMap returns a new SimpleIntMap by transforming every element with the function f that returns zero or more items in a slice. The resulting map may have a different size to the original map. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntIntMap) Forall

func (mm SimpleIntIntMap) Forall(p func(int, int) bool) bool

Forall applies the predicate p to every element in the map. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (SimpleIntIntMap) Foreach

func (mm SimpleIntIntMap) Foreach(f func(int, int))

Foreach applies the function f to every element in the map. The function can safely alter the values via side-effects.

func (SimpleIntIntMap) Get

func (mm SimpleIntIntMap) Get(k int) (int, bool)

Get returns one of the items in the map, if present.

func (SimpleIntIntMap) IsEmpty

func (mm SimpleIntIntMap) IsEmpty() bool

IsEmpty returns true if the map is empty.

func (SimpleIntIntMap) Keys

func (mm SimpleIntIntMap) Keys() []int

Keys returns the keys of the current map as a slice.

func (SimpleIntIntMap) Map

func (mm SimpleIntIntMap) Map(f func(int, int) (int, int)) SimpleIntIntMap

Map returns a new SimpleIntMap by transforming every element with the function f. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntIntMap) MkString

func (mm SimpleIntIntMap) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (SimpleIntIntMap) MkString4 added in v3.7.0

func (mm SimpleIntIntMap) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (SimpleIntIntMap) NonEmpty

func (mm SimpleIntIntMap) NonEmpty() bool

NonEmpty returns true if the map is not empty.

func (SimpleIntIntMap) OrderedSlice added in v3.6.0

func (mm SimpleIntIntMap) OrderedSlice(keys []int) SimpleIntIntTuples

OrderedSlice returns the key/value pairs as a slice in the order specified by keys.

func (SimpleIntIntMap) Partition

func (mm SimpleIntIntMap) Partition(p func(int, int) bool) (matching SimpleIntIntMap, others SimpleIntIntMap)

Partition applies the predicate p to every element in the map. It divides the map into two copied maps, the first containing all the elements for which the predicate returned true, and the second containing all the others. The original map is not modified.

func (SimpleIntIntMap) Pop

func (mm SimpleIntIntMap) Pop(k int) (int, bool)

Pop removes a single item from the map, returning the value present prior to removal.

func (SimpleIntIntMap) Put

func (mm SimpleIntIntMap) Put(k int, v int) bool

Put adds an item to the current map, replacing any prior value.

func (SimpleIntIntMap) Remove

func (mm SimpleIntIntMap) Remove(k int)

Remove a single item from the map.

func (SimpleIntIntMap) Size

func (mm SimpleIntIntMap) Size() int

Size returns how many items are currently in the map. This is a synonym for Len.

func (SimpleIntIntMap) String

func (mm SimpleIntIntMap) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (SimpleIntIntMap) ToSlice

func (mm SimpleIntIntMap) ToSlice() SimpleIntIntTuples

ToSlice returns the key/value pairs as a slice.

func (SimpleIntIntMap) Values

func (mm SimpleIntIntMap) Values() []int

Values returns the values of the current map as a slice.

type SimpleIntIntTuple

type SimpleIntIntTuple struct {
	Key int
	Val int
}

SimpleIntIntTuple represents a key/value pair.

func (SimpleIntIntTuple) MarshalJSON added in v3.6.0

func (t SimpleIntIntTuple) MarshalJSON() ([]byte, error)

MarshalJSON implements encoding.Marshaler interface.

func (SimpleIntIntTuple) UnmarshalJSON added in v3.6.0

func (t SimpleIntIntTuple) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this tuple type.

type SimpleIntIntTuples

type SimpleIntIntTuples []SimpleIntIntTuple

SimpleIntIntTuples can be used as a builder for unmodifiable maps.

func SimpleIntIntZip

func SimpleIntIntZip(keys ...int) SimpleIntIntTuples

SimpleIntIntZip is used with the Values method to zip (i.e. interleave) a slice of keys with a slice of values. These can then be passed in to the NewSimpleIntIntMap constructor function.

func (SimpleIntIntTuples) Append1

func (ts SimpleIntIntTuples) Append1(k int, v int) SimpleIntIntTuples

Append1 adds one item.

func (SimpleIntIntTuples) Append2

func (ts SimpleIntIntTuples) Append2(k1 int, v1 int, k2 int, v2 int) SimpleIntIntTuples

Append2 adds two items.

func (SimpleIntIntTuples) Append3

func (ts SimpleIntIntTuples) Append3(k1 int, v1 int, k2 int, v2 int, k3 int, v3 int) SimpleIntIntTuples

Append3 adds three items.

func (SimpleIntIntTuples) MkString added in v3.6.0

func (ts SimpleIntIntTuples) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (SimpleIntIntTuples) MkString4 added in v3.7.0

func (ts SimpleIntIntTuples) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (SimpleIntIntTuples) String added in v3.6.0

func (ts SimpleIntIntTuples) String() string

func (SimpleIntIntTuples) ToMap added in v3.6.0

ToMap converts the tuples to a map.

func (SimpleIntIntTuples) Values

func (ts SimpleIntIntTuples) Values(values ...int) SimpleIntIntTuples

Values sets the values in a tuple slice. Use this with SimpleIntIntZip.

type SimpleIntList

type SimpleIntList []int

SimpleIntList is a slice of type int. Use it where you would use []int. To add items to the list, simply use the normal built-in append function.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildSimpleIntListFromChan

func BuildSimpleIntListFromChan(source <-chan int) SimpleIntList

BuildSimpleIntListFromChan constructs a new SimpleIntList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertSimpleIntList

func ConvertSimpleIntList(values ...interface{}) (SimpleIntList, bool)

ConvertSimpleIntList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted. Conversions are provided from all built-in numeric types.

func MakeSimpleIntList

func MakeSimpleIntList(length, capacity int) SimpleIntList

MakeSimpleIntList makes an empty list with both length and capacity initialised.

func NewSimpleIntList

func NewSimpleIntList(values ...int) SimpleIntList

NewSimpleIntList constructs a new list containing the supplied values, if any.

func (SimpleIntList) Clone

func (list SimpleIntList) Clone() SimpleIntList

Clone returns a shallow copy of the list. It does not clone the underlying elements.

func (SimpleIntList) Contains

func (list SimpleIntList) Contains(v int) bool

Contains determines whether a given item is already in the list, returning true if so.

func (SimpleIntList) ContainsAll

func (list SimpleIntList) ContainsAll(i ...int) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (SimpleIntList) CountBy

func (list SimpleIntList) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of SimpleIntList that return true for the predicate p.

func (SimpleIntList) DistinctBy

func (list SimpleIntList) DistinctBy(equal func(int, int) bool) SimpleIntList

DistinctBy returns a new SimpleIntList whose elements are unique, where equality is defined by the equal function.

func (SimpleIntList) DoReverse

func (list SimpleIntList) DoReverse() SimpleIntList

DoReverse alters a SimpleIntList with all elements in the reverse order. Unlike Reverse, it does not allocate new memory.

The list is modified and the modified list is returned.

func (SimpleIntList) DoShuffle

func (list SimpleIntList) DoShuffle() SimpleIntList

DoShuffle returns a shuffled SimpleIntList, using a version of the Fisher-Yates shuffle.

The list is modified and the modified list is returned.

func (SimpleIntList) Drop

func (list SimpleIntList) Drop(n int) SimpleIntList

Drop returns a slice of SimpleIntList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (SimpleIntList) DropLast

func (list SimpleIntList) DropLast(n int) SimpleIntList

DropLast returns a slice of SimpleIntList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (SimpleIntList) DropWhile

func (list SimpleIntList) DropWhile(p func(int) bool) SimpleIntList

DropWhile returns a new SimpleIntList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

The original list is not modified.

func (SimpleIntList) Equals

func (list SimpleIntList) Equals(other SimpleIntList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal.

func (SimpleIntList) Exists

func (list SimpleIntList) Exists(p func(int) bool) bool

Exists verifies that one or more elements of SimpleIntList return true for the predicate p.

func (SimpleIntList) Filter

func (list SimpleIntList) Filter(p func(int) bool) SimpleIntList

Filter returns a new SimpleIntList whose elements return true for predicate p.

The original list is not modified.

func (SimpleIntList) Find

func (list SimpleIntList) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for predicate p. False is returned if none match.

func (SimpleIntList) FlatMap

func (list SimpleIntList) FlatMap(f func(int) []int) SimpleIntList

FlatMap returns a new SimpleIntList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntList) FlatMapToInt64 added in v3.5.0

func (list SimpleIntList) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntList) FlatMapToString added in v3.5.0

func (list SimpleIntList) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntList) Fold added in v3.9.0

func (list SimpleIntList) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (SimpleIntList) Forall

func (list SimpleIntList) Forall(p func(int) bool) bool

Forall verifies that all elements of SimpleIntList return true for the predicate p.

func (SimpleIntList) Foreach

func (list SimpleIntList) Foreach(f func(int))

Foreach iterates over SimpleIntList and executes function f against each element.

func (SimpleIntList) Get

func (list SimpleIntList) Get(i int) int

Get gets the specified element in the list. Panics if the index is out of range or the list is nil. The simple list is a dressed-up slice and normal slice operations will also work.

func (SimpleIntList) Head

func (list SimpleIntList) Head() int

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (SimpleIntList) HeadOption

func (list SimpleIntList) HeadOption() (int, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (SimpleIntList) IndexWhere

func (list SimpleIntList) IndexWhere(p func(int) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (SimpleIntList) IndexWhere2

func (list SimpleIntList) IndexWhere2(p func(int) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (SimpleIntList) Init

func (list SimpleIntList) Init() SimpleIntList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (SimpleIntList) IsEmpty

func (list SimpleIntList) IsEmpty() bool

IsEmpty tests whether SimpleIntList is empty.

func (SimpleIntList) IsSequence

func (list SimpleIntList) IsSequence() bool

IsSequence returns true for lists and queues.

func (SimpleIntList) IsSet

func (list SimpleIntList) IsSet() bool

IsSet returns false for lists or queues.

func (SimpleIntList) Last

func (list SimpleIntList) Last() int

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (SimpleIntList) LastIndexWhere

func (list SimpleIntList) LastIndexWhere(p func(int) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (SimpleIntList) LastIndexWhere2

func (list SimpleIntList) LastIndexWhere2(p func(int) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (SimpleIntList) LastOption

func (list SimpleIntList) LastOption() (int, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (SimpleIntList) Len

func (list SimpleIntList) Len() int

Len returns the number of items in the list - an alias of Size(). This is one of the three methods in the standard sort.Interface.

func (SimpleIntList) Map

func (list SimpleIntList) Map(f func(int) int) SimpleIntList

Map returns a new SimpleIntList by transforming every element with function f. The resulting list is the same size as the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntList) MapToInt64 added in v3.5.0

func (list SimpleIntList) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntList) MapToString added in v3.5.0

func (list SimpleIntList) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntList) Max

func (list SimpleIntList) Max() (result int)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (SimpleIntList) MaxBy

func (list SimpleIntList) MaxBy(less func(int, int) bool) int

MaxBy returns an element of SimpleIntList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (SimpleIntList) Min

func (list SimpleIntList) Min() int

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (SimpleIntList) MinBy

func (list SimpleIntList) MinBy(less func(int, int) bool) int

MinBy returns an element of SimpleIntList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (SimpleIntList) MkString

func (list SimpleIntList) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (SimpleIntList) MkString3

func (list SimpleIntList) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (SimpleIntList) NonEmpty

func (list SimpleIntList) NonEmpty() bool

NonEmpty tests whether SimpleIntList is empty.

func (SimpleIntList) Partition

func (list SimpleIntList) Partition(p func(int) bool) (SimpleIntList, SimpleIntList)

Partition returns two new IntLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original list is not modified.

func (SimpleIntList) Reverse

func (list SimpleIntList) Reverse() SimpleIntList

Reverse returns a copy of SimpleIntList with all elements in the reverse order.

The original list is not modified.

func (SimpleIntList) Send

func (list SimpleIntList) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (SimpleIntList) Shuffle

func (list SimpleIntList) Shuffle() SimpleIntList

Shuffle returns a shuffled copy of SimpleIntList, using a version of the Fisher-Yates shuffle.

The original list is not modified.

func (SimpleIntList) Size

func (list SimpleIntList) Size() int

Size returns the number of items in the list - an alias of Len().

func (SimpleIntList) SortBy

func (list SimpleIntList) SortBy(less func(i, j int) bool) SimpleIntList

SortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned.

func (SimpleIntList) Sorted

func (list SimpleIntList) Sorted() SimpleIntList

Sorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (SimpleIntList) StableSortBy

func (list SimpleIntList) StableSortBy(less func(i, j int) bool) SimpleIntList

StableSortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned. The algorithm keeps the original order of equal elements.

func (SimpleIntList) StableSorted

func (list SimpleIntList) StableSorted() SimpleIntList

StableSorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (SimpleIntList) String

func (list SimpleIntList) String() string

String implements the Stringer interface to render the list as a comma-separated string enclosed in square brackets.

func (SimpleIntList) StringList

func (list SimpleIntList) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (SimpleIntList) Sum

func (list SimpleIntList) Sum() int

Sum returns the sum of all the elements in the list.

func (SimpleIntList) Swap

func (list SimpleIntList) Swap(i, j int)

Swap exchanges two elements, which is necessary during sorting etc. This is one of the three methods in the standard sort.Interface.

func (SimpleIntList) Tail

func (list SimpleIntList) Tail() SimpleIntList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (SimpleIntList) Take

func (list SimpleIntList) Take(n int) SimpleIntList

Take returns a slice of SimpleIntList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (SimpleIntList) TakeLast

func (list SimpleIntList) TakeLast(n int) SimpleIntList

TakeLast returns a slice of SimpleIntList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

The original list is not modified.

func (SimpleIntList) TakeWhile

func (list SimpleIntList) TakeWhile(p func(int) bool) SimpleIntList

TakeWhile returns a new SimpleIntList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

The original list is not modified.

func (SimpleIntList) ToInterfaceSlice

func (list SimpleIntList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (SimpleIntList) ToList

func (list SimpleIntList) ToList() SimpleIntList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (SimpleIntList) ToSlice

func (list SimpleIntList) ToSlice() []int

ToSlice returns the elements of the list as a slice, which is an identity operation in this case, because the simple list is merely a dressed-up slice.

type SimpleIntSet

type SimpleIntSet map[int]struct{}

SimpleIntSet is the primary type that represents a set

func BuildSimpleIntSetFromChan

func BuildSimpleIntSetFromChan(source <-chan int) SimpleIntSet

BuildSimpleIntSetFromChan constructs a new SimpleIntSet from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertSimpleIntSet

func ConvertSimpleIntSet(values ...interface{}) (SimpleIntSet, bool)

ConvertSimpleIntSet constructs a new set containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned set will contain all the values that were correctly converted.

func NewSimpleIntSet

func NewSimpleIntSet(values ...int) SimpleIntSet

NewSimpleIntSet creates and returns a reference to an empty set.

func (SimpleIntSet) Add

func (set SimpleIntSet) Add(more ...int) SimpleIntSet

Add adds items to the current set, returning the modified set.

func (SimpleIntSet) Append

func (set SimpleIntSet) Append(more ...int) SimpleIntSet

Append inserts more items into a clone of the set. It returns the augmented set. The original set is unmodified.

func (SimpleIntSet) Cardinality

func (set SimpleIntSet) Cardinality() int

Cardinality returns how many items are currently in the set. This is a synonym for Size.

func (*SimpleIntSet) Clear

func (set *SimpleIntSet) Clear()

Clear the entire set. Aterwards, it will be an empty set.

func (SimpleIntSet) Clone

func (set SimpleIntSet) Clone() SimpleIntSet

Clone returns a shallow copy of the set. It does not clone the underlying elements.

func (SimpleIntSet) Contains

func (set SimpleIntSet) Contains(i int) bool

Contains determines whether a given item is already in the set, returning true if so.

func (SimpleIntSet) ContainsAll

func (set SimpleIntSet) ContainsAll(i ...int) bool

ContainsAll determines whether a given item is already in the set, returning true if so.

func (SimpleIntSet) CountBy

func (set SimpleIntSet) CountBy(p func(int) bool) (result int)

CountBy gives the number elements of SimpleIntSet that return true for the predicate p.

func (SimpleIntSet) Difference

func (set SimpleIntSet) Difference(other SimpleIntSet) SimpleIntSet

Difference returns a new set with items in the current set but not in the other set

func (SimpleIntSet) Equals

func (set SimpleIntSet) Equals(other SimpleIntSet) bool

Equals determines whether two sets are equal to each other, returning true if so. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for sets to be equal.

func (SimpleIntSet) Exists

func (set SimpleIntSet) Exists(p func(int) bool) bool

Exists applies a predicate p to every element in the set. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (SimpleIntSet) Filter

func (set SimpleIntSet) Filter(p func(int) bool) SimpleIntSet

Filter returns a new SimpleIntSet whose elements return true for the predicate p.

The original set is not modified

func (SimpleIntSet) Find

func (set SimpleIntSet) Find(p func(int) bool) (int, bool)

Find returns the first int that returns true for the predicate p. If there are many matches one is arbtrarily chosen. False is returned if none match.

func (SimpleIntSet) FlatMap

func (set SimpleIntSet) FlatMap(f func(int) []int) SimpleIntSet

FlatMap returns a new SimpleIntSet by transforming every element with a function f that returns zero or more items in a slice. The resulting set may have a different size to the original set. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntSet) FlatMapToInt64

func (set SimpleIntSet) FlatMapToInt64(f func(int) []int64) []int64

FlatMapToInt64 returns a new []int64 by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntSet) FlatMapToString

func (set SimpleIntSet) FlatMapToString(f func(int) []string) []string

FlatMapToString returns a new []string by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntSet) Fold added in v3.9.0

func (set SimpleIntSet) Fold(initial int, fn func(int, int) int) int

Fold aggregates all the values in the set using a supplied function, starting from some initial value.

func (SimpleIntSet) Forall

func (set SimpleIntSet) Forall(p func(int) bool) bool

Forall applies a predicate function p to every element in the set. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (SimpleIntSet) Foreach

func (set SimpleIntSet) Foreach(f func(int))

Foreach iterates over the set and executes the function f against each element.

func (SimpleIntSet) Intersect

func (set SimpleIntSet) Intersect(other SimpleIntSet) SimpleIntSet

Intersect returns a new set with items that exist only in both sets.

func (SimpleIntSet) IsEmpty

func (set SimpleIntSet) IsEmpty() bool

IsEmpty returns true if the set is empty.

func (SimpleIntSet) IsSequence

func (set SimpleIntSet) IsSequence() bool

IsSequence returns true for lists and queues.

func (SimpleIntSet) IsSet

func (set SimpleIntSet) IsSet() bool

IsSet returns false for lists or queues.

func (SimpleIntSet) IsSubset

func (set SimpleIntSet) IsSubset(other SimpleIntSet) bool

IsSubset determines whether every item in the other set is in this set, returning true if so.

func (SimpleIntSet) IsSuperset

func (set SimpleIntSet) IsSuperset(other SimpleIntSet) bool

IsSuperset determines whether every item of this set is in the other set, returning true if so.

func (SimpleIntSet) Map

func (set SimpleIntSet) Map(f func(int) int) SimpleIntSet

Map returns a new SimpleIntSet by transforming every element with a function f. The original set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntSet) MapToInt64

func (set SimpleIntSet) MapToInt64(f func(int) int64) []int64

MapToInt64 returns a new []int64 by transforming every element with function f. The resulting slice is the same size as the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntSet) MapToString

func (set SimpleIntSet) MapToString(f func(int) string) []string

MapToString returns a new []string by transforming every element with function f. The resulting slice is the same size as the set. The set is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleIntSet) MarshalJSON

func (set SimpleIntSet) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this set type.

func (SimpleIntSet) Max

func (set SimpleIntSet) Max() int

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (SimpleIntSet) MaxBy

func (set SimpleIntSet) MaxBy(less func(int, int) bool) int

MaxBy returns an element of SimpleIntSet containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (SimpleIntSet) Min

func (set SimpleIntSet) Min() int

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (SimpleIntSet) MinBy

func (set SimpleIntSet) MinBy(less func(int, int) bool) int

MinBy returns an element of SimpleIntSet containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (SimpleIntSet) MkString

func (set SimpleIntSet) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (SimpleIntSet) MkString3

func (set SimpleIntSet) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (SimpleIntSet) NonEmpty

func (set SimpleIntSet) NonEmpty() bool

NonEmpty returns true if the set is not empty.

func (SimpleIntSet) Partition

func (set SimpleIntSet) Partition(p func(int) bool) (SimpleIntSet, SimpleIntSet)

Partition returns two new SimpleIntSets whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't.

The original set is not modified

func (SimpleIntSet) Remove

func (set SimpleIntSet) Remove(i int)

Remove a single item from the set.

func (SimpleIntSet) Send

func (set SimpleIntSet) Send() <-chan int

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed

func (SimpleIntSet) Size

func (set SimpleIntSet) Size() int

Size returns how many items are currently in the set. This is a synonym for Cardinality.

func (SimpleIntSet) String

func (set SimpleIntSet) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (SimpleIntSet) StringList

func (set SimpleIntSet) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (SimpleIntSet) StringMap

func (set SimpleIntSet) StringMap() map[string]bool

StringMap renders the set as a map of strings. The value of each item in the set becomes stringified as a key in the resulting map.

func (SimpleIntSet) Sum

func (set SimpleIntSet) Sum() int

Sum returns the sum of all the elements in the set.

func (SimpleIntSet) SymmetricDifference

func (set SimpleIntSet) SymmetricDifference(other SimpleIntSet) SimpleIntSet

SymmetricDifference returns a new set with items in the current set or the other set but not in both.

func (SimpleIntSet) ToInterfaceSlice

func (set SimpleIntSet) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current set as a slice of arbitrary type.

func (SimpleIntSet) ToSet

func (set SimpleIntSet) ToSet() SimpleIntSet

ToSet returns the set; this is an identity operation in this case.

func (SimpleIntSet) ToSlice

func (set SimpleIntSet) ToSlice() []int

ToSlice returns the elements of the current set as a slice.

func (SimpleIntSet) Union

func (set SimpleIntSet) Union(other SimpleIntSet) SimpleIntSet

Union returns a new set with all items in both sets.

func (SimpleIntSet) UnmarshalJSON

func (set SimpleIntSet) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this set type.

type SimpleStringAppleMap

type SimpleStringAppleMap map[string]Apple

SimpleStringAppleMap is the primary type that represents a map

func NewSimpleStringAppleMap

func NewSimpleStringAppleMap(kv ...SimpleStringAppleTuple) SimpleStringAppleMap

NewSimpleStringAppleMap creates and returns a reference to a map, optionally containing some items.

func NewSimpleStringAppleMap1

func NewSimpleStringAppleMap1(k string, v Apple) SimpleStringAppleMap

NewSimpleStringAppleMap1 creates and returns a reference to a map containing one item.

func (*SimpleStringAppleMap) Clear

func (mm *SimpleStringAppleMap) Clear()

Clear clears the entire map.

func (SimpleStringAppleMap) Clone

Clone returns a shallow copy of the map. It does not clone the underlying elements.

func (SimpleStringAppleMap) ContainsAllKeys

func (mm SimpleStringAppleMap) ContainsAllKeys(kk ...string) bool

ContainsAllKeys determines if the given items are all in the map.

func (SimpleStringAppleMap) ContainsKey

func (mm SimpleStringAppleMap) ContainsKey(k string) bool

ContainsKey determines if a given item is already in the map.

func (SimpleStringAppleMap) DropWhere

DropWhere applies a predicate function to every element in the map. If the function returns true, the element is dropped from the map. This is similar to Filter except that the map is modified.

func (SimpleStringAppleMap) Exists

func (mm SimpleStringAppleMap) Exists(p func(string, Apple) bool) bool

Exists applies the predicate p to every element in the map. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (SimpleStringAppleMap) Filter

Filter applies the predicate p to every element in the map and returns a copied map containing only the elements for which the predicate returned true. The original map is not modified.

func (SimpleStringAppleMap) Find

Find returns the first Apple that returns true for the predicate p. False is returned if none match. The original map is not modified.

func (SimpleStringAppleMap) FlatMap

FlatMap returns a new SimpleAppleMap by transforming every element with the function f that returns zero or more items in a slice. The resulting map may have a different size to the original map. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleStringAppleMap) Forall

func (mm SimpleStringAppleMap) Forall(p func(string, Apple) bool) bool

Forall applies the predicate p to every element in the map. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (SimpleStringAppleMap) Foreach

func (mm SimpleStringAppleMap) Foreach(f func(string, Apple))

Foreach applies the function f to every element in the map. The function can safely alter the values via side-effects.

func (SimpleStringAppleMap) Get

func (mm SimpleStringAppleMap) Get(k string) (Apple, bool)

Get returns one of the items in the map, if present.

func (SimpleStringAppleMap) IsEmpty

func (mm SimpleStringAppleMap) IsEmpty() bool

IsEmpty returns true if the map is empty.

func (SimpleStringAppleMap) Keys

func (mm SimpleStringAppleMap) Keys() []string

Keys returns the keys of the current map as a slice.

func (SimpleStringAppleMap) Map

Map returns a new SimpleAppleMap by transforming every element with the function f. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleStringAppleMap) MkString

func (mm SimpleStringAppleMap) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (SimpleStringAppleMap) MkString4 added in v3.7.0

func (mm SimpleStringAppleMap) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (SimpleStringAppleMap) NonEmpty

func (mm SimpleStringAppleMap) NonEmpty() bool

NonEmpty returns true if the map is not empty.

func (SimpleStringAppleMap) OrderedSlice added in v3.6.0

func (mm SimpleStringAppleMap) OrderedSlice(keys []string) SimpleStringAppleTuples

OrderedSlice returns the key/value pairs as a slice in the order specified by keys.

func (SimpleStringAppleMap) Partition

func (mm SimpleStringAppleMap) Partition(p func(string, Apple) bool) (matching SimpleStringAppleMap, others SimpleStringAppleMap)

Partition applies the predicate p to every element in the map. It divides the map into two copied maps, the first containing all the elements for which the predicate returned true, and the second containing all the others. The original map is not modified.

func (SimpleStringAppleMap) Pop

func (mm SimpleStringAppleMap) Pop(k string) (Apple, bool)

Pop removes a single item from the map, returning the value present prior to removal.

func (SimpleStringAppleMap) Put

func (mm SimpleStringAppleMap) Put(k string, v Apple) bool

Put adds an item to the current map, replacing any prior value.

func (SimpleStringAppleMap) Remove

func (mm SimpleStringAppleMap) Remove(k string)

Remove a single item from the map.

func (SimpleStringAppleMap) Size

func (mm SimpleStringAppleMap) Size() int

Size returns how many items are currently in the map. This is a synonym for Len.

func (SimpleStringAppleMap) String

func (mm SimpleStringAppleMap) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (SimpleStringAppleMap) ToSlice

ToSlice returns the key/value pairs as a slice.

func (SimpleStringAppleMap) Values

func (mm SimpleStringAppleMap) Values() []Apple

Values returns the values of the current map as a slice.

type SimpleStringAppleTuple

type SimpleStringAppleTuple struct {
	Key string
	Val Apple
}

SimpleStringAppleTuple represents a key/value pair.

func (SimpleStringAppleTuple) MarshalJSON added in v3.6.0

func (t SimpleStringAppleTuple) MarshalJSON() ([]byte, error)

MarshalJSON implements encoding.Marshaler interface.

func (SimpleStringAppleTuple) UnmarshalJSON added in v3.6.0

func (t SimpleStringAppleTuple) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this tuple type.

type SimpleStringAppleTuples

type SimpleStringAppleTuples []SimpleStringAppleTuple

SimpleStringAppleTuples can be used as a builder for unmodifiable maps.

func SimpleStringAppleZip

func SimpleStringAppleZip(keys ...string) SimpleStringAppleTuples

SimpleStringAppleZip is used with the Values method to zip (i.e. interleave) a slice of keys with a slice of values. These can then be passed in to the NewSimpleStringAppleMap constructor function.

func (SimpleStringAppleTuples) Append1

Append1 adds one item.

func (SimpleStringAppleTuples) Append2

Append2 adds two items.

func (SimpleStringAppleTuples) Append3

Append3 adds three items.

func (SimpleStringAppleTuples) MkString added in v3.6.0

func (ts SimpleStringAppleTuples) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (SimpleStringAppleTuples) MkString4 added in v3.7.0

func (ts SimpleStringAppleTuples) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (SimpleStringAppleTuples) String added in v3.6.0

func (ts SimpleStringAppleTuples) String() string

func (SimpleStringAppleTuples) ToMap added in v3.6.0

ToMap converts the tuples to a map.

func (SimpleStringAppleTuples) Values

Values sets the values in a tuple slice. Use this with SimpleStringAppleZip.

type SimpleStringList added in v3.5.4

type SimpleStringList []string

SimpleStringList is a slice of type string. Use it where you would use []string. To add items to the list, simply use the normal built-in append function.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildSimpleStringListFromChan added in v3.5.4

func BuildSimpleStringListFromChan(source <-chan string) SimpleStringList

BuildSimpleStringListFromChan constructs a new SimpleStringList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertSimpleStringList added in v3.5.4

func ConvertSimpleStringList(values ...interface{}) (SimpleStringList, bool)

ConvertSimpleStringList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted.

func MakeSimpleStringList added in v3.5.4

func MakeSimpleStringList(length, capacity int) SimpleStringList

MakeSimpleStringList makes an empty list with both length and capacity initialised.

func NewSimpleStringList added in v3.5.4

func NewSimpleStringList(values ...string) SimpleStringList

NewSimpleStringList constructs a new list containing the supplied values, if any.

func (SimpleStringList) Clone added in v3.5.4

func (list SimpleStringList) Clone() SimpleStringList

Clone returns a shallow copy of the list. It does not clone the underlying elements.

func (SimpleStringList) Contains added in v3.5.4

func (list SimpleStringList) Contains(v string) bool

Contains determines whether a given item is already in the list, returning true if so.

func (SimpleStringList) ContainsAll added in v3.5.4

func (list SimpleStringList) ContainsAll(i ...string) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (SimpleStringList) CountBy added in v3.5.4

func (list SimpleStringList) CountBy(p func(string) bool) (result int)

CountBy gives the number elements of SimpleStringList that return true for the predicate p.

func (SimpleStringList) DistinctBy added in v3.5.4

func (list SimpleStringList) DistinctBy(equal func(string, string) bool) SimpleStringList

DistinctBy returns a new SimpleStringList whose elements are unique, where equality is defined by the equal function.

func (SimpleStringList) DoReverse added in v3.5.4

func (list SimpleStringList) DoReverse() SimpleStringList

DoReverse alters a SimpleStringList with all elements in the reverse order. Unlike Reverse, it does not allocate new memory.

The list is modified and the modified list is returned.

func (SimpleStringList) DoShuffle added in v3.5.4

func (list SimpleStringList) DoShuffle() SimpleStringList

DoShuffle returns a shuffled SimpleStringList, using a version of the Fisher-Yates shuffle.

The list is modified and the modified list is returned.

func (SimpleStringList) Drop added in v3.5.4

func (list SimpleStringList) Drop(n int) SimpleStringList

Drop returns a slice of SimpleStringList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (SimpleStringList) DropLast added in v3.5.4

func (list SimpleStringList) DropLast(n int) SimpleStringList

DropLast returns a slice of SimpleStringList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (SimpleStringList) DropWhile added in v3.5.4

func (list SimpleStringList) DropWhile(p func(string) bool) SimpleStringList

DropWhile returns a new SimpleStringList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

The original list is not modified.

func (SimpleStringList) Equals added in v3.5.4

func (list SimpleStringList) Equals(other SimpleStringList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal.

func (SimpleStringList) Exists added in v3.5.4

func (list SimpleStringList) Exists(p func(string) bool) bool

Exists verifies that one or more elements of SimpleStringList return true for the predicate p.

func (SimpleStringList) Filter added in v3.5.4

func (list SimpleStringList) Filter(p func(string) bool) SimpleStringList

Filter returns a new SimpleStringList whose elements return true for predicate p.

The original list is not modified.

func (SimpleStringList) Find added in v3.5.4

func (list SimpleStringList) Find(p func(string) bool) (string, bool)

Find returns the first string that returns true for predicate p. False is returned if none match.

func (SimpleStringList) FlatMap added in v3.5.4

func (list SimpleStringList) FlatMap(f func(string) []string) SimpleStringList

FlatMap returns a new SimpleStringList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleStringList) FlatMapToInt added in v3.5.4

func (list SimpleStringList) FlatMapToInt(f func(string) []int) []int

FlatMapToInt returns a new []int by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleStringList) Fold added in v3.9.0

func (list SimpleStringList) Fold(initial string, fn func(string, string) string) string

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (SimpleStringList) Forall added in v3.5.4

func (list SimpleStringList) Forall(p func(string) bool) bool

Forall verifies that all elements of SimpleStringList return true for the predicate p.

func (SimpleStringList) Foreach added in v3.5.4

func (list SimpleStringList) Foreach(f func(string))

Foreach iterates over SimpleStringList and executes function f against each element.

func (SimpleStringList) Get added in v3.5.4

func (list SimpleStringList) Get(i int) string

Get gets the specified element in the list. Panics if the index is out of range or the list is nil. The simple list is a dressed-up slice and normal slice operations will also work.

func (SimpleStringList) Head added in v3.5.4

func (list SimpleStringList) Head() string

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (SimpleStringList) HeadOption added in v3.5.4

func (list SimpleStringList) HeadOption() (string, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (SimpleStringList) IndexWhere added in v3.5.4

func (list SimpleStringList) IndexWhere(p func(string) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (SimpleStringList) IndexWhere2 added in v3.5.4

func (list SimpleStringList) IndexWhere2(p func(string) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (SimpleStringList) Init added in v3.5.4

func (list SimpleStringList) Init() SimpleStringList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (SimpleStringList) IsEmpty added in v3.5.4

func (list SimpleStringList) IsEmpty() bool

IsEmpty tests whether SimpleStringList is empty.

func (SimpleStringList) IsSequence added in v3.5.4

func (list SimpleStringList) IsSequence() bool

IsSequence returns true for lists and queues.

func (SimpleStringList) IsSet added in v3.5.4

func (list SimpleStringList) IsSet() bool

IsSet returns false for lists or queues.

func (SimpleStringList) Last added in v3.5.4

func (list SimpleStringList) Last() string

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (SimpleStringList) LastIndexWhere added in v3.5.4

func (list SimpleStringList) LastIndexWhere(p func(string) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (SimpleStringList) LastIndexWhere2 added in v3.5.4

func (list SimpleStringList) LastIndexWhere2(p func(string) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (SimpleStringList) LastOption added in v3.5.4

func (list SimpleStringList) LastOption() (string, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (SimpleStringList) Len added in v3.5.4

func (list SimpleStringList) Len() int

Len returns the number of items in the list - an alias of Size(). This is one of the three methods in the standard sort.Interface.

func (SimpleStringList) Map added in v3.5.4

func (list SimpleStringList) Map(f func(string) string) SimpleStringList

Map returns a new SimpleStringList by transforming every element with function f. The resulting list is the same size as the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleStringList) MapToInt added in v3.5.4

func (list SimpleStringList) MapToInt(f func(string) int) []int

MapToInt returns a new []int by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (SimpleStringList) Max added in v3.5.4

func (list SimpleStringList) Max() (result string)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (SimpleStringList) MaxBy added in v3.5.4

func (list SimpleStringList) MaxBy(less func(string, string) bool) string

MaxBy returns an element of SimpleStringList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (SimpleStringList) Min added in v3.5.4

func (list SimpleStringList) Min() string

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (SimpleStringList) MinBy added in v3.5.4

func (list SimpleStringList) MinBy(less func(string, string) bool) string

MinBy returns an element of SimpleStringList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (SimpleStringList) MkString added in v3.5.4

func (list SimpleStringList) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (SimpleStringList) MkString3 added in v3.5.4

func (list SimpleStringList) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (SimpleStringList) NonEmpty added in v3.5.4

func (list SimpleStringList) NonEmpty() bool

NonEmpty tests whether SimpleStringList is empty.

func (SimpleStringList) Partition added in v3.5.4

func (list SimpleStringList) Partition(p func(string) bool) (SimpleStringList, SimpleStringList)

Partition returns two new StringLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original list is not modified.

func (SimpleStringList) Reverse added in v3.5.4

func (list SimpleStringList) Reverse() SimpleStringList

Reverse returns a copy of SimpleStringList with all elements in the reverse order.

The original list is not modified.

func (SimpleStringList) Send added in v3.5.4

func (list SimpleStringList) Send() <-chan string

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (SimpleStringList) Shuffle added in v3.5.4

func (list SimpleStringList) Shuffle() SimpleStringList

Shuffle returns a shuffled copy of SimpleStringList, using a version of the Fisher-Yates shuffle.

The original list is not modified.

func (SimpleStringList) Size added in v3.5.4

func (list SimpleStringList) Size() int

Size returns the number of items in the list - an alias of Len().

func (SimpleStringList) SortBy added in v3.5.4

func (list SimpleStringList) SortBy(less func(i, j string) bool) SimpleStringList

SortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned.

func (SimpleStringList) Sorted added in v3.5.4

func (list SimpleStringList) Sorted() SimpleStringList

Sorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (SimpleStringList) StableSortBy added in v3.5.4

func (list SimpleStringList) StableSortBy(less func(i, j string) bool) SimpleStringList

StableSortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned. The algorithm keeps the original order of equal elements.

func (SimpleStringList) StableSorted added in v3.5.4

func (list SimpleStringList) StableSorted() SimpleStringList

StableSorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (SimpleStringList) String added in v3.5.4

func (list SimpleStringList) String() string

String implements the Stringer interface to render the list as a comma-separated string enclosed in square brackets.

func (SimpleStringList) StringList added in v3.5.4

func (list SimpleStringList) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (SimpleStringList) Swap added in v3.5.4

func (list SimpleStringList) Swap(i, j int)

Swap exchanges two elements, which is necessary during sorting etc. This is one of the three methods in the standard sort.Interface.

func (SimpleStringList) Tail added in v3.5.4

func (list SimpleStringList) Tail() SimpleStringList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (SimpleStringList) Take added in v3.5.4

func (list SimpleStringList) Take(n int) SimpleStringList

Take returns a slice of SimpleStringList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (SimpleStringList) TakeLast added in v3.5.4

func (list SimpleStringList) TakeLast(n int) SimpleStringList

TakeLast returns a slice of SimpleStringList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

The original list is not modified.

func (SimpleStringList) TakeWhile added in v3.5.4

func (list SimpleStringList) TakeWhile(p func(string) bool) SimpleStringList

TakeWhile returns a new SimpleStringList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

The original list is not modified.

func (SimpleStringList) ToInterfaceSlice added in v3.5.4

func (list SimpleStringList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (SimpleStringList) ToList added in v3.5.4

func (list SimpleStringList) ToList() SimpleStringList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (SimpleStringList) ToSlice added in v3.5.4

func (list SimpleStringList) ToSlice() []string

ToSlice returns the elements of the list as a slice, which is an identity operation in this case, because the simple list is merely a dressed-up slice.

type StringAppleMap

type StringAppleMap struct {
	// contains filtered or unexported fields
}

StringAppleMap is the primary type that represents a thread-safe map

func NewStringAppleMap

func NewStringAppleMap(kv ...StringAppleTuple) *StringAppleMap

NewStringAppleMap creates and returns a reference to a map, optionally containing some items.

func NewStringAppleMap1

func NewStringAppleMap1(k string, v Apple) *StringAppleMap

NewStringAppleMap1 creates and returns a reference to a map containing one item.

func (*StringAppleMap) Clear

func (mm *StringAppleMap) Clear()

Clear clears the entire map.

func (*StringAppleMap) Clone

func (mm *StringAppleMap) Clone() *StringAppleMap

Clone returns a shallow copy of the map. It does not clone the underlying elements.

func (*StringAppleMap) ContainsAllKeys

func (mm *StringAppleMap) ContainsAllKeys(kk ...string) bool

ContainsAllKeys determines if the given items are all in the map.

func (*StringAppleMap) ContainsKey

func (mm *StringAppleMap) ContainsKey(k string) bool

ContainsKey determines if a given item is already in the map.

func (*StringAppleMap) DropWhere

func (mm *StringAppleMap) DropWhere(fn func(string, Apple) bool) StringAppleTuples

DropWhere applies a predicate function to every element in the map. If the function returns true, the element is dropped from the map. This is similar to Filter except that the map is modified.

func (*StringAppleMap) Equals added in v3.6.0

func (mm *StringAppleMap) Equals(other *StringAppleMap) bool

Equals determines if two maps are equal to each other. If they both are the same size and have the same items they are considered equal. Order of items is not relevent for maps to be equal.

func (*StringAppleMap) Exists

func (mm *StringAppleMap) Exists(p func(string, Apple) bool) bool

Exists applies the predicate p to every element in the map. If the function returns true, the iteration terminates early. The returned value is true if an early return occurred. or false if all elements were visited without finding a match.

func (*StringAppleMap) Filter

func (mm *StringAppleMap) Filter(p func(string, Apple) bool) *StringAppleMap

Filter applies the predicate p to every element in the map and returns a copied map containing only the elements for which the predicate returned true. The original map is not modified.

func (*StringAppleMap) Find

func (mm *StringAppleMap) Find(p func(string, Apple) bool) (StringAppleTuple, bool)

Find returns the first Apple that returns true for the predicate p. False is returned if none match. The original map is not modified.

func (*StringAppleMap) FlatMap

func (mm *StringAppleMap) FlatMap(f func(string, Apple) []StringAppleTuple) *StringAppleMap

FlatMap returns a new AppleMap by transforming every element with the function f that returns zero or more items in a slice. The resulting map may have a different size to the original map. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*StringAppleMap) Forall

func (mm *StringAppleMap) Forall(p func(string, Apple) bool) bool

Forall applies the predicate p to every element in the map. If the function returns false, the iteration terminates early. The returned value is true if all elements were visited, or false if an early return occurred.

Note that this method can also be used simply as a way to visit every element using a function with some side-effects; such a function must always return true.

func (*StringAppleMap) Foreach

func (mm *StringAppleMap) Foreach(f func(string, Apple))

Foreach applies the function f to every element in the map. The function can safely alter the values via side-effects.

func (*StringAppleMap) Get

func (mm *StringAppleMap) Get(k string) (Apple, bool)

Get returns one of the items in the map, if present.

func (*StringAppleMap) GobDecode

func (mm *StringAppleMap) GobDecode(b []byte) error

GobDecode implements 'gob' decoding for this map type. You must register Apple with the 'gob' package before this method is used.

func (*StringAppleMap) GobEncode

func (mm *StringAppleMap) GobEncode() ([]byte, error)

GobEncode implements 'gob' encoding for this map type. You must register Apple with the 'gob' package before this method is used.

func (*StringAppleMap) IsEmpty

func (mm *StringAppleMap) IsEmpty() bool

IsEmpty returns true if the map is empty.

func (*StringAppleMap) Keys

func (mm *StringAppleMap) Keys() []string

Keys returns the keys of the current map as a slice.

func (*StringAppleMap) Map

func (mm *StringAppleMap) Map(f func(string, Apple) (string, Apple)) *StringAppleMap

Map returns a new AppleMap by transforming every element with the function f. The original map is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*StringAppleMap) MarshalJSON added in v3.6.0

func (mm *StringAppleMap) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this map type.

func (*StringAppleMap) MkString added in v3.6.0

func (mm *StringAppleMap) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (*StringAppleMap) MkString4 added in v3.7.0

func (mm *StringAppleMap) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (*StringAppleMap) NonEmpty

func (mm *StringAppleMap) NonEmpty() bool

NonEmpty returns true if the map is not empty.

func (*StringAppleMap) OrderedSlice added in v3.6.0

func (mm *StringAppleMap) OrderedSlice(keys []string) StringAppleTuples

OrderedSlice returns the key/value pairs as a slice in the order specified by keys.

func (*StringAppleMap) Partition

func (mm *StringAppleMap) Partition(p func(string, Apple) bool) (matching *StringAppleMap, others *StringAppleMap)

Partition applies the predicate p to every element in the map. It divides the map into two copied maps, the first containing all the elements for which the predicate returned true, and the second containing all the others. The original map is not modified.

func (*StringAppleMap) Pop

func (mm *StringAppleMap) Pop(k string) (Apple, bool)

Pop removes a single item from the map, returning the value present prior to removal. The boolean result is true only if the key had been present.

func (*StringAppleMap) Put

func (mm *StringAppleMap) Put(k string, v Apple) bool

Put adds an item to the current map, replacing any prior value.

func (*StringAppleMap) Remove

func (mm *StringAppleMap) Remove(k string)

Remove a single item from the map.

func (*StringAppleMap) Size

func (mm *StringAppleMap) Size() int

Size returns how many items are currently in the map. This is a synonym for Len.

func (*StringAppleMap) String added in v3.6.0

func (mm *StringAppleMap) String() string

String implements the Stringer interface to render the set as a comma-separated string enclosed in square brackets.

func (*StringAppleMap) ToSlice

func (mm *StringAppleMap) ToSlice() StringAppleTuples

ToSlice returns the key/value pairs as a slice

func (*StringAppleMap) UnmarshalJSON added in v3.6.0

func (mm *StringAppleMap) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this map type.

func (*StringAppleMap) Values

func (mm *StringAppleMap) Values() []Apple

Values returns the values of the current map as a slice.

type StringAppleTuple

type StringAppleTuple struct {
	Key string
	Val Apple
}

StringAppleTuple represents a key/value pair.

func (StringAppleTuple) MarshalJSON added in v3.6.0

func (t StringAppleTuple) MarshalJSON() ([]byte, error)

MarshalJSON implements encoding.Marshaler interface.

func (StringAppleTuple) UnmarshalJSON added in v3.6.0

func (t StringAppleTuple) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this tuple type.

type StringAppleTuples

type StringAppleTuples []StringAppleTuple

StringAppleTuples can be used as a builder for unmodifiable maps.

func StringAppleZip

func StringAppleZip(keys ...string) StringAppleTuples

StringAppleZip is used with the Values method to zip (i.e. interleave) a slice of keys with a slice of values. These can then be passed in to the NewStringAppleMap constructor function.

func (StringAppleTuples) Append1

Append1 adds one item.

func (StringAppleTuples) Append2

func (ts StringAppleTuples) Append2(k1 string, v1 Apple, k2 string, v2 Apple) StringAppleTuples

Append2 adds two items.

func (StringAppleTuples) Append3

func (ts StringAppleTuples) Append3(k1 string, v1 Apple, k2 string, v2 Apple, k3 string, v3 Apple) StringAppleTuples

Append3 adds three items.

func (StringAppleTuples) MkString added in v3.6.0

func (ts StringAppleTuples) MkString(sep string) string

MkString concatenates the map key/values as a string using a supplied separator. No enclosing marks are added.

func (StringAppleTuples) MkString4 added in v3.7.0

func (ts StringAppleTuples) MkString4(before, between, after, equals string) string

MkString4 concatenates the map key/values as a string, using the prefix, separator and suffix supplied.

func (StringAppleTuples) String added in v3.6.0

func (ts StringAppleTuples) String() string

func (StringAppleTuples) ToMap added in v3.6.0

func (ts StringAppleTuples) ToMap() *StringAppleMap

ToMap converts the tuples to a map.

func (StringAppleTuples) Values

func (ts StringAppleTuples) Values(values ...Apple) StringAppleTuples

Values sets the values in a tuple slice. Use this with StringAppleZip.

type StringList added in v3.5.4

type StringList struct {
	// contains filtered or unexported fields
}

StringList contains a slice of type string. It encapsulates the slice and provides methods to access or mutate it.

List values follow a similar pattern to Scala Lists and LinearSeqs in particular. For comparison with Scala, see e.g. http://www.scala-lang.org/api/2.11.7/#scala.collection.LinearSeq

func BuildStringListFromChan added in v3.5.4

func BuildStringListFromChan(source <-chan string) *StringList

BuildStringListFromChan constructs a new StringList from a channel that supplies a sequence of values until it is closed. The function doesn't return until then.

func ConvertStringList added in v3.5.4

func ConvertStringList(values ...interface{}) (*StringList, bool)

ConvertStringList constructs a new list containing the supplied values, if any. The returned boolean will be false if any of the values could not be converted correctly. The returned list will contain all the values that were correctly converted.

func MakeStringList added in v3.5.4

func MakeStringList(length, capacity int) *StringList

MakeStringList makes an empty list with both length and capacity initialised.

func NewStringList added in v3.5.4

func NewStringList(values ...string) *StringList

NewStringList constructs a new list containing the supplied values, if any.

func (*StringList) Add added in v3.5.4

func (list *StringList) Add(more ...string)

Add adds items to the current list. This is a synonym for Append.

func (*StringList) Append added in v3.5.4

func (list *StringList) Append(more ...string) *StringList

Append adds items to the current list. If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned.

func (*StringList) Clear added in v3.5.4

func (list *StringList) Clear()

Clear the entire collection.

func (*StringList) Clone added in v3.5.4

func (list *StringList) Clone() *StringList

Clone returns a shallow copy of the list. It does not clone the underlying elements.

func (*StringList) Contains added in v3.5.4

func (list *StringList) Contains(v string) bool

Contains determines whether a given item is already in the list, returning true if so.

func (*StringList) ContainsAll added in v3.5.4

func (list *StringList) ContainsAll(i ...string) bool

ContainsAll determines whether the given items are all in the list, returning true if so. This is potentially a slow method and should only be used rarely.

func (*StringList) CountBy added in v3.5.4

func (list *StringList) CountBy(p func(string) bool) (result int)

CountBy gives the number elements of StringList that return true for the predicate p.

func (*StringList) DistinctBy added in v3.5.4

func (list *StringList) DistinctBy(equal func(string, string) bool) *StringList

DistinctBy returns a new StringList whose elements are unique, where equality is defined by the equal function.

func (*StringList) DoDeleteAt added in v3.5.4

func (list *StringList) DoDeleteAt(index, n int) *StringList

DoDeleteAt modifies a StringList by deleting n elements from a given index.

The list is modified and the modified list is returned. Panics if the index is out of range or n is large enough to take the index out of range.

func (*StringList) DoDeleteFirst added in v3.5.4

func (list *StringList) DoDeleteFirst(n int) *StringList

DoDeleteFirst modifies a StringList by deleting n elements from the start of the list.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if n is large enough to take the index out of range.

func (*StringList) DoDeleteLast added in v3.5.4

func (list *StringList) DoDeleteLast(n int) *StringList

DoDeleteLast modifies a StringList by deleting n elements from the end of the list.

The list is modified and the modified list is returned. Panics if n is large enough to take the index out of range.

func (*StringList) DoInsertAt added in v3.5.4

func (list *StringList) DoInsertAt(index int, more ...string) *StringList

DoInsertAt modifies a StringList by inserting elements at a given index. This is a generalised version of Append.

If the list is nil, a new list is allocated and returned. Otherwise the modified list is returned. Panics if the index is out of range.

func (*StringList) DoKeepWhere added in v3.5.4

func (list *StringList) DoKeepWhere(p func(string) bool) *StringList

DoKeepWhere modifies a StringList by retaining only those elements that match the predicate p. This is very similar to Filter but alters the list in place.

The list is modified and the modified list is returned.

func (*StringList) DoReverse added in v3.5.4

func (list *StringList) DoReverse() *StringList

DoReverse alters a StringList with all elements in the reverse order. Unlike Reverse, it does not allocate new memory.

The list is modified and the modified list is returned.

func (*StringList) DoShuffle added in v3.5.4

func (list *StringList) DoShuffle() *StringList

DoShuffle returns a shuffled StringList, using a version of the Fisher-Yates shuffle.

The list is modified and the modified list is returned.

func (*StringList) Drop added in v3.5.4

func (list *StringList) Drop(n int) *StringList

Drop returns a slice of StringList without the leading n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*StringList) DropLast added in v3.5.4

func (list *StringList) DropLast(n int) *StringList

DropLast returns a slice of StringList without the trailing n elements of the source list. If n is greater than or equal to the size of the list, an empty list is returned.

The original list is not modified.

func (*StringList) DropWhile added in v3.5.4

func (list *StringList) DropWhile(p func(string) bool) *StringList

DropWhile returns a new StringList containing the trailing elements of the source list. Whilst the predicate p returns true, elements are excluded from the result. Once predicate p returns false, all remaining elements are added.

The original list is not modified.

func (*StringList) Equals added in v3.5.4

func (list *StringList) Equals(other *StringList) bool

Equals determines if two lists are equal to each other. If they both are the same size and have the same items in the same order, they are considered equal. Order of items is not relevent for sets to be equal. Nil lists are considered to be empty.

func (*StringList) Exists added in v3.5.4

func (list *StringList) Exists(p func(string) bool) bool

Exists verifies that one or more elements of StringList return true for the predicate p.

func (*StringList) Filter added in v3.5.4

func (list *StringList) Filter(p func(string) bool) *StringList

Filter returns a new StringList whose elements return true for predicate p.

The original list is not modified. See also DoKeepWhere (which does modify the original list).

func (*StringList) Find added in v3.5.4

func (list *StringList) Find(p func(string) bool) (string, bool)

Find returns the first string that returns true for predicate p. False is returned if none match.

func (*StringList) FlatMap added in v3.5.4

func (list *StringList) FlatMap(f func(string) []string) *StringList

FlatMap returns a new StringList by transforming every element with function f that returns zero or more items in a slice. The resulting list may have a different size to the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*StringList) FlatMapToInt added in v3.5.4

func (list *StringList) FlatMapToInt(f func(string) []int) []int

FlatMapToInt returns a new []int by transforming every element with function f that returns zero or more items in a slice. The resulting slice may have a different size to the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*StringList) Fold added in v3.9.0

func (list *StringList) Fold(initial string, fn func(string, string) string) string

Fold aggregates all the values in the list using a supplied function, starting from some initial value.

func (*StringList) Forall added in v3.5.4

func (list *StringList) Forall(p func(string) bool) bool

Forall verifies that all elements of StringList return true for the predicate p.

func (*StringList) Foreach added in v3.5.4

func (list *StringList) Foreach(f func(string))

Foreach iterates over StringList and executes function f against each element. The function can safely alter the values via side-effects.

func (*StringList) Get added in v3.5.4

func (list *StringList) Get(i int) string

Get gets the specified element in the list. Panics if the index is out of range or the list is nil.

func (*StringList) Head added in v3.5.4

func (list *StringList) Head() string

Head gets the first element in the list. Head plus Tail include the whole list. Head is the opposite of Last. Panics if list is empty or nil.

func (*StringList) HeadOption added in v3.5.4

func (list *StringList) HeadOption() (string, bool)

HeadOption gets the first element in the list, if possible. Otherwise returns the zero value.

func (*StringList) IndexWhere added in v3.5.4

func (list *StringList) IndexWhere(p func(string) bool) int

IndexWhere finds the index of the first element satisfying predicate p. If none exists, -1 is returned.

func (*StringList) IndexWhere2 added in v3.5.4

func (list *StringList) IndexWhere2(p func(string) bool, from int) int

IndexWhere2 finds the index of the first element satisfying predicate p at or after some start index. If none exists, -1 is returned.

func (*StringList) Init added in v3.5.4

func (list *StringList) Init() *StringList

Init gets everything except the last. Init plus Last include the whole list. Init is the opposite of Tail. Panics if list is empty or nil.

func (*StringList) IsEmpty added in v3.5.4

func (list *StringList) IsEmpty() bool

IsEmpty tests whether StringList is empty.

func (*StringList) IsSequence added in v3.5.4

func (list *StringList) IsSequence() bool

IsSequence returns true for lists and queues.

func (*StringList) IsSet added in v3.5.4

func (list *StringList) IsSet() bool

IsSet returns false for lists or queues.

func (*StringList) Last added in v3.5.4

func (list *StringList) Last() string

Last gets the last element in the list. Init plus Last include the whole list. Last is the opposite of Head. Panics if list is empty or nil.

func (*StringList) LastIndexWhere added in v3.5.4

func (list *StringList) LastIndexWhere(p func(string) bool) int

LastIndexWhere finds the index of the last element satisfying predicate p. If none exists, -1 is returned.

func (*StringList) LastIndexWhere2 added in v3.5.4

func (list *StringList) LastIndexWhere2(p func(string) bool, before int) int

LastIndexWhere2 finds the index of the last element satisfying predicate p at or before some start index. If none exists, -1 is returned.

func (*StringList) LastOption added in v3.5.4

func (list *StringList) LastOption() (string, bool)

LastOption gets the last element in the list, if possible. Otherwise returns the zero value.

func (*StringList) Len added in v3.5.4

func (list *StringList) Len() int

Len returns the number of items in the list - an alias of Size(). This is one of the three methods in the standard sort.Interface.

func (*StringList) Map added in v3.5.4

func (list *StringList) Map(f func(string) string) *StringList

Map returns a new StringList by transforming every element with function f. The resulting list is the same size as the original list. The original list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (*StringList) MapToInt added in v3.5.4

func (list *StringList) MapToInt(f func(string) int) []int

MapToInt returns a new []int by transforming every element with function f. The resulting slice is the same size as the list. The list is not modified.

This is a domain-to-range mapping function. For bespoke transformations to other types, copy and modify this method appropriately.

func (StringList) MarshalJSON added in v3.5.4

func (list StringList) MarshalJSON() ([]byte, error)

MarshalJSON implements JSON encoding for this list type.

func (*StringList) Max added in v3.5.4

func (list *StringList) Max() (result string)

Max returns the first element containing the maximum value, when compared to other elements. Panics if the collection is empty.

func (*StringList) MaxBy added in v3.5.4

func (list *StringList) MaxBy(less func(string, string) bool) string

MaxBy returns an element of StringList containing the maximum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally maximal, the first such element is returned. Panics if there are no elements.

func (*StringList) Min added in v3.5.4

func (list *StringList) Min() string

Min returns the first element containing the minimum value, when compared to other elements. Panics if the collection is empty.

func (*StringList) MinBy added in v3.5.4

func (list *StringList) MinBy(less func(string, string) bool) string

MinBy returns an element of StringList containing the minimum value, when compared to other elements using a passed func defining ‘less’. In the case of multiple items being equally minimal, the first such element is returned. Panics if there are no elements.

func (*StringList) MkString added in v3.5.4

func (list *StringList) MkString(sep string) string

MkString concatenates the values as a string using a supplied separator. No enclosing marks are added.

func (*StringList) MkString3 added in v3.5.4

func (list *StringList) MkString3(before, between, after string) string

MkString3 concatenates the values as a string, using the prefix, separator and suffix supplied.

func (*StringList) NonEmpty added in v3.5.4

func (list *StringList) NonEmpty() bool

NonEmpty tests whether StringList is empty.

func (*StringList) Partition added in v3.5.4

func (list *StringList) Partition(p func(string) bool) (*StringList, *StringList)

Partition returns two new StringLists whose elements return true or false for the predicate, p. The first result consists of all elements that satisfy the predicate and the second result consists of all elements that don't. The relative order of the elements in the results is the same as in the original list.

The original list is not modified

func (*StringList) Reverse added in v3.5.4

func (list *StringList) Reverse() *StringList

Reverse returns a copy of StringList with all elements in the reverse order.

The original list is not modified.

func (*StringList) Send added in v3.5.4

func (list *StringList) Send() <-chan string

Send returns a channel that will send all the elements in order. A goroutine is created to send the elements; this only terminates when all the elements have been consumed. The channel will be closed when all the elements have been sent.

func (*StringList) Shuffle added in v3.5.4

func (list *StringList) Shuffle() *StringList

Shuffle returns a shuffled copy of StringList, using a version of the Fisher-Yates shuffle.

The original list is not modified.

func (*StringList) Size added in v3.5.4

func (list *StringList) Size() int

Size returns the number of items in the list - an alias of Len().

func (*StringList) SortBy added in v3.5.4

func (list *StringList) SortBy(less func(i, j string) bool) *StringList

SortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned.

func (*StringList) Sorted added in v3.5.4

func (list *StringList) Sorted() *StringList

Sorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (*StringList) StableSortBy added in v3.5.4

func (list *StringList) StableSortBy(less func(i, j string) bool) *StringList

StableSortBy alters the list so that the elements are sorted by a specified ordering. Sorting happens in-place; the modified list is returned. The algorithm keeps the original order of equal elements.

func (*StringList) StableSorted added in v3.5.4

func (list *StringList) StableSorted() *StringList

StableSorted alters the list so that the elements are sorted by their natural ordering. Sorting happens in-place; the modified list is returned.

func (*StringList) String added in v3.5.4

func (list *StringList) String() string

String implements the Stringer interface to render the list as a comma-separated string enclosed in square brackets.

func (*StringList) StringList added in v3.5.4

func (list *StringList) StringList() []string

StringList gets a list of strings that depicts all the elements.

func (*StringList) Swap added in v3.5.4

func (list *StringList) Swap(i, j int)

Swap exchanges two elements, which is necessary during sorting etc. This is one of the three methods in the standard sort.Interface.

func (*StringList) Tail added in v3.5.4

func (list *StringList) Tail() *StringList

Tail gets everything except the head. Head plus Tail include the whole list. Tail is the opposite of Init. Panics if list is empty or nil.

func (*StringList) Take added in v3.5.4

func (list *StringList) Take(n int) *StringList

Take returns a slice of StringList containing the leading n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

func (*StringList) TakeLast added in v3.5.4

func (list *StringList) TakeLast(n int) *StringList

TakeLast returns a slice of StringList containing the trailing n elements of the source list. If n is greater than or equal to the size of the list, the whole original list is returned.

The original list is not modified.

func (*StringList) TakeWhile added in v3.5.4

func (list *StringList) TakeWhile(p func(string) bool) *StringList

TakeWhile returns a new StringList containing the leading elements of the source list. Whilst the predicate p returns true, elements are added to the result. Once predicate p returns false, all remaining elements are excluded.

The original list is not modified.

func (*StringList) ToInterfaceSlice added in v3.5.4

func (list *StringList) ToInterfaceSlice() []interface{}

ToInterfaceSlice returns the elements of the current list as a slice of arbitrary type.

func (*StringList) ToList added in v3.5.4

func (list *StringList) ToList() *StringList

ToList returns the elements of the list as a list, which is an identity operation in this case.

func (*StringList) ToSlice added in v3.5.4

func (list *StringList) ToSlice() []string

ToSlice returns the elements of the current list as a slice.

func (*StringList) UnmarshalJSON added in v3.5.4

func (list *StringList) UnmarshalJSON(b []byte) error

UnmarshalJSON implements JSON decoding for this list type.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL