Felix type A -> B is a function and A --> B is a C function.
If you have the type

        A * B --> C

this normally should be the C function type:

        C (f)(A, B)

i.e. with separated arguments. Of course this is a hack because this:

   (A * B) --> C

would be a different type:

  C (f) (A * B) // where the C type of A * B is used, a tuple type

breaking the rule that () are only used for grouping .. still it is only a 
small hack ;)

However I have found a bug: the special hackery doesn't take arrays into
account. This type:

        A * A --> C

is reduced to 

        A ^ 2 --> C

and then we get

        C (f) (A ^ 2) // tuple type A * A is argument

Looks like the special hackery doesn't recognise A ^ 2 as a reduced
form of A * A. I'm not sure what would be done if the argument
we *actually* an array (as opposed to just one or two elements).

I ran into this implementing darray, which is a dynamic array
of unbounded length. Will fix. BTW:  I used a C function because
it is lightweight (one pointer) and doesn't need garbage collection:
a Felix function would use a closure, and invoking them requires
cloning the closure object (because closures are not re-entrant).


--
john skaller
skal...@users.sourceforge.net





------------------------------------------------------------------------------
The Next 800 Companies to Lead America's Growth: New Video Whitepaper
David G. Thomson, author of the best-selling book "Blueprint to a 
Billion" shares his insights and actions to help propel your 
business during the next growth cycle. Listen Now!
http://p.sf.net/sfu/SAP-dev2dev
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to