I'm about to yank all the type dependent code out of the
compiler. Some changes include:

(a) eliminating pattern matching for integers, floats, and strings,
including singles and ranges.

This is no loss. For example

        match x with 
        | 1 => ..

can be replaced by

        match x with
        | ?a when ?a == 1 => ...

In fact you can write:

        match x with
        | $(expr) => ...

for that where expr = 1. This works for any value.
Ranges are obviously handled the same way.

So now, matches can be done on a literal of any kind:

        match x with
        | literal => ...

now means

        | $(literal) =>

which means

        | ?a when a = literal =>

So this fully generalises pattern matching on value literals.

Hardcoded support for literals like "integers" will be removed.
This MAY lead to some run time errors or C++ compiler errors
that Felix might have caught previously.

The only hassle is constant folding. We really don't care much
about 1 + 2 = 3. We need "x" "y" = "xy" though (doing that at 
run time is slow).

But the BIG one is constant expressions of boolean type used
to fold away constructions: Felix guarantees 

        if true then x else y endif

will reduce to just x *before* type checking. And so

        if x - x == 0 then ..

MUST reduce properly. So we do need constant folding.


The way I shall do this is .. user defined Scheme code.

For a literal, the user must now define:

1.  a regdef/literal construction in the grammar

2. A function to convert the lexeme to a convenient internal value,
   which must be a string

3. A function to convert the internal value to a C representation

4. A felix type name (which the use must define in the library).

--
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