On 28/12/2012, at 4:50 AM, Dobes Vandermeer wrote:
> 
> It seems like you end up programming in a sort of "stack machine" mode, or 
> similar.

Forth uses that model.

> 
> I don't think a purely concatenative language would be friendly enough; 

I agree, in fact, I know because category theory uses it.
Just for fun: my courses at UQ the math school used
reverse polish:

        x sin

but then when I did stuff at USYD they used forward polish

        sin x

which made exams a real challenge :)

However much programming is already like that:

        read x;
        print x;
        do something;

is effectively lazy evaluation with continuations passed from
each operation to the next implicitly. Syntactically this is concatenative.

Now here's the thing: in Felix you can more or less convert:

        x . f . g . h . k 

this is reverse polish left associative applicative code. but this:

        x . (f . g . h . k)

is a single reverse application with the functions concatenated in point
free style. If we want to go "whole hog":

        {x} . f

is purely concatenative: { x } is value x lifted to a function. So you can also
drop a function k:1 -> T to a value:

        k ()

or just

        #k

So in Felix you can switch in and out of point free notation.
The "cost" is that in

        f . g

the operator . is reverse function composition. Unfortunate, gives
it two meanings.


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




------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to