Copyright Tony Morris 2008

This software is released under an open source BSD licence.

fj.data.hlist
Class HList<A extends HList<A>>

java.lang.Object
  extended by fj.data.hlist.HList<A>
Type Parameters:
A - The specific type of the list, as a subtype of HList
Direct Known Subclasses:
HList.HCons, HList.HNil

public abstract class HList<A extends HList<A>>
extends Object

Type-safe heterogeneous lists.


Nested Class Summary
static class HList.Apply<F$,A,R>
          Type-level function application operators.
static class HList.HAppend<A,B,C>
          The concatenation of two heterogeneous lists.
static class HList.HCons<E,L extends HList<L>>
          The nonempty list
static class HList.HFoldr<G,V,L,R>
          The catamorphism over heterogeneous lists.
static class HList.HNil
          The empty list
 
Constructor Summary
protected HList()
           
 
Method Summary
static
<E,L extends HList<L>>
HList.HCons<E,L>
cons(E e, L l)
          Returns a heterogeneous list consisting of an element and another list.
abstract
<E> HList.HCons<E,A>
extend(E e)
          Extends (cons) this list by prepending the given element, returning a new list.
abstract
<E> HList.Apply<Unit,P2<E,A>,HList.HCons<E,A>>
extender()
           
static HList.HNil nil()
          Returns the empty list.
static
<E> HList.HCons<E,HList.HNil>
single(E e)
          Returns a heterogeneous list consisting of a single element.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HList

protected HList()
Method Detail

extend

public abstract <E> HList.HCons<E,A> extend(E e)
Extends (cons) this list by prepending the given element, returning a new list.

Parameters:
e - an element to prepend to this list.
Returns:
a new heterogeneous list, consisting of the given element prepended to this list.

extender

public abstract <E> HList.Apply<Unit,P2<E,A>,HList.HCons<E,A>> extender()

nil

public static HList.HNil nil()
Returns the empty list.

Returns:
the empty list.

cons

public static <E,L extends HList<L>> HList.HCons<E,L> cons(E e,
                                                           L l)
Returns a heterogeneous list consisting of an element and another list.

Parameters:
e - an element to put in a list.
l - the rest of the list.
Returns:
a heterogeneous list consisting of an element and another list.

single

public static <E> HList.HCons<E,HList.HNil> single(E e)
Returns a heterogeneous list consisting of a single element.

Parameters:
e - an element to put in a list
Returns:
a heterogeneous list consisting of a single element.

Copyright Tony Morris 2008

This software is released under an open source BSD licence.