On Tuesday, 20 August 2013 at 16:49:35 UTC, QAston wrote:
On Tuesday, 20 August 2013 at 16:40:21 UTC, Ramon wrote:
Yes and no.
While UTF-8 almost always is the most memory efficient
representation of anything beyond ASCII it does have a
property that can be troublesome a times, the difference
between length and size of a string, i.e. the number of
"characters" vs. the number of bytes used.
---
As for another issue I'm getting more and more disappointed:
generics.
To put (my mind) bluntly, D does *not* support generics but
rather went into the same ugly trap C++ went into, albeit D
handles the situation way more elegantly.
Forgive me seeming harsh here but I just wrote it in the D gui
thread: Any really great solution needs a solid philosophy and
very profound thinking and consistency - and here D failed
bluntly (in my minds eye).
With all due respect: Templates are an editors job, not a
compilers.
Yes, templates offer some gadgets beyond simple replacement
but basically they are just a comfort thingy, relieving the
programmer from typing.
That, however, was *not* the point about generics. They are
about implementing algorithms independent of data types (as
far as possible).
Now, I'm looking around at mixins and interfaces in order to
somehow makeshift some kind of a halfway reasonable generics
mechanism. Yuck!
Well, maybe it's my fault. Maybe I was foolish to hope for
something like Eiffel but more pragmatically useful and
useable, more C style and way better documented. What I seem
to have found with D is a *very nice* and *way better* and
considerably more useful kind of C++.
Why aren't real generics there? I mean it's not that high tech
or hard to implement (leaving aside macho bla bla like "It'd
break the ranges system").
why not something like
generic min(T:comparable) { // works only with comparable
types/classes
// min magic
}
This could then at *run time* work with anything that met the
spec for "comparable" which basically came down to anything
that offers "equ" and "gt" (and "not").
Interfaces offer runtime resolution:
interface Comparable
{
}
void doStuff(Comparable c)
{
}
will work with anything that meets the specs for comparable.
For compile time resolution you can do this
sorry, I missclicked and then unintentionally posted this
unfinished by "Send" keyboard shortcut :(