 /// the result for each pair of consecutive 
 public func split<S: Sliceable, R:BooleanType>(
   elements: S, 
-  isSeparator: (S.Generator.Element)->R, 
+  @noescape isSeparator: S.Generator.Element -> R, 
   maxSplit: Int = Int.max,
   allowEmptySlices: Bool = false
   ) -> [S.SubSlice] {

  where
    S0.Generator.Element == S1.Generator.Element
>(s: S0, prefix: S1,
  isEquivalent: (S1.Generator.Element, S1.Generator.Element) -> Bool) -> Bool
{
  var prefixGenerator = prefix.generate()


    S1.Generator.Element == S2.Generator.Element
>(
  a1: S1, a2: S2,
  @noescape isOrderedBefore less: (S1.Generator.Element, S1.Generator.Element) 
  -> Bool
) -> Bool {
  var g1 = a1.generate()
  var g2 = a2.generate()
