A lazily evaluated lists module. This module provides an iterator
type which is an opaque record wrapped around a list continuation.
These iterators are then used to provide a version of the stdlib
lists
functions which only evaluate elements of the iterator
when demanded.
Several simple iterator constructors are provided as well as a
general purpose unfold/2
constructor. Conversion to built in
types for lists and maps as the from_list/1
, to_list/1
,
from_map/1
and to_map/1
functions.
Iterators are evaluated using the next/1
function to evaluate
the next element of the iterator. The output of the next function
is a lazy list: either an improper list of the element and the
continuation or an empty list. Many additional iterator
transformation and evaluation functions are also present.
In general, iterators are not expected to be pure functions. Iterator transformations and evaluations should all evaluate each element exactly once per output iterator (though not all elements may be returned, depending on the function). This implies that impure iterators should not be used with functions which return multiple iterators if all iterators are to be evaluated.
Many of the functions here are unsafe to use with infinite iterators and will either fail to return on the initial call or on the first attempt to evaluate an element of the iterator. Read the documentation carefully when working with such iterators.
The interface for this module attempts to follow the lists
behaviour as closely as possible. Guidelines for how past and
future translation is performed is as follows:
lists
have been implemented as
possible in order to have the best chance of keeping the namespace
clean for future additions to the lists
module. New
functionality is instead implemented in the llists_utils
module.
accumulator() = any()
combine(A, B, Out) = fun((A, B) -> Out)
combine3(A, B, C, Out) = fun((A, B, C) -> Out)
compare(A, B) = fun((A, B) -> boolean())
filtermap(A, B) = fun((A) -> boolean() | {true, B})
fold(Elem, AccIn, AccOut) = fun((Elem, AccIn) -> AccOut)
abstract datatype: iterator(Over)
iterator() = iterator(any())
lazy_list(Over) = nonempty_improper_list(Over, iterator(Over)) | []
map(A, B) = fun((A) -> B)
mapfold(A, AccIn, B, AccOut) = fun((A, AccIn) -> {B, AccOut})
predicate(Elem) = fun((Elem) -> boolean())
tuple_iterator() = iterator(tuple())
unfold(Elem, AccIn, AccOut) = fun((AccIn) -> {Elem, AccOut} | none)
uniq(Elem) = fun((Elem) -> any())
| all/2 |
Returns true if Pred(Elem) returns true for all elements
Elem in Iterator . |
| any/2 |
Returns true if Pred(Elem) returns true for at least one
element Elem in Iterator . |
| append/1 |
Returns an iterator in which all the subiterators of
IteratorOfIterators have been appended. |
| append/2 |
Returns a new iterator Iterator3 , which is made from the elements
of Iterator1 followed by the elements of Iterator2 . |
| concat/1 |
Concatenates the text representation of the elements of Iterator . |
| delete/2 |
Returns a copy of Iterator1 where the first element matching
Elem is deleted, if there is such an element. |
| droplast/1 |
Drops the last element of a Iterator1 . |
| dropwhile/2 |
Drops elements Elem from Iterator1 while Pred(Elem) returns
true and returns the remaining iterator. |
| duplicate/2 |
Returns an iterator containing N copies of term Elem . |
| enumerate/1 |
Returns elements of Iterator1 with each element H replaced by a
tuple of form {I, H} where I is the position of H in
Iterator1 . |
| enumerate/2 |
Returns elements of Iterator1 with each element H replaced by a
tuple of form {I, H} where I is the position of H in
Iterator1 . |
| filter/2 |
Filtered is an iterator of all elements Elem in Iterator1 for
which Pred(Elem) returns true . |
| filtermap/2 |
Calls Fun(Elem) on successive elements Elem of Iterator1 . |
| flatlength/1 |
Equivalent to length(flatten(DeepIterator)) . |
| flatmap/2 |
Takes a function from A s to iterators of B s, and an iterator of
A s (Iterator1 ) and produces an iterator of B s (Iterator2 )
by applying the function to every element in Iterator1 and
appending the resulting iterators. |
| flatten/1 |
Returns a flattened version of DeepIterator . |
| flatten/2 |
Returns a flattened version of DeepIterator with tail Tail
appended. |
| foldl/3 |
Calls Fun(Elem, AccIn) on successive elements A of Iterator ,
starting with AccIn == Acc0 . |
| foldr/3 |
Like foldl/3 , but the list is traversed from right to left. |
| foreach/2 |
Calls Fun(Elem) for each element Elem in Iterator . |
| from_list/1 | Construct a new iterator from an existing list. |
| from_map/1 | Construct a new iterator from an existing map. |
| hd/1 |
Returns the head of Iterator , that is, the first element, for
example:. |
| is_iterator/1 |
Tests if the given Candidate is an iterator, returns true if it
and false otherwise. |
| join/2 |
Inserts Sep between each element in Iterator1 . |
| keydelete/3 |
Returns a copy of TupleIterator1 where the first occurrence of a tuple
whose N th element compares equal to Key is deleted, if there is
such a tuple. |
| keyfind/3 |
Searches the iterator of tuples TupleIterator for a tuple whose
N th element compares equal to Key . |
| keymap/3 |
Returns an iterator of tuples where, for each tuple in
TupleIterator1 , the N th element Term1 of the tuple has been
replaced with the result of calling Fun(Term1) . |
| keymember/3 |
Returns true if there is a tuple in TupleIterator whose N th
element compares equal to Key , otherwise false . |
| keymerge/3 |
Returns the sorted iterator formed by merging TupleIterator1 and
TupleIterator2 . |
| keyreplace/4 |
Returns a copy of TupleIterator1 where the first occurrence of a T
tuple whose N th element compares equal to Key is replaced with
NewTuple , if there is such a tuple T . |
| keysearch/3 |
Searches the iterator of tuples TupleIterator for a tuple whose
N th element compares equal to Key . |
| keysort/2 |
Returns an iterator containing the sorted elements of iterator
TupleIterator1 . |
| keystore/4 |
Returns a copy of TupleIterator1 where the first occurrence of a
tuple T whose N th element compares equal to Key is replaced
with NewTuple , if there is such a tuple T . |
| keytake/3 |
Searches the iterator of tuples TupleIterator1 for a tuple whose
N th element compares equal to Key . |
| last/1 |
Returns the last element in Iterator . |
| length/1 |
Returns the length of Iterator , for example:. |
| map/2 |
Takes a function Fun from A s to B s, and an Iterator1 of
A s and produces an Iterator2 of B s by applying the function
to every element in the iterator. |
| mapfoldl/3 |
Combines the operations of map/2 and foldl/3 into one pass. |
| mapfoldr/3 | Combines the operations of map/2 and foldr/3 into one pass. |
| max/1 |
Returns the first element of Iterator that compares greater than
or equal to all other elements of Iterator . |
| member/2 |
Returns true if Elem matches some element of Iterator ,
otherwise false . |
| merge/1 |
Returns the sorted iterator formed by merging all the subiterators
of IteratorOfIterators . |
| merge/2 |
Returns the sorted iterator formed by merging Iterator1 and
Iterator2 . |
| merge/3 |
Returns the sorted iterator formed by merging Iterator1 and
Iterator2 . |
| merge3/3 |
Returns the sorted iterator formed by merging Iterator1 ,
Iterator2 , and Iterator3 . |
| min/1 |
Returns the first element of Iterator that compares less than or
equal to all other elements of Iterator . |
| next/1 |
Demand an element from Iterator . |
| nth/2 |
Returns the N th element of Iterator . |
| nthtail/2 |
Returns the N th tail of Iterator1 , that is, the subiterator of
Iterator1 starting at N +1 and continuing up to the end of the
iterator. |
| partition/2 |
Partitions Iterator1 into two iterators, where the first iterator
contains all elements for which Pred(Elem) returns true , and
the second iterator contains all elements for which Pred(Elem)
returns false . |
| prefix/2 |
Returns true if Iterator1 is a prefix of Iterator2 , otherwise false . |
| reverse/1 |
Returns an iterator with the elements in Iterator1 in reverse
order. |
| reverse/2 |
Returns a list with the elements in Iterator1 in reverse order,
with tail TailIterator appended. |
| search/2 |
If there is a Value in Iterator such that Pred(Value) returns true ,
returns {value, Value} for the first such Value , otherwise returns
false . |
| seq/2 | |
| seq/3 |
Returns an iterator over a sequence of integers that starts with
From and contains the successive results of adding Incr to the
previous element, until To is reached or passed (in the latter
case, To is not an element of the sequence). |
| sort/1 |
Returns an iterator containing the sorted elements of Iterator1 . |
| sort/2 |
Returns an iterator containing the sorted elements of Iterator1 ,
according to the ordering function Fun . |
| split/2 |
Splits Iterator1 into Iterator2 and Iterator3 . |
| splitwith/2 |
Partitions Iterator1 into two iterators according to Pred . |
| sublist/2 | |
| sublist/3 |
Returns the portion of Iterator1 starting at Start and with
(maximum) Len elements. |
| subtract/2 |
Returns a new iterator Iterator3 that is a copy of Iterator1 ,
subjected to the following procedure: for each element in
Iterator2 , its first occurrence in Iterator1 is deleted. |
| suffix/2 |
Returns true if Iterator1 is a suffix of Iterator2 , otherwise
false . |
| sum/1 |
Returns the sum of the elements in Iterator . |
| takewhile/2 |
Takes elements Elem from Iterator1 while Pred(Elem) returns
true, that is, the function returns the longest prefix of the
iterator for which all elements satisfy the predicate. |
| tl/1 |
Returns the tail of Iterator1 , that is, the iterator minus the
first element, for example:. |
| to_list/1 |
Fully evaluate Iterator and return a list containing all elements
produced. |
| to_map/1 |
Fully evaluate an Iterator of {Key, Value} tuples and return a
map containing all pairs produced. |
| ukeymerge/3 |
Returns the sorted iterator formed by merging TupleIterator1 and
TupleIterator2 . |
| ukeysort/2 |
Returns a iterator containing the sorted elements of iterator
TupleIterator1 where all except the first tuple of the tuples
comparing equal have been deleted. |
| umerge/1 |
Returns the sorted iterator formed by merging all the subiterators of
IteratorOfIterators . |
| umerge/2 |
Returns the sorted iterator formed by merging Iterator1 and
Iterator2 . |
| umerge/3 |
Returns the sorted iterator formed by merging Iterator1 and
Iterator2 . |
| umerge3/3 |
Returns the sorted iterator formed by merging Iterator1 ,
Iterator2 , and Iterator3 . |
| unfold/2 |
Construct a new iterator from a Fun(AccIn) function and an
initial accumulator value Acc0 . |
| uniq/1 | Returns an iterator containing the elements of Iterator1 with duplicated elements removed (preserving the order of the elements). |
| uniq/2 | Returns an iterator containing the elements of Iterator1 without the elements for which Fun returned duplicate values (preserving the order of the elements). |
| unzip/1 | "Unzips" a iterator of two-tuples into two iterators, where the first iterator contains the first element of each tuple, and the second iterator contains the second element of each tuple. |
| unzip3/1 | "Unzips" a iterator of three-tuples into three iterators, where the first iterator contains the first element of each tuple, the second iterator contains the second element of each tuple, and the third iterator contains the third element of each tuple. |
| usort/1 |
Returns a iterator containing the sorted elements of Iterator1
where all except the first element of the elements comparing equal
have been deleted. |
| usort/2 |
Returns a iterator containing the sorted elements of Iterator1 where all
except the first element of the elements comparing equal according
to the ordering function Fun have been deleted. |
| zip/2 | "Zips" two iterators of equal length into one iterator of two-tuples, where the first element of each tuple is taken from the first iterator and the second element is taken from the corresponding element in the second iterator. |
| zip3/3 | "Zips" three iterators of equal length into one iterator of three-tuples, where the first element of each tuple is taken from the first iterator, the second element is taken from the corresponding element in the second iterator, and the third element is taken from the corresponding element in the third iterator. |
| zipwith/3 | Combines the elements of two iterators of equal length into one iterator. |
| zipwith3/4 | Combines the elements of three iterators of equal length into one iterator. |
Returns true
if Pred(Elem)
returns true
for all elements
Elem
in Iterator
.
Iterator
when Pred(Elem)
returns false
or
when Iterator
is empty.
Returns true
if Pred(Elem)
returns true
for at least one
element Elem
in Iterator
.
Iterator
when Pred(Elem)
returns true
or
when Iterator
is empty.
append(IteratorOfIterators) -> Iterator
Returns an iterator in which all the subiterators of
IteratorOfIterators
have been appended.
append(Iterator1, Iterator2) -> Iterator3
Returns a new iterator Iterator3
, which is made from the elements
of Iterator1
followed by the elements of Iterator2
.
Concatenates the text representation of the elements of Iterator
.
The elements of Iterator
can be atoms, integers, floats, or
strings. The iterator will be fully evaluated, infinite iterators
will never return.
delete(Elem1, Iterator1) -> Iterator2
Returns a copy of Iterator1
where the first element matching
Elem
is deleted, if there is such an element.
Drops the last element of a Iterator1
. The Iterator1
is to be
non-empty, otherwise the function crashes with a function_clause
.
dropwhile(Pred, Iterator1) -> Iterator2
Drops elements Elem
from Iterator1
while Pred(Elem)
returns
true and returns the remaining iterator.
duplicate(N, Elem) -> Iterator
Returns an iterator containing N
copies of term Elem
. If N
is
infinity
iterator will return infinite copies of Elem
.
enumerate(Iterator1) -> Iterator2
Returns elements of Iterator1
with each element H
replaced by a
tuple of form {I, H}
where I
is the position of H
in
Iterator1
. The enumeration starts with 1 and increases by 1
in each step.
That is, enumerate/1
behaves as if it had been defined as
follows, except that the iterator is not fully evaluated before
elements are returned:
enumerate(Iterator1) -> {Iterator2, _ } = llists:mapfoldl(fun(T, Acc) -> {{Acc, T}, Acc+1} end, 1, Iterator1), Iterator2. ``` Example: ``` > llists:to_list( llists:enumerate( llists:from_list([one, two, three]))). [{1,one},{2,two},{3,three}]
enumerate(Index, Iterator1) -> Iterator2
Returns elements of Iterator1
with each element H
replaced by a
tuple of form {I, H}
where I
is the position of H
in
Iterator1
. The enumeration starts with Index
and increases by 1
in each step.
That is, enumerate/1
behaves as if it had been defined as
follows, except that the iterator is not fully evaluated before
elements are returned:
enumerate(Index, Iterator1) -> {Iterator2, _ } = llists:mapfoldl(fun(T, Acc) -> {{Acc, T}, Acc+1} end, Index, Iterator1), Iterator2. ``` Example: ``` > llists:to_list( llists:enumerate(0, llists:from_list([one, two, three]))). [{0,one},{1,two},{2,three}]
filter(Pred, Iterator1) -> Iterator2
Filtered
is an iterator of all elements Elem
in Iterator1
for
which Pred(Elem)
returns true
.
filtermap(Fun, Iterator1) -> Iterator2
Calls Fun(Elem)
on successive elements Elem
of Iterator1
.
Fun/1
must return either a Boolean or a tuple {true, Value}
.
The function returns the iterator of elements for which Fun
returns a new value, where a value of true
is synonymous with
{true, Elem}
.
That is, filtermap behaves as if it had been defined as follows, except that the iterator is not fully evaluated before elements are returned:
filtermap(Fun, Iterator) -> llists:foldr(fun(Elem, Acc) -> case Fun(Elem) of false -> Acc; true -> [Elem|Acc]; {true,Value} -> [Value|Acc] end end, [], Iterator).Example:
> llists:to_list( > llists:filtermap( > fun(X) -> case X rem 2 of 0 -> {true, X div 2}; _ -> false end end, > llists:seq(1, 5))). [1,2]
flatlength(DeepIterator) -> Length
Equivalent to length(flatten(DeepIterator))
.
flatmap(Fun, Iterator1) -> Iterator2
Takes a function from A
s to iterators of B
s, and an iterator of
A
s (Iterator1
) and produces an iterator of B
s (Iterator2
)
by applying the function to every element in Iterator1
and
appending the resulting iterators.
That is, flatmap behaves as if it had been defined as follows:
llists:flatmap(Fun, Iterator) -> llists:append(llists:map(Fun, Iterator)).Example:
> llists:to_list( > llists:flatmap( > fun(X)->llists:from_list([X,X]) end, > llists:from_list([a,b,c]))). [a,a,b,b,c,c]
Returns a flattened version of DeepIterator
.
flatten(DeepIterator, TailIterator) -> Iterator
Returns a flattened version of DeepIterator
with tail Tail
appended.
foldl(Fun, Acc0, Iterator) -> AccOut
Calls Fun(Elem, AccIn)
on successive elements A
of Iterator
,
starting with AccIn
== Acc0
. Fun/2
must return a new
accumulator, which is passed to the next call. The function returns
the final value of the accumulator. Acc0
is returned if the
iterator is empty.
foldr(Fun, Acc0, Iterator) -> AccOut
Like foldl/3
, but the list is traversed from right to left.
> P = fun(A, AccIn) -> io:format("~p ", [A]), AccIn end. #Fun<erl_eval.12.2225172> > llists:foldl(P, void, llists:seq(1, 3)). 1 2 3 void > lists:foldr(P, void, llists:seq(1, 3)). 3 2 1 voidThe iterator is fully evaluated before the fold begins, infinite iterators will never return.
foldl/3
does not fully evaluate the
iterator and is usually preferred to foldr/3
.
See also: foldl/3.
Calls Fun(Elem)
for each element Elem
in Iterator
. This
function is used for its side effects and the evaluation order is
defined to be the same as the order of the elements in the
iterator.
Construct a new iterator from an existing list. Each element of the list will be returned in order by the returned iterator.
Construct a new iterator from an existing map. Each {Key, Value}
tuple of the map will be returned in an arbitrary order by the
returned iterator.
Returns the head of Iterator
, that is, the first element, for
example:
> llists:hd(llists:seq(1, 5)). 1Failure:
badarg
if Iterator
is empty.
is_iterator(Candidate) -> boolean()
Tests if the given Candidate
is an iterator, returns true
if it
and false
otherwise.
join(Sep, Iterator1) -> Iterator2
Inserts Sep
between each element in Iterator1
. Has no effect on
an empty iterator or on a singleton iterator. For example:
> llists:to_list(llists:join(x, llists:from_list([a,b,c]))). [a,x,b,x,c] > llists:to_list(lists:join(x, llists:from_list([a]))). [a] > llists:to_list(lists:join(x, llists:from_list([]))). []Evaluates one element further in the iterator than the current value.
keydelete(Key, N, TupleIterator1) -> TupleIterator2
Returns a copy of TupleIterator1
where the first occurrence of a tuple
whose N
th element compares equal to Key
is deleted, if there is
such a tuple.
keyfind(Key, N, TupleIterator) -> Tuple | false
Searches the iterator of tuples TupleIterator
for a tuple whose
N
th element compares equal to Key
. Returns Tuple
if such a
tuple is found, otherwise false
.
keymap(Fun, N, TupleIterator1) -> TupleIterator2
Returns an iterator of tuples where, for each tuple in
TupleIterator1
, the N
th element Term1
of the tuple has been
replaced with the result of calling Fun(Term1)
.
> Fun = fun(Atom) -> atom_to_list(Atom) end. #Fun<erl_eval.6.10732646> 2> llists:to_list( 2> llists:keymap( 2> Fun, 2> 2, 2> llists:from_list([{name,jane,22},{name,lizzie,20},{name,lydia,15}]))). [{name,"jane",22},{name,"lizzie",20},{name,"lydia",15}]
keymember(Key, N, TupleIterator) -> boolean()
Returns true
if there is a tuple in TupleIterator
whose N
th
element compares equal to Key
, otherwise false
.
keymerge(N, TupleIterator1, TupleIterator2) -> TupleIterator3
Returns the sorted iterator formed by merging TupleIterator1
and
TupleIterator2
. The merge is performed on the N
th element of
each tuple. Both TupleIterator1
and TupleIterator2
must be
key-sorted before evaluating this function. When two tuples compare
equal, the tuple from TupleIterator1
is picked before the tuple
from TupleIterator2
.
keyreplace(Key, N, TupleIterator1, NewTuple) -> TupleIterator2
Returns a copy of TupleIterator1
where the first occurrence of a T
tuple whose N
th element compares equal to Key
is replaced with
NewTuple
, if there is such a tuple T
.
keysearch(Key, N, TupleIterator) -> {value, Tuple} | false
Searches the iterator of tuples TupleIterator
for a tuple whose
N
th element compares equal to Key
. Returns {value, Tuple}
if
such a tuple is found, otherwise false
.
See also: keyfind/3.
keysort(N, TupleIterator1) -> TupleIterator2
Returns an iterator containing the sorted elements of iterator
TupleIterator1
. Sorting is performed on the N
th element of the
tuples. The sort is stable.
keystore(Key, N, TupleIterator1, NewTuple) -> TupleIterator2
Returns a copy of TupleIterator1
where the first occurrence of a
tuple T
whose N
th element compares equal to Key
is replaced
with NewTuple
, if there is such a tuple T
. If there is no such
tuple T
, a copy of TupleIterator1
where NewTuple
has been
appended to the end is returned.
keytake(Key, N, TupleIterator1) -> {value, Tuple, TupleIterator2}
Searches the iterator of tuples TupleIterator1
for a tuple whose
N
th element compares equal to Key
. Returns
{value, Tuple, TupleIterator2}
if such a tuple is found,
otherwise false
. TupleIterator2
is a copy of TupleIterator1
where the first occurrence of Tuple
has been removed.
TupleIterator1
until a match is found. Iterating over
TupleIterator2
will evaluate the same elements again. If no match
is found, infinite iterators will never return.
Returns the last element in Iterator
.
Returns the length of Iterator
, for example:
> llists:length(llists:seq(1, 9)). 9The iterator will be fully evaluated, infinite iterators will never return.
Takes a function Fun
from A
s to B
s, and an Iterator1
of
A
s and produces an Iterator2
of B
s by applying the function
to every element in the iterator.
mapfoldl(Fun, Acc0, Iterator1) -> {Iterator2, AccOut}
Combines the operations of map/2
and foldl/3
into one pass.
> % Summing the elements in an iterator and double them at the same time: > DoubleAndSum = fun(X, Sum) -> {2*X, X+Sum} end, > {Mapped, Acc} = llists:mapfoldl(DoubleAndSum, 0, llists:seq(1,5)), > {llists:to_list(Mapped), Acc}. {[2,4,6,8,10],15}The iterator is fully evaluated before the mapfold begins, infinite iterators will never return.
mapfoldr(Fun, Acc0, Iterator1) -> {Iterator2, AccOut}
Combines the operations of map/2 and foldr/3 into one pass.
The iterator is fully evaluated before the mapfold begins, infinite iterators will never return.
Returns the first element of Iterator
that compares greater than
or equal to all other elements of Iterator
.
Returns true
if Elem
matches some element of Iterator
,
otherwise false
.
Iterator
when a match is found or when
Iterator
is empty.
merge(IteratorOfIterators) -> Iterator
Returns the sorted iterator formed by merging all the subiterators
of IteratorOfIterators
. All subiterators must be sorted before
evaluating this function. When two elements compare equal, the
element from the subiterator with the lowest position in
IteratorOfIterators
is picked before the other element.
merge(Iterator1, Iterator2) -> Iterator3
Returns the sorted iterator formed by merging Iterator1
and
Iterator2
. Both Iterator1
and Iterator2
must be sorted before
evaluating this function. When two elements compare equal, the
element from Iterator1
is picked before the element from
Iterator2
.
merge(Fun, Iterator1, Iterator2) -> Iterator3
Returns the sorted iterator formed by merging Iterator1
and
Iterator2
. Both Iterator1
and Iterator2
must be sorted
according to the ordering function Fun
before evaluating this
function. Fun(A, B)
is to return true
if A
compares less than
or equal to B
in the ordering, otherwise false
. When two
elements compare equal, the element from Iterator1
is picked
before the element from Iterator2
.
merge3(Iterator1, Iterator2, Iterator3) -> Iterator4
Returns the sorted iterator formed by merging Iterator1
,
Iterator2
, and Iterator3
. All of Iterator1
, Iterator2
, and
Iterator3
must be sorted before evaluating this function. When
two elements compare equal, the element from Iterator1
, if there
is such an element, is picked before the other element, otherwise
the element from Iterator2
is picked before the element from
Iterator3
.
Returns the first element of Iterator
that compares less than or
equal to all other elements of Iterator
.
Demand an element from Iterator
. Will return either an improper
list containing the next element and an iterator as a continuation,
or an empty list if iteration is complete.
Examples:
> llists:next(llists:seq(1, 5)). [1|{iterator,#Fun<llists.1.134155648>}] > llists:next(llists:from_list([])). []
Returns the N
th element of Iterator
.
> lists:nth(3, [a, b, c, d, e]). c
nthtail(N, Iterator1) -> Iterator2
Returns the N
th tail of Iterator1
, that is, the subiterator of
Iterator1
starting at N
+1 and continuing up to the end of the
iterator.
partition(Pred, Iterator1) -> {Satisfying, NotSatisfying}
Partitions Iterator1
into two iterators, where the first iterator
contains all elements for which Pred(Elem)
returns true
, and
the second iterator contains all elements for which Pred(Elem)
returns false
.
> {Satisfying, NotSatisfying} = llists:partition( > fun(A) -> A rem 2 == 1 end, > llists:seq(1, 7)), > {llists:to_list(Satisfying), llists:to_list(NotSatisfying)}. {[1,3,5,7],[2,4,6]} > {Satisfying, NotSatisfying} = llists:partition( > fun(A) -> is_atom(A) end, > llists:from_list([a,b,1,c,d,2,3,4,e])), > {llists:to_list(Satisfying), llists:to_list(NotSatisfying)}. {[a,b,c,d,e],[1,2,3,4]}
For a different way to partition a list, see splitwith/2.
Each result iterator will evaluate elements of the original iterator independently. If both are evaluated, this will result in all elements being evaluated twice.See also: splitwith/2.
Returns true
if Iterator1
is a prefix of Iterator2
, otherwise false
.
Returns an iterator with the elements in Iterator1
in reverse
order.
reverse(Iterator1, TailIterator) -> Iterator2
Returns a list with the elements in Iterator1
in reverse order,
with tail TailIterator
appended.
> lists:reverse([1, 2, 3, 4], [a, b, c]). [4,3,2,1,a,b,c]The iterator
Iterator1
will be fully evaluated, infinite
iterators will never return.
If there is a Value
in Iterator
such that Pred(Value)
returns true
,
returns {value, Value}
for the first such Value
, otherwise returns
false
.
See also: seq/3.
seq(From, To, Incr) -> Iterator
Returns an iterator over a sequence of integers that starts with
From
and contains the successive results of adding Incr
to the
previous element, until To
is reached or passed (in the latter
case, To
is not an element of the sequence). Incr
defaults to
1.
To < From - Incr
and Incr > 0
.To > From - Incr
and Incr < 0
.Incr =:= 0
and From =/= To
.length(lists:seq(From, To)) =:= To - From + 1 length(lists:seq(From, To, Incr)) =:= (To - From + Incr) div Incr
Returns an iterator containing the sorted elements of Iterator1
.
sort(Fun, Iterator1) -> Iterator2
Returns an iterator containing the sorted elements of Iterator1
,
according to the ordering function Fun
. Fun(A, B)
is to return
true
if A
compares less than or equal to B
in the ordering,
otherwise false
.
split(N, Iterator1) -> {Iterator2, Iterator3}
Splits Iterator1
into Iterator2
and Iterator3
. Iterator2
contains the first N
elements and Iterator3
the remaining
elements (the N
th tail).
N
elements of Iterator1
to construct
Iterator3
.
splitwith(Pred, Iterator1) -> {Iterator2, Iterator3}
Partitions Iterator1
into two iterators according to Pred
.
splitwith/2
behaves as if it is defined as follows:
llists:splitwith(Pred, Iterator) -> {llists:takewhile(Pred, Iterator), llists:dropwhile(Pred, Iterator)}.Examples:
> {Before, After} = llists:splitwith(fun(A) -> A rem 2 == 1 end, llists:seq(1, 7)), > {llists:to_list(Before), llists:to_list(After)}. {[1],[2,3,4,5,6,7]} > {Before, After} = lists:splitwith(fun(A) -> is_atom(A) end, [a,b,1,c,d,2,3,4,e]), > {llists:to_list(Before), llists:to_list(After)}. {[a,b],[1,c,d,2,3,4,e]}
For a different way to partition an iterator, see partition/2.
Evaluates the elements ofIterator
for which Pred(Elem)
returns
false
. If Pred
never returns false
, infinite iterators will
not return.
See also: partition/2.
sublist(Iterator1, Len) -> Iterator2
See also: sublist/3.
sublist(Iterator1, Start, Len) -> Iterator2
Returns the portion of Iterator1
starting at Start
and with
(maximum) Len
elements. Start
defaults to 1. It is not an error
for Start+Len
to exceed the length of the iterator, in that case
the whole iterator is returned.
subtract(Iterator1, Iterator2) -> Iterator3
Returns a new iterator Iterator3
that is a copy of Iterator1
,
subjected to the following procedure: for each element in
Iterator2
, its first occurrence in Iterator1
is deleted.
> lists:subtract("123212", "212"). "312".
Iterator2
is fully evaluated, infinite iterators will never return.
Returns true
if Iterator1
is a suffix of Iterator2
, otherwise
false
.
Iterator1
and Iterator2
are fully evaluated, infinite
iterators will never return.
Returns the sum of the elements in Iterator
.
takewhile(Pred, Iterator1) -> Iterator2
Takes elements Elem
from Iterator1
while Pred(Elem)
returns
true, that is, the function returns the longest prefix of the
iterator for which all elements satisfy the predicate.
Returns the tail of Iterator1
, that is, the iterator minus the
first element, for example:
> llists:to_list( > llists:tl( > llists:from_list([geesties, guilies, beasties]))). [guilies, beasties]Failure:
badarg
if Iterator1
is empty.
Fully evaluate Iterator
and return a list containing all elements
produced. Infinite iterators will never return.
to_map(Iterator) -> Map
Fully evaluate an Iterator
of {Key, Value}
tuples and return a
map containing all pairs produced. Infinite iterators will never
return.
Key
s are present in the iterator it is undefined
which will appear in the final map.
ukeymerge(N, TupleIterator1, TupleIterator2) -> TupleIterator3
Returns the sorted iterator formed by merging TupleIterator1
and
TupleIterator2
. The merge is performed on the N
th element of each
tuple. Both TupleIterator1
and TupleIterator2
must be key-sorted without
duplicates before evaluating this function. When two tuples compare
equal, the tuple from TupleIterator1
is picked and the one from
TupleIterator2
is deleted.
ukeysort(N, TupleIterator1) -> TupleIterator2
Returns a iterator containing the sorted elements of iterator
TupleIterator1
where all except the first tuple of the tuples
comparing equal have been deleted. Sorting is performed on the
N
th element of the tuples.
umerge(IteratorOfIterators) -> Iterator
Returns the sorted iterator formed by merging all the subiterators of
IteratorOfIterators
. All subiterators must be sorted and contain no duplicates
before evaluating this function. When two elements compare equal,
the element from the subiterator with the lowest position in
IteratorOfIterators
is picked and the other is deleted.
umerge(Iterator1, Iterator2) -> Iterator3
Returns the sorted iterator formed by merging Iterator1
and
Iterator2
. Both Iterator1
and Iterator2
must be sorted and
contain no duplicates before evaluating this function. When two
elements compare equal, the element from Iterator1
is picked and
the one from Iterator2
is deleted.
umerge(Fun, Iterator1, Iterator2) -> Iterator3
Returns the sorted iterator formed by merging Iterator1
and
Iterator2
. Both Iterator1
and Iterator2
must be sorted
according to the ordering function Fun
and contain no duplicates
before evaluating this function. Fun(A, B)
is to return true
if
A
compares less than or equal to B
in the ordering, otherwise
false
. When two elements compare equal, the element from
Iterator1
is picked and the one from Iterator2
is deleted.
umerge3(Iterator1, Iterator2, Iterator3) -> Iterator4
Returns the sorted iterator formed by merging Iterator1
,
Iterator2
, and Iterator3
. All of Iterator1
, Iterator2
, and
Iterator3
must be sorted and contain no duplicates before
evaluating this function. When two elements compare equal, the
element from Iterator1
is picked if there is such an element,
otherwise the element from Iterator2
is picked, and the other is
deleted.
unfold(Fun, Acc0) -> Iterator
Construct a new iterator from a Fun(AccIn)
function and an
initial accumulator value Acc0
. When an element is demanded of
the iterator, Fun
will be invoked with the current accumulator to
produce a value. Fun
is expected to return a tuple of
{Elem, AccOut}
: the element to produce and the new accumulator
value. If iteration is complete, Fun
should return none
.
Returns an iterator containing the elements of Iterator1 with duplicated elements removed (preserving the order of the elements). The first occurrence of each element is kept.
May require arbitrarily large quantities of memory to track all elements seen so far. If only duplicate elements remain, infinite iterators will never return.See also: llists_utils:unique/1.
uniq(Fun, Iterator1) -> Iterator2
Returns an iterator containing the elements of Iterator1 without the elements for which Fun returned duplicate values (preserving the order of the elements). The first occurrence of each element is kept.
May require arbitrarily large quantities of memory to track all transformed elements seen so far. If only duplicate transformed elements remain, infinite iterators will never return.unzip(Iterator1) -> {Iterator2, Iterator3}
"Unzips" a iterator of two-tuples into two iterators, where the first iterator contains the first element of each tuple, and the second iterator contains the second element of each tuple.
unzip3(Iterator1) -> {Iterator2, Iterator3, Iterator4}
"Unzips" a iterator of three-tuples into three iterators, where the first iterator contains the first element of each tuple, the second iterator contains the second element of each tuple, and the third iterator contains the third element of each tuple.
Returns a iterator containing the sorted elements of Iterator1
where all except the first element of the elements comparing equal
have been deleted.
usort(Fun, Iterator1) -> Iterator2
Returns a iterator containing the sorted elements of Iterator1
where all
except the first element of the elements comparing equal according
to the ordering function Fun
have been deleted. Fun(A, B)
is to
return true
if A
compares less than or equal to B
in the ordering,
otherwise false
.
zip(Iterator1, Iterator2) -> Iterator3
"Zips" two iterators of equal length into one iterator of two-tuples, where the first element of each tuple is taken from the first iterator and the second element is taken from the corresponding element in the second iterator.
zip3(Iterator1, Iterator2, Iterator3) -> Iterator4
"Zips" three iterators of equal length into one iterator of three-tuples, where the first element of each tuple is taken from the first iterator, the second element is taken from the corresponding element in the second iterator, and the third element is taken from the corresponding element in the third iterator.
zipwith(Combine, Iterator1, Iterator2) -> Iterator3
Combines the elements of two iterators of equal length into one iterator.
For each pair X, Y
of iterator elements from the two iterators, the element
in the result iterator is Combine(X, Y)
.
llists:zipwith(fun(X, Y) -> {X, Y} end, Iterator1, Iterator2)
is
equivalent to llists:zip(Iterator1, Iterator2)
.
> llists:to_list( > llists:zipwith(fun(X, Y) -> X + Y end, llists:seq(1, 3), llist:seq(4, 6))). [5,7,9]
zipwith3(Combine, Iterator1, Iterator2, Iterator3) -> Iterator4
Combines the elements of three iterators of equal length into one
iterator. For each triple X, Y, Z
of iterator elements from the
three iterators, the element in the result iterator is
Combine(X, Y, Z)
.
zipwith3(fun(X, Y, Z) -> {X, Y, Z} end, Iterator1, Iterator2, Iterator3)
is equivalent to zip3(Iterator1, Iterator2, Iterator3)
.
> llists:to_list( > llists:zipwith3( > fun(X, Y, Z) -> X + Y + Z end, > llists:seq(1, 3), > llists:seq(4, 6), > llists:seq(7, 9))). [12,15,18] > llists:to_list( > llists:zipwith3( > fun(X, Y, Z) -> [X, Y, Z] end, > llists:from_list([a,b,c]), > llists:from_list([x,y,z]), > llists:seq(1, 3))). [[a,x,1],[b,y,2],[c,z,3]]
Generated by EDoc


Meet other women entrepreneurs and business owners in the same field and learn from other perspectives and best practices.
Share your business and get feedback and crowdfunding from our extensive community.
Join as a mentor and make a lifelong impact on other women as well as an opportunity to advertise your business and hire talented jobseekers.
Connect with other women entrepreneurs and business owners about your business and grow together. Learn from established business owners and share your input on other businesses as well.
Not only do we provide mentorship with established mentors, but also an opportunity for business owners to advertise their businesses and gain funding.
Looking for feedback or career advice from people who were once in the same situation as yourself?
Hear are some things we've heard from our community members.
I was able to discover my authentic self through thrivHer.  With thriVer I made it come true.
I found a valuable connection to a community of women and LGBTQ+ entrepreneurs - bright and like-minded women striving for greatness.
thrivHer is helping my project gain traction in the local community. It is only a couple of weeks until it takes off, and I'm so excited!
Feel free to send us anything that could make this a better community and environment for you and other womenx.


| Home | Trees | Indices | Help |
|
|---|
|
|
rJSmin is a javascript minifier written in python.
The minifier is based on the semantics of jsmin.c by Douglas Crockford.
The module is a re-implementation aiming for speed, so it can be used at runtime (rather than during a preprocessing step). Usually it produces the same results as the original jsmin.c. It differs in the following ways:
Since most parts of the logic are handled by the regex engine it's way faster than the original python port of jsmin.c by Baruch Even. The speed factor varies between about 6 and 55 depending on input and python version (it gets faster the more compressed the input already is). Compared to the speed-refactored python port by Dave St.Germain the performance gain is less dramatic but still between 3 and 50 (for huge inputs). See the docs/BENCHMARKS file for details.
rjsmin.c is a reimplementation of rjsmin.py in C and speeds it up even more.
Both python 2 and python 3 are supported.
Copyright: Copyright 2011 - 2015 André Malo or his licensors, as applicable
License:
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Version: 1.0.12
Author: André Malo
| Functions | |||
| str |
|
| Function Details |
Minify javascript based on jsmin.c by Douglas Crockford. Instead of parsing the stream char by char, it uses a regular expression approach which minifies the whole script with one big substitution regex.
|
| Home | Trees | Indices | Help |
|
|---|


Preparation time
over 2 hours
Cooking time
30 mins to 1 hour
Serves
Makes 6
Dietary
Warmth brings out the gorgeous aromas and colours of peaches and raspberry to tickle the taste buds in this unusual pavlova.
For the pavlovas, preheat the oven to 140C/280F/Gas 1.
Place the egg whites into a clean bowl and whisk until soft peaks form when the whisk is removed from the bowl. Add the sugar, a spoonful at a time, while whisking continuously. Whisk until all of the sugar is incorporated and stiff peaks form when the whisk is removed. Gently fold in the cornflour and white wine vinegar.
Line a baking tray with parchment paper and place six large spoonfuls of the pavlova mixture onto the tray, in small rounds with a small hollow in the middle. Bake in the oven for 10-12 minutes, or until crisp but not coloured, then turn the oven off and leave for 2-3 hours (or preferably overnight).
Just before serving, whip the double cream in a bowl until soft peaks form when the whisk is removed.
For the roasted peaches, preheat the oven to 170C/340F/Gas 3.
Place 150g/5oz of the sugar into a heavy-based pan with the water and dissolve over a low heat, stirring occasionally to make a syrup. When the sugar syrup is completely clear, increase the heat and cook for 4-5 minutes, or until the mixture changes colour to a light caramel.
Remove the pan from the heat and carefully stir in the orange and peach juice (be careful as the mixture may spit). Set aside to cool.
Using a mini blowtorch, blacken the skins of the peaches, then use a clean cloth to wipe the skins away. Brush the peeled peaches with the soft butter, using a pastry brush. Sprinkle the peaches with the remaining sugar, making sure they are thoroughly coated (alternatively, sprinkle the sugar on a plate and roll the peaches in it).
Place the peaches into a small roasting tin and spoon the caramel over. Roast in the oven for 30 minutes, basting the peaches every ten minutes, until the peaches are golden-brown and caramelised.
Add the raspberries and almonds to the roasting tin during the final ten minutes of cooking.
To serve, place a meringue round each onto six serving plates. Spoon the whipped cream on top and place a peach in the centre of each meringue. Spoon the caramel sauce around and scatter the raspberries and almonds over and around.


edu-Klass
Home
Courses
Progress
Profile
About Us
Contact
Logout
Course 01
Click the button below
Start Course
Course 02
Click the button below
Start Course
Course 03
Click the button below
Start Course
Course 04
Click the button below
Start Course
Course 05
Click the button below
Start Course
Course 06
Click the button below
Start Course
Course 07
Click the button below
Start Course
Course 08
Click the button below
Start Course
Course 09
Click the button below
Start Course
Course 10
Click the button below
Start Course


@* * Copyright 2018 HM Revenue & Customs * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *@ @import config.FrontendAppConfig @(appConfig: FrontendAppConfig)(implicit request: Request[_], messages: Messages) @main_template( title = messages("councilTaxUpload.title"), appConfig = appConfig, bodyClasses = None) { @components.heading("councilTaxUpload.heading")


{% load static %} {% include 'bases/head_base.html' %}
{{ user.username }}{% if user.first_name != '' %}, also known as {{ user.first_name }} {{user.last_name }}{% endif %}
{{ user.profile.tasks_completed }} tasks completed
Joined on {{ user.date_joined }}


SUTEX
Welcome To SUTEX's learning resources
We provide you with AR/VR books support(ncert) and 3-d models which can make education more easier!
AR books
You just need to click on this link from your AR support phone and scan our PDFs - click!
PDF's at -> here
3-D models
we provide high range of 3-d models which makes both learning and teaching easier!
click here


- In the new versions of glibc there is a function
__builtin_va_arg that takes a type as its second argument. CIL
handles that through a slight trick. As it parses the function it changes a
call like:
mytype x = __builtin_va_arg(marker, mytype)
into
mytype x;
__builtin_va_arg(marker, sizeof(mytype), &x);
The latter form is used internally in CIL. However, the CIL pretty printer
will try to emit the original code.
- The implementation of bitsSizeOf does not take into account the
packing pragmas. However it was tested to be accurate on cygwin/gcc-2.95.3,
Linux/gcc-2.95.3 and on Windows/MSVC.
- We do not support tri-graph sequences (ISO <IP_ADDRESS>).
- GCC has a strange feature called ``extern inline''. Such a function can
be defined twice: first with the ``extern inline'' specifier and the second
time without it. If optimizations are turned off then the ``extern inline''
definition is considered a prototype (its body is ignored). If optimizations
are turned on then the extern inline function is inlined at all of its
occurrences from the point of its definition all the way to the point where the
(optional) second definition appears. No body is generated for an extern
inline function. A body is generated for the real definition and that one is
used in the rest of the file.
CIL will rename your extern inline function (and its uses) with the suffix
__extinline. This means that if you have two such definition, that do
different things and the optimizations are not on, then the CIL version might
compute a different answer !
Also, if you have multiple extern inline declarations then CIL will ignore
but the first one. This is not so bad because GCC itself would not like it.
- There are still a number of bugs in handling some obscure features of
GCC. For example, when you use variable-length arrays, CIL turns them into
calls to alloca. This means that they are deallocated when the function
returns and not when the local scope ends.
- CIL cannot parse a line containing an empty #pragma.
- CIL cannot parse the following code (fixing this problem would require
extensive hacking of the LALR grammar):
int bar(int ()); // This prototype cannot be parsed
int bar(int x()); // If you add a name to the function, it works
int bar(int (*)()); // This also works (and it is more appropriate)
- CIL also cannot parse certain K&R old-style prototypes with missing
return type:
g(); // This cannot be parsed
int g(); // This is Ok
- CIL does not understand some obscure combinations of type specifiers
(``signed'' and ``unsigned'' applied to typedefs that themselves contain a
sign specification; you could argue that this should not be allowed anyway):
typedef signed char __s8;
__s8 unsigned uchartest; // This is unsigned char for gcc
- Like GCC version 3, CIL treats ``__thread'' as a keyword.
Therefore it will reject programs that use __thread as an
identifier, even if you are using MSVC or an older version of GCC.
(Some versions of pthread.h have this problem.)


The journey into the Westwood that had taken him perhaps half a dozen strides or so in the wolf dream, out of the mountains and across the Sand Hills, lasted three long days on horses. The Aiel had no trouble keeping up afoot, but then the animals themselves could not manage much speed with the land mostly up and down as it was. Perrin’s wounds itched fiercely, healing; Faile’s ointment seemed to be working.
It was a quiet journey by and large, broken more often by the bark of a hunting fox or the echoing cry of a hawk than by anyone speaking. At least they saw no more ravens. More than once he thought Faile was about to bring her mare over close to him, about to say something, but each time she restrained herself. He was glad of it; he wanted to talk to her more than anything, but what if he found himself making up with her? He berated himself for wanting to. She had tricked Loial, tricked him. She was going to make everything worse; make it harder. He wished he could kiss her again. He wished she would decide she had had her fill of him and go. Why did she have to be so stubborn?
She and the two Aiel women kept to themselves, Bain and Chiad striding along on either side of Swallow when one or the other was not ranging ahead. Sometimes the three of them murmured softly among themselves, after which they avoided looking at him so pointedly that they might as well have thrown rocks. Loial rode with them at Perrin’s request, though the situation obviously upset him no end. Loial’s ears twitched as if he wished he had never heard of humans. Gaul seemed to find the entire thing vastly amusing; whenever Perrin looked at him, he wore an inward grin.
For himself, Perrin traveled wrapped in worry, and kept his strung bow across the tall pommel of his saddle. Did this man called Slayer rove the Two Rivers only in the wolf dream, or was he in the waking world, too? Perrin suspected the latter, and that Slayer was the one who had shot the hawk for no reason. It was another complication he could do without, on top of the Children of the Light.
His family lived on a sprawling farm more than half a day beyond Emond’s Field, almost to the Waterwood. His father and mother, his sisters, his baby brother. Paetram would be nine now, no doubt objecting more strenuously than ever to being called the baby, Deselle a plump twelve, and Adora sixteen, probably ready to braid her hair. Uncle Eward, his da’s brother, and Aunt Magde, stout and looking nearly alike, and their children. Aunt Neain, who visited Uncle Carlin’s grave every morning, and their children, and Great Aunt Ealsin, who had never married, with her sharp nose and sharper eye for discovering what everyone for miles around was up to. Once apprenticed to Master Luhhan, he had seen them only on feastdays; the distance was too great for casual travel, and there had always been work to do. If the Whitecloaks hunted for Aybaras, they were easy to find. They were his responsibility, not this Slayer. He could only do so much. Protect his family, and Faile. That was first. Then came the village, and the wolves, and this Slayer last. One man could not manage everything.
The Westwood grew on stony soil broken by bramble covered outcrops, a hard, thickly treed land with few farms or paths. He had wandered these heavy woods as a boy, alone or with Rand and Mat, hunting with bow or sling, setting snares for rabbits or simply roaming for the sake of roaming. Bushy-tailed squirrels chittering in the trees, speckled thrushes warbling on branches imitated by black-winged mockers, bluebacked quail bursting up out of the brush in front of the travelers—all spoke to him of home. The very smell of the dirt the horses’ hooves turned was a recognition.
He could have headed straight for Emond’s Field, but instead he angled more northward through the forest, finally crossing the wide, rough track called the Quarry Road as the sun slanted down toward the treetops. Why “quarry” no one in the Two Rivers knew, and it scarcely looked a road at all, only a weedy stretch that you did not even notice was bare of trees until you saw the overgrown ruts from generations of wagons and carts. Sometimes shards of old pavement worked their way to the surface. Perhaps it had led to a quarry for Manetheren.
The farm Perrin sought lay not far from the road, beyond rows of apple and pear trees where fruit was setting. He smelled the farm before he saw it. The smell of char; not new, yet a full year would not soften that smell.
He reined in at the edge of the trees and sat staring before he made himself ride into what had been the al’Thor farm, the packhorse trailing behind his dun. Only the stone walled sheep pen still stood, railed gate open and hanging by one hinge. The soot-blackened chimney cast a slanting shadow across the tumbled burned beams of the farmhouse. The barn and the tabac-curing shed were only ashes. Weeds choked the tabac field and the vegetable garden, and the garden had a trampled look; most of what was not sawleaf or feathertop lay broken and brown.
He did not even think of nocking an arrow. The fire was weeks old, the burned wood slicked and dulled by past rains. Chokevine needed nearly a month to grow that tall. It had even enveloped the plow and harrow lying beside the field; rust showed under the pale, narrow leaves.
The Aiel searched carefully, though, spears ready and eyes wary, quartering the ground and poking through the ashes. When Bain clambered out of the ruins of the house, she looked at Perrin and shook her head. At least Tam al’Thor had not died in there.
They know. They know, Rand. You should have come. It was very nearly more than he could do to stop from putting Stepper to a gallop, keeping him there all the way to his family’s farm. Trying to, at least; even Stepper would fall dead before he ran that far. Maybe this was Trolloc work. If it was Trollocs, maybe his family was still working their farm, still safe. He drew a deep breath, but the char obliterated any other smell.
Gaul stopped beside him. “Whoever did this is long gone. They killed some of the sheep and scattered the rest. Someone came later to gather the flock and drive it off north. Two men, I think, but the tracks are too old to be sure.”
“Is there any clue to who did it?” Gaul shook his head. It could have been Trollocs. Strange, to wish for a thing like that. And foolish. The Whitecloaks knew his name, and they knew Rand’s as well, it seemed. They know my name. He looked at the ashes of the al’Thor farmhouse, and Stepper moved as the reins trembled in his hands.
Loial had dismounted at the edge of the fruit trees, but his head was still in the branches. Faile rode toward Perrin, studying his face, her mare stepping delicately. “Is this . . . ? Do you know the people who lived here?”
“Rand and his father.”
“Oh. I thought it might be . . . ” The relief and sympathy in her voice were enough to finish the sentence. “Does your family live near?”
“No,” he said curtly, and she recoiled as if slapped. But she still watched him, waiting. What did he have to do to drive her away? More than he could bring himself to, if he had not managed it already.
The shadows were growing longer, the sun sitting on the treetops. He reined Stepper around, rudely turning his back on her. “Gaul, we will have to camp close by tonight. I want to start early in the morning.” He sneaked a glance over his shoulder; Faile was riding back to Loial, sitting stiff in her saddle. “In Emond’s Field, they will know . . . ” Where the Whitecloaks were, so he could turn himself in before they hurt his family. If his family was all right. If the farm where he had been born was not already like this. No. He had to be in time to stop that. “They’ll know how things are.”
“Early, then.” Gaul hesitated.  That one is almost Far Dareis Mai, and if a Maiden loves you, you cannot escape her however hard you run.”
“You let me worry about Faile.” He softened his voice; it was not Gaul he wanted to be rid of. “Very early. While Faile is still asleep.”
Both camps, beneath the apple trees, were quiet that night. Several times one or the other of the Aiel women stood, staring toward the small fire where he and Gaul sat, but an owl hooting and the horses stamping were the only sounds. Perrin could not sleep, and it was still an hour short of first light, with the full moon setting, when he and Gaul slipped away, the Aiel silent in his soft boots and the horses’ hooves making little more noise. Bain, or maybe Chiad, watched them go. He could not tell which, but she did not wake Faile, and he was grateful.
The sun had climbed well up by the time they came out of the Westwood a little below the village, amid cart tracks and paths, most bordered by hedges or low rough stone walls. Smoke made feathery gray plumes above farmhouse chimneys, goodwives doing the morning’s baking, by the smell. Men dotted the fields of tabac or barley, and boys watched flocks of black-faced sheep in the pastures. Some people took note of their passing, but Perrin kept Stepper at a fast walk and hoped none were close enough to recognize him or wonder at the strangeness of Gaul’s clothes, or his spears.
People would be out and about in Emond’s Field, too, so he circled around to the east, wide of the village, wide of the hard packed dirt streets and thatched roofs clustered around the Green, where the Winespring itself gushed from a stone outcrop with enough force to knock a man down and gave birth to the Winespring Water. The damage he remembered from Winternight a year gone, the burned houses and charred roofs, were all rebuilt and repaired. The Trollocs might as well never have come back then. He prayed no one would have to live through that again. The Winespring Inn stood practically at the eastern end of Emond’s Field, between the stout wooden Wagon Bridge across the rushing Winespring Water and a huge old stone foundation with a great oak growing up through the middle of it. Tables beneath the thick branches were where folk sat of a fine afternoon and watched the play at bowls. At this hour of the morning, the tables were empty, of course. There were only a few houses farther east. The inn itself was river rock on the first floor, with a whitewashed second story jutting out all the way around and a dozen chimneys rising above a glittering red tile roof, the only tile roof for miles.
Tying Stepper and the packhorse to a hitchpost near the kitchen door, Perrin glanced at the thatch roofed stable. He could hear men working in there, probably Hu and Tad, mucking out the stalls where Master al’Vere kept the big Dhurran team he rented out for heavy hauling. There were sounds from the other side of the inn, too, the murmur of voices on the Green, geese honking, the rumble of a wagon. What was on the horses, he left; this would be a short stop. He motioned for Gaul to follow and hurried inside, carrying his bow, before either stableman could come out.
The kitchen was empty, both iron stoves and all but one fireplace cold, though the smell of baking still hung in the air. Bread and honeycakes. The inn seldom had guests except when merchants came down from Baerlon to buy wool or tabac, or a monthly peddler when snow had not made the road impassable, and the village folk who might come for a drink or a meal later in the day would all be hard at work at their own homes now. Someone might be there, though, so Perrin tiptoed along the short hallway leading from the kitchen to the common room and cracked the door to peek inside.
He had seen that square room a thousand times, with its fireplace of river stones stretching half the room’s length, the lintel as high as a man’s shoulder, Master al’Vere’s polished tabac canister and prized clock sitting on the mantel. It all seemed smaller than it had, somehow. The tall-backed chairs in front of the fireplace were where the Village Council met. Brandelwyn al’Vere’s books sat on a shelf opposite the fireplace—once, Perrin had been unable to imagine more books in one place than those few dozen mostly worn volumes—and casks of ale and wine lined another wall. Scratch, the inn’s yellow cat, sprawled asleep as usual atop one.
Except for Bran al’Vere himself and his wife, Marin, in long white aprons, polishing the inn’s silver and pewter at one of the tables, the common room stood empty. Master al’Vere was a wide, round man, with a sparse fringe of gray hair; Mistress al’Vere was slender and motherly, her thick, graying braid pulled over one shoulder. She smelled of baking, and under that of roses. Perrin remembered them as smiling people, but both looked intent now, and the Mayor wore a frown that surely had nothing to do with the silver cup in his hands.
“Master al’Vere?” He pushed open the door and went in. “Mistress al’Vere. It’s Perrin.”
They sprang to their feet, knocking their chairs over and making Scratch jump. Mistress al’Vere clapped her hands to her mouth; she and her husband gaped as much at him as they did at Gaul. It was enough to make Perrin shift his bow awkwardly from hand to hand. Especially when Bran hurried to one of the front windows—he moved with surprising lightness for a man of his bulk—and twitched the summer curtains aside to peer out, as though for more Aiel outside.
“Perrin?” Mistress al’Vere murmured disbelievingly. “It is you. I almost didn’t know you, with that beard, and—Your cheek. Were you—? Is Egwene with you?”
Perrin touched the half-healed slash across his cheek self-consciously, wishing he had cleaned up, or at least left the bow and axe in the kitchen. He had not considered how his appearance might frighten them. “No. This has nothing to do with her. She is safe.” Safer on her way back to Tar Valon, perhaps, than if still in Tear with Rand, but safe in either case. He supposed he had to give Egwene’s mother something more than that bald statement. “Mistress al’Vere, Egwene is studying to be Aes Sedai. Nynaeve, too.”
“I know,” she said quietly, touching the pocket on her apron. “I have three letters from her in Tar Valon. From what she writes she sent more, and Nynaeve at least one, but only three of Egwene’s have reached us. She tells something of her training, which I must say sounds very hard.”
“It is what she wants.” Three letters? Guilt made him shrug uncomfortably. He had not written a letter to anyone, not since the notes he had left for his family and Master Luhhan the night Moiraine took him away from Emond’s Field. Not one.
“So it seems, though not what I had envisioned for her. It isn’t something I can tell many people about, now is it? She says she’s made friends, anyway, nice girls by the sound of them. Elayne, and Min. Do you know them?”
“We have met. I think you could call them nice girls.” How much had Egwene told in those letters? Not much, evidently. Let Mistress al’Vere think what she would; he had no intention of worrying her over things she could do nothing about. What was past, was past. Egwene was safe enough now.
Abruptly realizing that Gaul was just standing there, he made hasty introductions. Bran blinked when Gaul was named Aiel, and frowned at his spears and the black veil hanging down his chest from his shoufa, but his wife merely said, “Be welcome to Emond’s Field, Master Gaul, and to the Winespring Inn.”
“May you always have water and shade, roofmistress,” Gaul said formally, bowing to her. “I ask leave to defend your roof and hold.”
She barely hesitated before replying as if that were exactly what she was used to hearing. “A gracious offer. But you must allow me to decide when it is needed.”
“As you say, roofmistress. Your honor is mine.” From under his coat, Gaul produced a gold saltcellar, a small bowl balanced on the back of a cunningly made lion, and extended it to her. “I offer this small guest gift to your roof.”
Marin al’Vere made over it as she would have any gift, hardly showing her shock. Perrin doubted there was a piece to equal it in the whole Two Rivers, certainly not in gold. There was little enough gold coin in the Two Rivers, much less gold ornaments. He hoped she never found out it had been looted from the Stone of Tear; at least he would have wagered that it had.
“My boy,” Bran said, “perhaps I should be saying ‘welcome home,’ but why did you return?”
“I heard about the Whitecloaks, sir,” Perrin replied simply.
The Mayor and his wife shared somber looks, and Bran said, “Again, why did you return? You cannot stop anything, my boy, or change anything. Best that you go. If you don’t have a horse, I will give you one. If you do, climb back in your saddle and ride north. I thought the Whitecloaks were guarding Taren Ferry . . . Did they give you that decoration on your face?”
“No. It—”
“Then it doesn’t matter. If you got past them coming in, you can get past to leave. Their main camp is up at Watch Hill, but their patrols can be anywhere. Do it, my boy. ”
“Don’t wait, Perrin,” Mistress al’Vere added quietly but firmly, in that voice that usually ended with people doing as she said. “Not even an hour. I’ll make you a bundle to take with you. Some fresh bread and cheese, some ham and roast beef, pickles. You must go, Perrin.”
“I cannot. You know they are after me, or you’d not want me to go.” And they had not commented on his eyes, even to ask if he was ill. Mistress al’Vere had barely been surprised. They knew. “If I give myself up, I can stop some of it. I can keep my family—” He jumped as the hall door banged open to admit Faile, followed by Bain and Chiad.
Master al’Vere ran a hand over his bald head; even taking in the Aiel women’s garb and obviously identifying them with Gaul, he only seemed a little bemused that they were women. Mainly he looked irritated at the intrusion. Scratch sat up to stare suspiciously at all these strangers. Perrin wondered whether the cat considered him one, as well. He wondered how they had found him, too, and where Loial was. Anything to avoid wondering how he was going to manage Faile now.
 Somehow she managed that trick women had, making herself seem taller through pure quivering outrage. “Give yourself up? Give yourself up! Have you been planning this from the start? You have, haven’t you?   It was nothing but muscle and hair to begin, but now it isn’t even that.  Why should they want you?”
“Because I killed Whitecloaks.” Looking down at her, he ignored Mistress al’Vere’s gasp. “Those the night I met you, and two before that. They know about those two, Faile, and they think I’m a Darkfriend.” She would learn that much soon enough. Brought to the point of it, he might have told her why, had they been alone. At least two Whitecloaks, Geofram Bornhald and Jaret Byar, suspected something of his connection with wolves. Not nearly all, but for them the little was enough. A man who ran with wolves had to be a Darkfriend. Maybe one or both was with the Whitecloaks here. “They believe it for true.”
“You are no more a Darkfriend than I,” she whispered harshly. “The sun could be a Darkfriend first.”
“It makes no difference, Faile. I have to do what I have to do.”
“You addle-brained lummox! You don’t have to do any such crackpate thing! You goose-brain! If you try it, I’ll hang you myself!”
“Perrin,” Mistress al’Vere said quietly, “would you introduce me to this young woman who thinks so highly of you?”
Faile’s face went bright red when she realized she had been ignoring Master and Mistress al’Vere, and she began making elaborate curtsies and offered flowery apologies. Bain and Chiad did as Gaul had, asking leave to defend Mistress al’Vere’s roof and giving her a small golden bowl worked in leaves and an ornate silver pepper mill bigger than Perrin’s two fists, topped by some fanciful creature half horse, half fish.
Bran al’Vere stared and frowned, rubbed his head and muttered to himself. Perrin caught the word “Aiel” more than once in an incredulous tone. The Mayor kept glancing at the windows, too. Not wondering about more Aiel; he had been surprised to learn Gaul was Aiel. Maybe he was worried about Whitecloaks.
Marin al’Vere, on the other hand, took it all in stride, treating Faile and Bain and Chiad the same as any other young women travelers who came to the inn, commiserating with them over how tiring travel was, complimenting Faile on her riding dress—dark blue silk, today—and telling the Aiel women how she admired the color and sheen of their hair. Perrin suspected that Bain and Chiad, at least, did not know quite what to make of her, but in short order, with a sort of calm motherly firmness, she had all three women settled at a table with damp towels to wipe journey dust from hands and faces, sipping tea she poured from a large red-striped pot he remembered well.
It might have been amusing seeing those fierce women—he certainly included Faile—suddenly eager to assure Mistress al’Vere that they were more than comfortable, was there nothing they could do to help, she was doing too much, all of them wide eyed as children, with a child’s chance of resisting her. It would have been amusing if she had not included himself and Gaul, sweeping them just as firmly to the table, insisting on clean hands and clean faces before they got a cup of tea. Gaul wore a small grin the whole time; Aiel had a strange sense of humor.
Surprisingly, she never glanced at his bow or axe, or the Aiel’s weapons. People seldom carried even a bow in the Two Rivers, and she always insisted such be set aside before anyone took a place at one of her tables. Always. But she just ignored them now.
Another surprise came when Bran placed a silver cup of apple brandy at Perrin’s elbow, not the small tot that men usually drank at the inn, barely enough to cover the last joint of the thumb, but half-full. When he had left he would have been offered cider if not milk, or perhaps well-watered wine, a half-cup with a meal or a full one on a feastday. It was gratifying to be recognized as a grown man, but he only held it. He was used to wine now, but he seldom drank anything stronger.
 No one with any sense. There is no reason for you to let yourself be hanged.”
Faile nodded in fierce agreement, but Perrin ignored her. “I won’t be turned aside, Master al’Vere. The Whitecloaks want me, and if they do not get me, they might turn to the next Aybara they can find. Whitecloaks don’t need much to decide somebody is guilty. They are not pleasant people.”
“We know,” Mistress al’Vere said softly.
Her husband stared at his hands on the table. “Perrin, your family is gone.”
“Gone? You mean the farm is burned already?” Perrin’s fist tightened around the silver cup. “I hoped I was in time. I should have known better, I suppose. Too long before I heard. Maybe I can help my da and Uncle Eward rebuild. Who are they staying with? I want to see them first, at least.”
Bran grimaced, and his wife stroked his shoulder comfortingly. But strangely her eyes stayed on Perrin, all sadness and comfort.
“They are dead, my boy,” Bran said in a rush.
“Dead? No. They can’t be—” Perrin frowned as wetness suddenly slopped over his hand, stared at the crumpled cup as though wondering where it had come from. “I am sorry. I didn’t mean to—” He pulled at the flattened silver, trying to force it back out with his fingers. That would not work. Of course not. Very carefully, he put the ruined cup in the middle of the table. “I will replace it. I can—” He wiped his hand on his coat, and suddenly found he was caressing the axe hanging at his belt. Why was everyone looking at him so oddly? “Are you sure?” His voice sounded far away. “Adora and Deselle? Paet? My mother?”
“All of them,” Bran told him. “Your aunts and uncles, too, and your cousins. Everybody on the farm. I helped bury them, my boy. On that low hill, the one with the apple trees.”
 Fool thing to do, cutting himself on his own axe. “My mother likes apple blossoms. The Whitecloaks. Why would they—? Burn me, Paet was only nine. The girls . . . ” His voice was very flat. He thought he should have had some emotion in those words. Some emotion.
“It was Trollocs,” Mistress al’Vere said quickly. “They have come back, Perrin. Not the way they did when you went away, not attacking the village, but out in the countryside. Most farms without close neighbors have been abandoned. No one goes outside at night, even near to the village. It is the same down to Deven Ride and up to Watch Hill, maybe to Taren Ferry. The Whitecloaks, bad as they are, are our only real protection. They’ve saved two families that I know, when Trollocs attacked their farms.”
“I wished—I hoped—” He could not quite remember what it was he had wished. Something about Trollocs. He did not want to remember. The Whitecloaks protecting the Two Rivers? It was almost enough to make him laugh. “Rand’s father. Tam’s farm. Was that Trollocs, too?”
 “He deserves the truth, Marin. That was Whitecloaks, Perrin. That, and the Cauthon place.”
“Mat’s people too. Rand’s, and Mat’s, and mine.” Strange. He sounded as if he were talking about whether it might rain.  No, Abell and Tam are hiding in the Westwood somewhere. And Mat’s mother and sisters . . . They’re alive, too.”
“Hiding?”
“There is no need to go into that,” Mistress al’Vere said briskly. “Bran, bring him another cup of brandy. And you drink this one, Perrin.” Her husband sat where he was, but she only frowned at him and went on. “I would offer you a bed, but it isn’t safe. Some people are like as not to run off hunting for Lord Bornhald if they find out you are here. Eward Congar and Hari Coplin fawn after the Whitecloaks like heel-hounds, eager to please and name names, and Cenn Buie isn’t much better. And Wit Congar will carry tales, too, if Daise doesn’t stop him. She is the Wisdom, now. Perrin, it is best for to go. Believe me.”
Perrin shook his head slowly; it was too much to take in. Daise Congar the Wisdom? The woman was like a bull. Whitecloaks protecting Emond’s Field. Hari and Eward and Wit cooperating. Not much more could be expected from Congars or Coplins, but Cenn Buie was on the Village Council. Lord Bornhald. So Geofram Bornhald was there. Faile was watching him, her eyes large and moist. Why should she be on the edge of tears?
“There is more, Brandelwyn al’Vere,” Gaul said. “Your face says so.”
“There is,” Bran agreed. “No, Marin,” he added firmly when she gave a small shake of her head. “He deserves the truth. The whole truth.” She folded her hands with a sigh; Marin al’Vere very nearly always got her way—except when Bran’s face was set, as now, with his eyebrows drawn down hard as a plow.
“What truth?” Perrin asked. His mother liked apple blossoms.
“First off, Padan Fain is with the Whitecloaks,” Bran said. “He calls himself Ordeith now, and he won’t answer to his own name at all, but it’s him, stare down his nose as he will.”
“He’s a Darkfriend,” Perrin said absently. Adora and Deselle always put apple blossoms in their hair in the spring. “Admitted from his own mouth. He brought the Trollocs, on Winternight.” Paet liked to climb in the apple trees; he would throw apples at you from the branches if you did not watch him.
“Is he, now,” the Mayor said grimly. “Now, that is interesting. He has some authority with the Whitecloaks. The first we heard they were here was after they burned Tam’s farm. That was Fain’s work; he led the Whitecloaks that did it. Tam feathered four or five of them with arrows before he made it to the woods, and he reached the Cauthon farm in the nick to stop them taking Abell. But they arrested Natti and the girls. And Haral Luhhan, and Alsbet, too. I think Fain might have hung them, except Lord Bornhald wouldn’t allow it. Not that he let them go, either. They haven’t been harmed, as far as I can discover, but they’re being held in the Whitecloak camp up at Watch Hill. For some reason, Fain has a hate for you, and Rand, and Mat. He’s offered a hundred pieces of gold for anyone related to the three of you; two hundred for Tam or Abell. And Lord Bornhald seems to have some interest in you, especially. When a Whitecloak patrol comes here, he usually comes, too, and asks questions about you.”
“Yes,” Perrin said. “Of course. He would.” Perrin of the Two Rivers, who ran with wolves. Darkfriend. Fain could have told them the rest. Fain, with the Children of the Light? It was a distant thought. Better than thinking about Trollocs, though. He grimaced at his hands, made them be still on the table. “They protect you from the Trollocs.”
Marin al’Vere leaned toward him, frowning. “Perrin, we need the Whitecloaks. Yes, they burned Tam’s farm, and Abell’s, they’ve arrested people, and they stamp around as if they own everything they see, but Alsbet and Natti and the rest are unharmed, only held, and that can be straightened out somehow. The Dragon’s Fang has been scrawled on a few doors, but nobody except the Congars and Coplins pay any mind, and they’re likely the ones who did the scrawling. Tam and Abell can stay in hiding until the Whitecloaks go. They have to go sooner or later. But as long as there are Trollocs here, we do need them. Please understand. It isn’t that we would not rather have you than them, but we need them and we don’t want them to hang you.”
“You call this being protected, roofmistress?” Bain said. “If you ask the lion to protect you from wolves, you have only chosen to end in one belly instead of another.”
“Can you not protect yourselves?” Chiad added. “I have seen Perrin fight, and Mat Cauthon, and Rand al’Thor. They are the same blood as you.”
Bran sighed heavily. “We are farmers, simple people. Lord Luc talks of organizing men to fight the Trollocs, but that means leaving your family unprotected while you go off with him, and no one much likes that idea.”
Perrin was confused. Who was Lord Luc? He asked as much, and Mistress al’Vere answered.
“He came about the time the Whitecloaks did. He’s a Hunter of the Horn. You know the story, The Great Hunt of the Horn? Lord Luc thinks the Horn of Valere is somewhere in the Mountains of Mist above the Two Rivers. But he gave over his hunt because of our problems. Lord Luc is a great gentleman, with the finest manners.” Smoothing her hair, she gave an approving smile; Bran looked at her sideways and grunted sourly.
Hunters of the Horn. Trollocs. Whitecloaks. The Two Rivers hardly seemed the same place he had left. “Faile is a Hunter of the Horn, too. Do you know this Lord Luc, Faile?”
“I have had enough,” she announced. Perrin frowned as she stood and came around the table to him. Seizing his head, she pulled his face into her midriff. “Your mother is dead,” she said quietly. “Your father is dead.  Your family is dead, and you cannot change it. Certainly not by dying yourself. Let yourself grieve. Don’t hold it inside where it can fester.”
He took her by the arms, meaning to move her, but for some reason his hands tightened till that grip was the only thing holding him up. It was only then that he realized he was crying, sobbing into her dress like a baby. What must she think of him? He opened his mouth to tell her he was all right, to apologize for breaking down, but what came out was, “I couldn’t get here any faster.
“I know,” she murmured, stroking his hair for all the world as if he were a child. “I know.”
He wanted to stop, but the more she whispered understanding, the more he wept, as though her hands soft on his head were smoothing the tears out of him.


Dojo’s TitlePane
component can be used to display content inside a window
with a titlebar. When the titlebar is clicked, the content collapses.
TitlePane
supports standard keyboard navigation for toggling the content
open or closed.
TitleBar Events:
TitlePane
headingLevel
property
to set the correct heading level
aria-labelledby
set to the titlebararia-expanded
is set to true
or false
on the
toggle button depending on the open
property
aria-controls
on the toggle button points to the accordion content


Find the Compass
View our site on desktop to play Find the Compass!
Sign Up
Skip to Sign-Up
Skip to Sign-Up


TAT'S INK-REDIBLE
Celtic superfan shares incredible tattoo sleeve made up of club legends
by Connor BoylanA CELTIC superfan living Down Under has shared his incredible tattoo sleeve made up of club legends.
Mark Dunn’s Hoops-themed ink has been a hit with Celts fans on social media.
It includes portraits of Parkhead idols like Jimmy McGrory, Danny McGrain and Paul McStay.
And it now covers most of his left arm following the two latest additions to the collection – Billy McNeill and Willie Maley.
The iconic images of the Hoops heroes were designed and tattooed by talented artist Damien Wickham at Ink Attack in Sunshine Coas, Queensland, Australia.
The images include McGrory posing for a team photo and McStay celebrating a goal for the Hoops.
It also shows the famous photo of Lisbon Lions skipper Billy McNeill lifting the European Cup in 1967.
The post has been liked and shared thousands of times since Mark, originally from Paisley, Renfrewshire, shared it online.
And Celtic supporters have hailed the incredible detail in the tattoos by the Aussie artist.
One tweeted: “Incredible. They’re the best quality Celtic tattoos that I’ve seen.”
Another fan said: “Absolutely stunning.”
Another added: “That’s just incredible. It’s realistic and in colour. When that heals it’s gonna look beautiful. 10/10 from the artist.”


Chill Fellows
Please Sign In
- You are totally exhausted because your week was endless and less than great. How are you going to spend your weekend?
- Which of these two descriptions suits you more?
- You have a major life decision coming up. How are you going to make a decision?
- Only 2 weeks are left until the big event you are planning. How are the preparations going?
Our Suggestions
Watch List
About Us
-
Karen Perez
Former careers: engineer and stay-at-home mom.
Hobbies: reading mysteries, watching soccer, getting better at trivia, petting dogs.
-
Roger Daventport
He's actually Santa Clause
-
Melanie Downing
Outdoor enthusiast who is looking forward to using her web development skills to get people ouside. She is also not opposed to chilling on the couch with her dog and catching up on her movie watch list.


“Volunteers do not necessarily have the time; they just have the heart.” ~Elizabeth Andrew
LEARN MOREWe will come to your doorstep to pick up the donations in the chosen slot and deliver them to where they can be given a new life.
LEARN MOREThere are many ways to push for much-needed reforms: One way is to make a donation. It doesn't matter much whether you contribute publicly or in a private way - either way is good. What matters is your true intention.
LEARN MOREstrived for overall development of a child with special needs focusing on personal, physical, intellectual, social and vocational training .as well as parental counseling
© 2021 Feeding Jabalpur . All rights reserved


public class ContextList extends java.lang.Object implements java.io.Serializable, Cloneable
Context
class.
As a convention, this class is called context list, which provides utility methods to process (add, set, remove, etc.) a list of contexts.
This class has a built-in variable list
that is the List
of Context
.| Modifier and Type | Field and Description |
|---|---|
protected java.util.List<Context> |
list
The built-in variable contains really contexts.
|
| Constructor and Description |
|---|
ContextList()
Default constructor.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(Context context)
Adding the specified context into this list.
|
boolean |
canInferFrom(Context context)
Given the specified context, this method returns
true if all contexts inside this list can be inferred from such specified context. |
boolean |
canInferFrom(ContextList contexts)
Given the specified context list, this method returns
true if all contexts inside this list can be inferred from such specified context list. |
void |
clear()
Clearing this list, which means that this method removes all contexts from this list.
|
java.lang.Object |
clone()
Any class that implements this interface must define this method to clone itself.
|
Context |
get(int index)
Getting a context at specified index.
|
void |
remove(int index)
Removing a context from this list at specified index.
|
int |
size()
Getting the size of context list.
|
Context[] |
toArray()
Converting this context list into array of contexts.
|
protected java.util.List<Context> list
ContextList
is essentially a wrapper of this variable.public int size()
public Context get(int index)
index
- Specified indexpublic boolean add(Context context)
context
- The specified context.public void remove(int index)
index
- Specified index.public void clear()
public java.lang.Object clone()
Cloneable
clone
in class java.lang.Object
public boolean canInferFrom(Context context)
true
if all contexts inside this list can be inferred from such specified context.
Otherwise, this method returns false
.
Please see Context.canInferFrom(Context)
for more details about the concept "can be inferred from"context
- The specified context.public boolean canInferFrom(ContextList contexts)
true
if all contexts inside this list can be inferred from such specified context list.
Otherwise, this method returns false
. Of course this methods calls canInferFrom(Context)
method.
Please see Context.canInferFrom(Context)
for more details about the concept "can be inferred from"contexts
- Specified context list.public Context[] toArray()


Hello I am now learning how to do web stuff I guess! This is the best web page you will ever set your eyes upon.
jk


Bumping require.js to latest, but not in Mimosa, yet
Earlier today I released version 3.0.0
of mimosa-require, but I will not be including that version as a default dependency of Mimosa yet.
The version of mimosa-require included with Mimosa by default is 2.2.2
. The only significant difference between 2.2.2
and 3.0.0
is the version of require.js inside those modules. 3.0.0
= require.js 2.1.14
, 2.2.2
= require.js 2.1.6
.
The story is long and complicated, but to keep it short, I won't be updating Mimosa to use require.js 2.1.14
by default until this bug is fixed: https://github.com/jrburke/r.js/issues/629. That bug prevents users of Mimosa who take advantage of mimosa-require's require.optimize.modules
config from running optimized builds. Running optimized builds with require.optimize.modules
would result in require.js erroring out. A minority of Mimosa users likely use that config, but I want to keep Mimosa's defaults at versions that don't break apps.
The latest require.js, 2.1.14
, contains all sorts of improvements over the version Mimosa is currently stuck at, 2.1.6
, including wrapShim
. If you are not using the require.optimize.modules
config, I highly recommend updating your project to use mimosa-require 3.0.0
.
"What should I do?"
Not using require.optimize.modules
? Then you should upgrade to 3.0.0
. Using a specific version of a Mimosa module is easy. Simply update your mimosa-config.js
modules
array to point at the new version.
In your modules
array, update "require"
to<EMAIL_ADDRESS>. Here's an example from the Ember skeleton: https://github.com/dbashford/MimosaEmberSkeleton/blob/master/mimosa-config.js#L26
The next time you start up mimosa watch
or mimosa build
Mimosa will install version 3.0.0
of mimosa-require local to your project. Give that a shot: make the update and then re-run your optimized build to verify it still works.


Source: Oxford English Dictionary | Origin: Proximus in Latin, Proximite in French
We transform information into insights, insights into ideas. Ideas that change the way consumers think, feel or act.
Our highly targeted and relevant ideas help turn consumers into advocates by giving them the tools and information they need—when, where and how they want it.
Most awarded agency network 2005 - 2011
Most awarded agency network 2006 - 2011
Information and insights are crucial to creating value. We have data hubs in all major markets - unlocking understanding about consumer behaviour. We have digital labs in over 30 markets - sharing the latest technologies and perspectives on how people can be more valuable to brands.
/
#


Ingredients
Crust
- 1 cup flour
- 1 cup oats
- 1 egg
- 1 TB vanilla
- 3/4 cup brown sugar
- 6 TB butter, melted
- 6 oz chocolate chips
Salted Carmel
- 1 cup granulated sugar
- 6 TB salted butter
- 1/2 cup heavy cream
- 1 tsp salt
A delicious and easy sweet treat!
These are decadent. These are delicious. These are dangerous. (If you have no self control, like me.) Ugh. They are just so good. I really don't know what else to say about them other than just go make them. Go make them now.
They do take a little bit of time to make. First you have to make the salted caramel recipe from Sally's Baking Addiction. Oomph. I maybe, sometimes, ok always end up burning my tongue on this because it is just so good. Don't do that. But do make this caramel. It's pretty easy as far as caramel goes, meaning I've never ruined it. (Let me clarify that... I have ruined plenty of other caramel recipes before, so this is a step in the right direction for me.) Sally has perfect instructions and step by step photos to help you along the way!
You will want to make the salted caramel ahead of time. Sally has some really great step-by-step photos to help you out! Melt 1 cup of sugar over medium heat, being sure to constantly stir. Once the sugar is completely melted, it will be amber colored. Once all lumps are gone, stir in butter, stirring constantly. The mixture will bubble a lot, so be careful not to burn yourself. Continue to whisk the mixture until the butter is completely mixed in - about 2-3 minutes. Be patient, you really want to make sure it is all incorporated and the butter is not just sitting on top. Very slowly drizzle in the heavy cream, being sure to whisk the entire time. The mixture will bubble here too. Once all cream is added, allow mixture to boil for 1 minute and then remove from heat and stir in salt. Allow to cool slightly and transfer to jar or other container.