August 31, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Russ Lewis | Russ Lewis wrote:
> Walter Bright wrote:
>> Russ Lewis wrote:
>>> Is there any reason to not use "lazy" as a keyword to modify the
>>> expression, rather than the parameter?
>>>
>>> void foo(int delegate() dg) {...}
>>> void bar(int x,int y) {
>>> foo(lazy x+y);
>>> }
>>
>> One reason is lazy arguments and non-lazy arguments cannot be passed to the same function.
>
> One of us is missing something. I'm not sure who :) Can you expand on your response here?
foo(x + y);
foo(lazy x + y);
can't work, because foo needs to know which it is. Just like you can't have the same parameter be both in and out.
|
August 31, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jarrett Billingsley | Jarrett Billingsley wrote:
> "Kirk McDonald" <kirklin.mcdonald@gmail.com> wrote in message news:ed7ddg$6r2$1@digitaldaemon.com...
>
>> Nice. I'll have to play with the improved IFTI support.
>>
>
> Hm. I missed this new feature. What does it include? There's not even a link to a conversation, and I don't remember any threads about this.
Oskar had emailed me the patches.
|
August 31, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Oskar Linde | Oskar Linde wrote: > Jarrett Billingsley wrote: > >> "Kirk McDonald" <kirklin.mcdonald@gmail.com> wrote in message >> news:ed7ddg$6r2$1@digitaldaemon.com... >> >>> Nice. I'll have to play with the improved IFTI support. >>> >> Hm. I missed this new feature. What does it include? There's not even a >> link to a conversation, and I don't remember any threads about this. > > It is really just a small patch that enables implicit function template > instantiation for member function and operator templates. It should work > identically to how IFTI works for free functions. > > It should open up quite a few door. Here is a quick demo I hacked together > of how compile time dimensionality checking can be implemented: > > http://www.csc.kth.se/~ol/physical.d Very, very nice! > > /Oskar > > |
September 01, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Oskar Linde | "Oskar Linde" <olREM@OVEnada.kth.se> wrote in message news:ed7i39$bke$1@digitaldaemon.com... > It is really just a small patch that enables implicit function template instantiation for member function and operator templates. It should work identically to how IFTI works for free functions. > Ah!! This exactly solves the problem I was (am!) having with needing several very similar member methods which only differ by the parameter type. Thanks! > It should open up quite a few door. Here is a quick demo I hacked together of how compile time dimensionality checking can be implemented: > > http://www.csc.kth.se/~ol/physical.d That is really, really cool :) |
September 01, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Oskar Linde | Oskar Linde wrote: > Jarrett Billingsley wrote: > > >>"Kirk McDonald" <kirklin.mcdonald@gmail.com> wrote in message >>news:ed7ddg$6r2$1@digitaldaemon.com... >> >> >>>Nice. I'll have to play with the improved IFTI support. >>> >> >>Hm. I missed this new feature. What does it include? There's not even a >>link to a conversation, and I don't remember any threads about this. > > > It is really just a small patch that enables implicit function template > instantiation for member function and operator templates. It should work > identically to how IFTI works for free functions. > > It should open up quite a few door. Here is a quick demo I hacked together > of how compile time dimensionality checking can be implemented: > > http://www.csc.kth.se/~ol/physical.d > > /Oskar > > Hot, Dog!!! This is a project I was hoping to get to a LONG time ago. (The d code side, not the getting-D-to-do-this side) Best I came up with was a Runtime version. http://www.webpages.uidaho.edu/~shro8822/unit.d Mind if I try to graft in a "few" ;) more units and some unittest? |
September 01, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter Bright | Walter Bright wrote:
> Russ Lewis wrote:
>
>> Walter Bright wrote:
>>
>>> Russ Lewis wrote:
>>>
>>>> Is there any reason to not use "lazy" as a keyword to modify the
>>>> expression, rather than the parameter?
>>>>
>>>> void foo(int delegate() dg) {...}
>>>> void bar(int x,int y) {
>>>> foo(lazy x+y);
>>>> }
>>>
>>>
>>> One reason is lazy arguments and non-lazy arguments cannot be passed to the same function.
>>
>>
>> One of us is missing something. I'm not sure who :) Can you expand on your response here?
>
> foo(x + y);
> foo(lazy x + y);
>
> can't work, because foo needs to know which it is. Just like you can't have the same parameter be both in and out.
Ah, I was wondering if that was what you meant. What I was suggesting was that the code
lazy x+y
would just be syntax sugar for
delegate int() { return x+y; }
So, to expand on the previous example:
void foo(int delegate() dg) {...}
void foo(int i) {...}
void bar(int x,int y) {
foo(lazy x+y); // calls delegate version
foo(x+y); // calls int version
}
|
September 01, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Russ Lewis | Russ Lewis wrote:
> Ah, I was wondering if that was what you meant. What I was suggesting was that the code
> lazy x+y
> would just be syntax sugar for
> delegate int() { return x+y; }
>
> So, to expand on the previous example:
> void foo(int delegate() dg) {...}
> void foo(int i) {...}
> void bar(int x,int y) {
> foo(lazy x+y); // calls delegate version
> foo(x+y); // calls int version
> }
Ok, that can work. But I don't see an application for it.
|
September 01, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Oskar Linde | On Fri, 01 Sep 2006 00:50:48 +0200, Oskar Linde wrote: > Jarrett Billingsley wrote: > >> "Kirk McDonald" <kirklin.mcdonald@gmail.com> wrote in message news:ed7ddg$6r2$1@digitaldaemon.com... >> >>> Nice. I'll have to play with the improved IFTI support. >>> >> >> Hm. I missed this new feature. What does it include? There's not even a link to a conversation, and I don't remember any threads about this. > > It is really just a small patch that enables implicit function template instantiation for member function and operator templates. It should work identically to how IFTI works for free functions. > > It should open up quite a few door. Here is a quick demo I hacked together of how compile time dimensionality checking can be implemented: > > http://www.csc.kth.se/~ol/physical.d > > /Oskar In your example code you have ... // One wishes the .toString was unnecessary... writefln("A current of ",i.toString); writefln("through a voltage of ",v.toString); writefln("requires a resistance of ",r.toString); writefln("and produces ",w.toString," of heat."); writefln("Total energy used in ",ti.toString," is ",e.toString); but could you not also use ... writefln("A current of %s",i); writefln("through a voltage of %s",v); writefln("requires a resistance of %s",r); writefln("and produces %s of heat.",w); writefln("Total energy used in %s is %s",ti,e); -- Derek (skype: derek.j.parnell) Melbourne, Australia "Down with mediocrity!" 1/09/2006 12:02:44 PM |
September 01, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Derek Parnell | Derek Parnell wrote:
> On Fri, 01 Sep 2006 00:50:48 +0200, Oskar Linde wrote:
>
>> Jarrett Billingsley wrote:
>>
>>> "Kirk McDonald" <kirklin.mcdonald@gmail.com> wrote in message
>>> news:ed7ddg$6r2$1@digitaldaemon.com...
>>>
>>>> Nice. I'll have to play with the improved IFTI support.
>>>>
>>> Hm. I missed this new feature. What does it include? There's not even a
>>> link to a conversation, and I don't remember any threads about this.
>> It is really just a small patch that enables implicit function template
>> instantiation for member function and operator templates. It should work
>> identically to how IFTI works for free functions.
>>
>> It should open up quite a few door. Here is a quick demo I hacked together
>> of how compile time dimensionality checking can be implemented:
>>
>> http://www.csc.kth.se/~ol/physical.d
>>
>> /Oskar
>
> In your example code you have ...
>
> // One wishes the .toString was unnecessary...
> writefln("A current of ",i.toString);
> writefln("through a voltage of ",v.toString);
> writefln("requires a resistance of ",r.toString);
> writefln("and produces ",w.toString," of heat.");
> writefln("Total energy used in ",ti.toString," is ",e.toString);
>
>
> but could you not also use ...
>
> writefln("A current of %s",i);
> writefln("through a voltage of %s",v);
> writefln("requires a resistance of %s",r);
> writefln("and produces %s of heat.",w);
> writefln("Total energy used in %s is %s",ti,e);
Nope, since it only works for classes, and his SiQuantity is a struct
|
September 01, 2006 Re: DMD 0.166 release | ||||
---|---|---|---|---|
| ||||
Posted in reply to Tom S | On Fri, 01 Sep 2006 04:08:28 +0100, Tom S wrote: > Derek Parnell wrote: >> On Fri, 01 Sep 2006 00:50:48 +0200, Oskar Linde wrote: >> >>> Jarrett Billingsley wrote: >>> >>>> "Kirk McDonald" <kirklin.mcdonald@gmail.com> wrote in message news:ed7ddg$6r2$1@digitaldaemon.com... >>>> >>>>> Nice. I'll have to play with the improved IFTI support. >>>>> >>>> Hm. I missed this new feature. What does it include? There's not even a link to a conversation, and I don't remember any threads about this. >>> It is really just a small patch that enables implicit function template instantiation for member function and operator templates. It should work identically to how IFTI works for free functions. >>> >>> It should open up quite a few door. Here is a quick demo I hacked together of how compile time dimensionality checking can be implemented: >>> >>> http://www.csc.kth.se/~ol/physical.d >>> >>> /Oskar >> >> In your example code you have ... >> >> // One wishes the .toString was unnecessary... >> writefln("A current of ",i.toString); >> writefln("through a voltage of ",v.toString); >> writefln("requires a resistance of ",r.toString); >> writefln("and produces ",w.toString," of heat."); >> writefln("Total energy used in ",ti.toString," is ",e.toString); >> >> but could you not also use ... >> >> writefln("A current of %s",i); >> writefln("through a voltage of %s",v); >> writefln("requires a resistance of %s",r); >> writefln("and produces %s of heat.",w); >> writefln("Total energy used in %s is %s",ti,e); > > Nope, since it only works for classes, and his SiQuantity is a struct Damn! I didn't know that. What's the rationale for such a seemingly arbitrary restriction? -- Derek (skype: derek.j.parnell) Melbourne, Australia "Down with mediocrity!" 1/09/2006 1:17:19 PM |
Copyright © 1999-2021 by the D Language Foundation