On Fri, Jun 10, 2011 at 4:18 PM, Mark Wiebe <[email protected]> wrote:

> On Fri, Jun 10, 2011 at 12:56 AM, Ralf Gommers <
> [email protected]> wrote:
>
>>
>> Maybe I'm misunderstanding this, and once you make a function work for
>> datetime it would also work for other new dtypes. But my impression is that
>> that's not the case. Let's say I make a new dtype with distance instead of
>> time attached. Would I be able to use it with arange, or would I have to go
>> in and change the arange implementation again to support it?
>>
>
> Ok, I think I understand the point you're driving at now. We need NumPy to
> have the flexibility so that external plugins defining custom data types can
> do the same thing that datetime does, having datetime be special compared to
> those is undesirable. This I wholeheartedly agree with, and the way I'm
> coding datetime is driving in that direction.
>
> The state of the NumPy codebase, however, prevents jumping straight to such
> a solution, since there are several mechanisms and layers of such
> abstraction already which themselves do not satisfy the needs of datetime
> and other similar types. Also, arange is just one of a large number of
> functions which could be extended individually for different types, for
> example if one wanted to make a unit quaternion data type for manipulating
> rotations, its needs would be significantly different. Because I can't see
> the big picture from within the world of datetime, and because such
> generalization takes a great amount of effort, I'm instead making these
> changes minimally invasive on the current codebase.
>
> This approach is along the lines of "lifting" in generic programming. First
> you write your algorithm in the specific domain, and work out how it behaves
> there. Then, you determine what are the minimal requirements of the types
> involved, and abstract the algorithm appropriately. Jumping to the second
> step directly is generally too difficult, an incremental path to the final
> goal must be used.
>
> http://www.generic-programming.org/about/intro/lifting.php
>
> Thanks for explaining, this makes sense to me now.

Ralf
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to