You're right - thank you for this constructive criticism. The post was originally written as a DIP (D Improvement Proposal), and arguably suffers a little because of that.
HN user
biotronic
Since Cython compiles to C++, it can use C++ templates directly, without the need for creating aliases to the specific instantiations you're gonna use. As far as I understand, you'll still have to write Cython bindings, though: https://cython.readthedocs.io/en/latest/src/userguide/wrappi...
Walter got a bit confused here - what he's describing is the owner/borrow system he's proposed to compete with Rust. This is unrelated to named parameters.
Both your convenience function and the quotes in the type name can be removed via the use of static opDispatch:
struct FlagImpl(string name) { bool value; alias value this; }
struct Flag { alias opDispatch(string name) = FlagImpl!name; }
struct Yes { static auto opDispatch(string name)() { return FlagImpl!name(true); } }
struct No { static auto opDispatch(string name)() { return FlagImpl!name(false); } }
void fun(Flag.foo a) {} // Look ma, no quotes!
unittest { fun(Yes.foo); fun(Flag.foo(true)); }
Humans started out with only one very limited language, then spread out to cover the world, and new languages flourished. As technology progressed and the world became smaller, having fewer languages (or at least, a few common languages) made more sense. With the advent of the internet, the world has become so small a single language might be the best option.
Programming started out with one very limited language (machine code), the spread out to cover the world, and new languages flourished. As technology progresses and the world becomes smaller, having fewer languages (or at least, a few common languages) will make more sense. With the advent of the singularity, the world will have become so small a single language might be the best option.=
if your "library" is all templates, it's not a library
TIL STL is not a library.
https://dlang.org/spec/cpp_interface.html#cpp-templates
You will need to recreate the C++ function definitions in D and mark them extern(C++), but that's about it.
The spec says the GC may move, though the current GC doesn't do that:
https://dlang.org/spec/garbage.html#obj_pinning_and_gc
There's also been some work on a precise GC for D:
https://forum.dlang.org/post/hdwwkzqswwtffjehenjt@forum.dlan...
Is there a way in D to check at compile time if a type is a POD type ?
http://dlang.org/phobos/std_traits#hasElaborateDestructor
I believe this is what you're looking for. Mayhap you need to combine it with hasElaborateCopyConstructor and/or other functions in std.traits.
'School in my opinion is an abstraction that isn't necessary anymore. A relic of the industrial age, when information was sparse and communities were largely illiterate.'
While this may be true for many people, there are plenty of parents out there who would do a much worse job than school would in teaching their children.
Sure, there are parents who are great at homeschooling, and who might even have time to do it (some of them have jobs, I hear), but this is not true for the vast majority.
Schools, in addition to providing some modicum of education, offer children a place to be while their parents are at work, and one where they can interact with others of their age in a controlled environment.
Oh, it's much worse than that. Not only would the original be the father, it would also be the same person. Hence, the original could be tried for any and every crime the clone commited.