On Friday, October 7, 2016 at 3:35:46 PM UTC, Gabriel Gellner wrote:
> `atol/rtol` versus
> `abstol/reltol` versus `abs_tol/rel_tol`
For the latter "versus" at least (and other examples), this would be solved
by style-insensitivity, as in Nimrod (or Nim) language, the only one I've
heard that does this; not sure of status of it, maybe they dropped it with
I hesitated to propose this for Julia, when I first discovered this,
I'm/was conflicted; I thought this would break code, as it's a breaking
change, but would in fact help(?)
This could in theory be done with a macro(?)
"Nimrod is a style-insensitive language. This means that it is not
case-sensitive and even underscores are ignored: type is a reserved word,
and so is TYPE or T_Y_P_E. The idea behind this is that this allows
programmers to use their own preferred spelling style and libraries written
by different programmers cannot use incompatible conventions.
Please *rethink* about that or at least give us an option to disable both: case
insensitive and also underscore ignored
Also a consistent style for code bases is VASTLY overrated, in fact I
almost never had the luxury of it and yet it was never a problem."
Trivia on Nim[rod], D and upcoming(?) C++ below, I was just looking up hard
to find above info..):
* Type identifiers should be in PascalCase. All other identifiers should be
in camelCase with the exception of constants which *may* use PascalCase but
are not required to.
For constants coming from a C/C++ wrapper, ALL_UPPERCASE are allowed, but
ugly. (Why shout CONSTANT? Constants do no harm, variables do!)
- * A fast *non-tracing* garbage collector that supports soft real-time
systems (like games).
- * System programming features: Ability to manage your own memory and
access the hardware directly. Pointers to garbage collected memory are
distinguished from pointers to manually managed memory.
* Macros can modify the abstract syntax tree at compile time.
- * Macros cannot change Nim's syntax because there is no need for it.
Nim's syntax is flexible enough.
- * Statements are grouped by indentation but can span multiple lines.
Indentation must not contain tabulators so the compiler always sees the
code the same way as you do.
*"Nim* (formerly named *Nimrod*)
Language designInfluenced by[..]
UFCS <https://en.wikipedia.org/wiki/UFCS>, a feature supported by Nim" [and
"It has been proposed (as of 2016) for addition to C++ by Bjarne Stroustrup
and Herb Sutter <https://en.wikipedia.org/wiki/Herb_Sutter>, to reduce the
ambiguous decision between
// All the followings are correct and equivalent
int b = first(a);
int c = a.first();
int d = a.first;