File created 2 February 2001.

Extremely simple and basic programs

Running the programs

Calling the Caml compiler:

To try interactively: call the Caml interactive system

        ocaml               # or better, ledit ocaml, if ledit is installed.
Then type in (don't forget the initial # sign, that indicates a directive)
        #use "loadall.ml";;

The programs

This directory contains the following programs:
    Hello: source programm is in file hello.ml.
    Just prints Hello world! followed by a newline.
    Try
    hello
    Greeting: source programm is in file greeting.ml.
    Ask the name of the user, reads the input at keyboard, greets the user and die.
    Try
    hgreeting
    Square: source program is in file square.ml.
    Reads an integer passed as argument to the program, then compute and prints its square.
    Try
    square 16
    Fib: source program is in fib.ml.
    Define the Fibonacci function as a simple recursive Caml function.
    Try
    fib 10
    Wc: the source program is in wc.ml.
    A program that mimicks the Unix "wc" utility: it counts the number of characters, words, and lines of a given file.
    Try
    ./wc wc.ml
    Wc_unix: the source program is in wc_unix.ml.
    A Caml clone of the Unix "wc" utility.
    Try
    ./wc_unix *.ml
    Strstr: the source program is in strstr.ml.
    Tests if its first argument appears as a sub string of its second argument, and returns the character number of the first matching occurrence. Uses imperative programming, while loops and references.
    Try
            strstr rs strstr
            strstr ra strstr
            
    Sieve: the source program is in sieve.ml.
    The Eratosthene's sieve: the program computes the set of prime numbers lesser than a given integer argument. Uses lists.
    Try
    sieve 1000
    Qeens: the source program is in queens.ml.
    Lists manipulation: prints the solution to the 8 queens problem.
    How to set n queens on a chessboard of size n such that none can catch one each other.
    Try
    queens 8
    Soli: the source program is in soli.ml.
    Prints the solution to the famous ``solitaire'' game. Vectors and data types definitions and manipulation.
    Try
    soli/CODE>

Automatic recompilation

To compile: either type "make", or, by hand:

        ocamlc -o fib fib.ml
        ocamlc -o wc wc.ml
        ocamlc -o sieve sieve.ml

To run:

        fib 10              # or some other number
        wc fib.ml           # or some other files
        sieve 1000          # or some other number

To compile to native code: either "make opt", or, by hand:

        ocamlopt -o fib fib.ml
        ocamlopt -o wc wc.ml
        ocamlopt -o sieve sieve.ml

To try interactively:

        ocaml               # or ledit ocaml if ledit is installed.
        #use "loadall.ml";;

Contact the author Pierre.Weis@inria.fr