Sebastien Binet wrote:
> On Tuesday 05 May 2009 20:42:06 Hoyt Koepke wrote:
>>> it is a bit disturbing though:
>>> auto foo = Bar !(3, Baz, 42);
>>> auto bar = Foo !(z);
>>>
>>> it is hard to not think of these statements as negating something
>>> (probably especially the second one ?)
>>> I wish D had chosen @ or $ instead of !.
>> Perhaps, but isn't it true that every language has slightly confusing
>> stuff when first considered? Whitespace in python, < > for template
>> stuff in C++, [] notation for buffers in cython (I've gotten used to
>> it fine, and don't mind it now, but it did make me to do a few
>> double-takes at first). What I like about D's syntax is that it's
>> easy to pick out !( ) as type arguments to a function, class, method,
>> etc. and ( ) for the regular arguments. What I have found to be nice
>> (and granted, I haven't done much D programming recently) is that type
>> parameters and regular parameters follow similar syntax, by intention.
>> I've found that templating stuff in D is an amazingly nice experience
>> (C++ just stinks in comparison) as once I've got my head around what
>> can and can't be done, the syntax is very intuitive.
>
> in fact, I am not really sure I am buying that this:
> auto foo = Foo !(T1, T2, T3)(arg1, arg2);
>
> is really cleaner/clearer than:
> auto foo = Foo (T1, T2, T3)(arg1, arg2);
>
> that is what we do in python/PyROOT (the main python-to-C/C++ module we use
> in
> my field (High Energy Physics)):
> import ROOT
> cls =ROOT.std.vector(double) # instantiates std::vector<double>
> data = cls()
> assert hasattr(data, 'size')
>
> my_data = ROOT.std.vector('MyNS::MyClass')()
> my_data.push_back(...)
> assert isinstance(my_data[0], ROOT.MyNS.MyClass)
>
> ROOT.std.vector being just a function returning classes, by type or by (C++)
> class name...
That looks a bit like partial(), and similar to what I 'proposed' earlier
with the keyword arguments.
It might make sense to stay in Python-syntax completely here. Maybe there
are more ideas on how to achieve this nicely.
Stefan
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev