 			return pure(sign != nil ? double : -1 * double)
 		}
 	}
-}
+}()
+
+public let digit: CharacterParser = oneOf("0123456789")
+
+public let space: CharacterParser = char(" ")
+
+public let newline: CharacterParser = char("\n")
+
+public let crlf: CharacterParser = char("\r")
+
+public let endOfLine: CharacterParser = newline <|> crlf
+
+public let tab: CharacterParser = char("\t")
 
 public func oneOf(input: String) -> CharacterParser {
 	return satisfy { input.characters.contains($0) }

public typealias StringParser = Parser<String.CharacterView, String>.Function
public typealias DoubleParser = Parser<String.CharacterView, Double>.Function

public func digit() -> CharacterParser {
	return oneOf("0123456789")
}

public func double() -> DoubleParser {
	let minus = (%"-")|?
	let digits = digit()+
	
	return minus >>- { sign in
		digits >>- { digits in

	return satisfy { !input.characters.contains($0) }
}

public func char(input: Character) -> CharacterParser {
	return satisfy { $0 == input }
}
