As you may have noticed, lots of files in this directory ^_^;; These are three different implementations of the same functional program... C version is character based. It buffers whitespaces in memory, and write or flushes based on next non-whitespace character. It's the fastest and most memory efficient. OCaml version is line/file based. It reads the entire file to memory before writing it back out to disk. Whitespaces are removed using simple linear search. Perl version is line based. It reads each line to memory and writes them immediately to output. Whitespaces are removed using regular expression substitutions. This version, unlike the other two, does not preserve file when both input and output are the same. OCaml version was eventually chosen to fit the template image, because that's the version that fits best...