blob: b44b32ee761e7da03f8d76bb44899115109f9294 [file] [log] [blame]
// Copyright (c) 2014, the tuple project authors. Please see the AUTHORS
// file for details. All rights reserved. Use of this source code is governed
// by a BSD-style license that can be found in the LICENSE file.
/// # Tuple data structure
///
/// There are two versions of this data structure:
///
/// - mutable [Tuple2], [Tuple3]...
/// - persistent [PersistentTuple2], [PersistentTuple3]...
///
/// ## Usage example
///
/// ```dart
/// final t = new Tuple2<String, int>('a', 10);
///
/// print(t.i1); // prints 'a'
/// print(t.i2); // prints '10'
/// ```
///
/// ## Persistent Tuple
///
/// > In computing, a persistent data structure is a data structure that always
/// > preserves the previous version of itself when it is modified. Such data
/// > structures are effectively immutable, as their operations do not (visibly)
/// > update the structure in-place, but instead always yield a new updated
/// > structure. (A persistent data structure is not a data structure committed
/// > to persistent storage, such as a disk; this is a different and unrelated
/// > sense of the word "persistent.")
/// >
/// > [wikipedia](http://en.wikipedia.org/wiki/Persistent_data_structure)
///
/// ```dart
/// final t1 = const PersistentTuple2<String, int>('a', 10);
/// final t2 = t1.setI1('c');
/// // t2 is a new [PersistentTuple2] object with i1 is 'c' and i2 is 10.
/// ```
library tuple;
part 'package:tuple/src/tuple.dart';
part 'package:tuple/src/persistent_tuple.dart';