bytecode caml caml light church encoding compiler compiler optimization cross-platform dec alpha damien doligez data type debugger documentation generator exception handling exponentiation extensible ml foreign function interface funarg problem functional programming imperative programming jocaml linker mips architecture mac os x microsoft windows multi-paradigm programming language object-oriented programming opengl open source operating system pattern matching perl powerpc programming language programming paradigm q public license quicksort sparc software developer software license standard ml strongarm symmetric multiprocessing tail recursion type inference type system unix website xavier leroy