On 20/11/2013, at 12:32 PM, srean wrote:

> wait what is this #mk thing ?

Good question with trivial answer:

        #f

is exactly the same as

        f ()

only the precedence is different (# has a very high precedence, binds very
tightly).

The "mnemonic" reason for this is that
in classes, and other places, one often has constant functions like:

        fun pi () => 22.0 / 7.0;

and so you write

        #pi

meaning "the constant pi". It will often actually be a constant due to
inlining.

In polymorphic classes there is no choice. You cannot have polymorphic
variables. So you have to use functions for constants. Eg:

        class Number[T] {
                virtual fun zero ();
                ...
        }

and then you write

        #zero[int]

for the "constant". 

For mathematical (pure) functions, its always a constant because there's
no variability in the argument. But you can have impure functions too:

        var x = 1;
        fun g () => x;
        println$ #g
        ++x;
        println$ #g;

Anyhow, the answer is "its just a trivial syntax shortcut".

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




------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to