So no Tangent work. Still need to implement better method grouping for phrases, generic bits for phrases, the type-arg sort of stuff, and constraint inference. After that though, I'm considering making less ints.
Less ints you ask? Yes. Not the 4-byte, 8-byte, 16 byte, etc ints (though there should only really be big int, native int and compatibility), but something to promote not using ints everywhere. There was a post here where a beginner couldn't use trig functions because they failed to realize that it took radians. Any sort of physical modeling will use lengths and sizes; most should be in meters, but what if they're not? And why do they need to be specified in meters rather than km or cm for different models?
And the same sort of problem exists with time values (is that 4pm local or gmt?), with currencies (usd, ausd?)...
Sure, in languages that allow it, people could declare a type that acts like a number but is restricted explicitly to be n seconds or meters or goats. But nobody does, because it's either tedious and sucky or because it's too slow or because it causes problems when interacting with other stuff. And nobody will really implement them with any consistency. And you run into problems about ownership of the certain data. If you have 100 goats here and 200 goats there, does there need to be two instances of goat data? Can that be static?
So I think that it would be cool to make that not tedious so it fits into idiomatic Tangent. Something that is consistent and intuitive. A feature that gives enough benefits over annoyances that people actually use it rather than ints everywhere.
The key sort of thing I'm looking to gain is:
set AlarmClock to Now + 5 minutes;
AlarmClock = Now + 5 minutes;
set AlarmClock to Now.AddMinutes(5);
AlarmClock = Now.AddMinutes(5);
x = sin( 30 degrees ); // distinct types can be overloaded more cleanly
x = sin( 1.2 radians );
local meters distance = 30 cm; // via some auto-conversion table.
Ogre gains 50 strength; // can go into a container of stats rather than
// int strength;
There are a few problems that are looming about. Certain things should be just ints. Some are acceptable as floats. Some probably even more exotic numbers. Some make no sense as negatives... how to deal with that. How to deal with overloading. Tangent tends to allow people to re-use identifiers; overloading behaviors. Should the name of the label follow that or be kept distinct. How to deal with classifications of these things (having a currency type that can hold usds or euros). And perhaps most far-reaching is that the best way to implement this sort of thing is to make int a method that takes either a type param or an identifier and returns the new typed int. That may yield some unexpected results (or uuuuuugly misuse) in some scenarios.
Still, something I'm thinking about. Can't find anything at first glance regarding language support elsewhere for this sort of thing. I would've thought that it would've been tried or at least speculated. Probably the best line of thought would be to look at C++ and how the things would be implemented there; what the flaws or annoyances were. Y'know, if my google-fu continues to suck.
And hopefully time and motivation will return to get the 4-6 things ahead of this puppy on the list.