With the new reachability algorithm, it's necessary to find non-returning 
procedures such as "exit()".

I propose to do with with a type:

        t -> any

Normally a procedure has type

        t -> void

meaning "returns no value". The type "any" is defined by:

        typedef any = any;

Since any type, eg "int" satisfies this equation, even "void",
a function returning any could return any value at all.

Since this is nonsense, we conclude that such a function
cannot return at all.

A function returning any should be usable both as a procedure:

        fun exit : int -> any= "exit($1)";
        f();

or as a function:

        match x with
        | 1 => exit 1
        | 2 => 42
        endmatch

The idea is that "any" unifies with "int" (or any other type).
You probably shouldn't do this:

        val a = exit 1;

This is only an experiment. Note that "exit($1)" doesn't have
a semicolon in the quotes, so it's modelled as a function;
if used as a procedure the compiler has to add the ";" for you.

We'll see if this works out.

--
john skaller
skal...@users.sourceforge.net
http://felix-lang.org




------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to