[bitc-dev] FN keyword
Christopher Gilbreth
cngilbreth at gmail.com
Wed Aug 11 11:34:30 PDT 2010
Attributes could also be applied to anonymous functions, e.g. (using 'fn'
instead of 'lambda'):
f = fn[Fortran] (x:double) { x**2 - 2.0 }
root = legacy_fortran_find_root_function(x_lb, x_ub, f)
(As you might guess I use Fortran a lot.)
Come to think of it, we should probably think about the syntax for variable
type attributes too. Suppose I wanted an array to be stored in GPU memory?
x = Array<float32>[gpu](10)
gpu_kernel = fn[gpu] (x) { /* do stuff with x to get y */; y }
y = gpu_kernel(x)
Or something to that effect. See
http://www.pgroup.com/lit/articles/insider/v1n3a2.htm
Chris
On Wed, Aug 11, 2010 at 11:24 AM, Christopher Gilbreth <cngilbreth at gmail.com
> wrote:
> On Tue, Aug 10, 2010 at 7:01 PM, Jonathan S. Shapiro <shap at eros-os.org>wrote:
>
>> The full production for function types is:
>>
>> fntype: [effects] fn ( argType [, argType]* ) -> resultType
>>
>
> I wonder if the function type syntax should allow for other attributes
> which may be added in the future, e.g. calling conventions, or to declare
> that a function is executed on a gpu (in some compiler-dependent way):
>
> f : fn 'a -> 'b
> f : fn[fastcall] 'a -> 'b
> f : fn[Fortran,some_other_attribute] 'a -> 'b
> f : fn[gpu] 'a -> 'b
>
> (Are the brackets of any actual benefit in these examples?)
>
> See also
>
> http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
>
>
> Chris
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.coyotos.org/pipermail/bitc-dev/attachments/20100811/d7e5ad72/attachment.html
More information about the bitc-dev
mailing list