anchor.diff:           ofList/1,
            pairwise/1,
            pick/2,
  -         %readonly/1,
  -         %reduce/2,
  -         %scan/3,
  +         %readonly/1, % operates on mutable data structures
  +         reduce/2,
  +         scan/3,
            singleton/1,
            skip/2,
            skipWhile/2,
  
positive.code: skip_test() ->
      [3] = toList(skip(2, [1,2,3])),
      [3] = toList(skipWhile(fun(I) -> I < 3 end, [1,2,3])),
      ok.
  -endif.
  
negative.code: 
  head_test() ->
      1 = head([1,2,3]),
      ?assertException(throw, {'System.ArgumentException', _}, head([])),
      ok.
  
  tail_test() ->
      [2,3] = toList(tail([1,2,3])),
      ?assertException(throw, {'System.ArgumentException', _}, toList(tail([]))),
      ok.
  
  last_test() ->
      3 = last([1,2,3]),
      ?assertException(throw, {'System.ArgumentException', _}, last([])),
      ok.
  
  isEmpty_test() ->
  