all tasks

This commit is contained in:
Ingy döt Net 2013-04-11 01:07:29 -07:00
parent b83f433714
commit 68f8f3e56b
14735 changed files with 178959 additions and 0 deletions

View file

@ -0,0 +1,7 @@
let rec split_char sep str =
try
let i = String.index str sep in
String.sub str 0 i ::
split_char sep (String.sub str (i+1) (String.length str - i - 1))
with Not_found ->
[str]

View file

@ -0,0 +1,18 @@
(* [try .. with] structures break tail-recursion,
so we externalise it in a sub-function *)
let string_index str c =
try Some(String.index str c)
with Not_found -> None
let split_char sep str =
let rec aux acc str =
match string_index str sep with
| Some i ->
let this = String.sub str 0 i
and next = String.sub str (i+1) (String.length str - i - 1) in
aux (this::acc) next
| None ->
List.rev(str::acc)
in
aux [] str
;;

View file

@ -0,0 +1,14 @@
let split_char sep str =
let string_index_from i =
try Some (String.index_from str i sep)
with Not_found -> None
in
let rec aux i acc = match string_index_from i with
| Some i' ->
let w = String.sub str i (i' - i) in
aux (succ i') (w::acc)
| None ->
let w = String.sub str i (String.length str - i) in
List.rev (w::acc)
in
aux 0 []

View file

@ -0,0 +1,3 @@
#load "str.cma";;
let split_str sep str =
Str.split (Str.regexp_string sep) str

View file

@ -0,0 +1 @@
String.concat sep strings