[phobos] std.complex: ready for Phobos?

Lars Tandle Kyllingstad lars at kyllingen.net
Tue Apr 20 13:57:10 PDT 2010


Philippe Sigaud wrote:
> On Tue, Apr 20, 2010 at 11:06, Lars Tandle Kyllingstad 
> <lars at kyllingen.net <mailto:lars at kyllingen.net>> wrote:
> 
>     Does Complex!BigInt (or Complex!int, for that matter) *ever* make
>     sense?  I mean, yes, it *sounds* cool, and I'm normally against
>     introducing gratuitous constraints on functionality, but in this
>     case I think I prefer restricting T to real number types.
> 
>     Have in mind that not only will one have to disable (or introduce
>     special cases for) abs() and arg(), but also some of the operations,
>     in particular division and exponentiation.
> 
>     It all sounds like more work, more maintenance, more complex code
>     (hur hur), for very little or no benefit.
> 
> 
> I completly agree, and wasn't trying to sell Complex for any integral 
> type! My only suggestion was to use a generic template to determine what 
> operators were supported by a type, based on your suggestion to use 
> compile-time interfaces, à la std.range.
> I was using BigInt as non-built-in numeric type, the only one available 
> on Phobos.

Ok, it seems I understood you too literally.  I think we mostly agree 
then.  Ideally, the constraint on Complex!T should act as a compile-time 
interface that checks whether T *behaves* like a floating-point type. 
However, in this case I personally think Complex!T should work equally 
well for all T or not at all, and for the time being that means using 
isFloatingPoint.


> But then I thought that the compiler already checks at compile-time that 
> the operations are possible, so I'm not so certain about the need for 
> such a template. Maybe as a way to document the code?

That, and for error messages that are easier to understand and track down.


> Sorry for the noise, I'll let you continue your good work.

Nono, don't be.  Feedback is always good. :)  Like I said, I just think 
it's better to start with a tight constraint and relax it if it turns 
out that that's what people want.

-Lars



More information about the phobos mailing list