4 ms·
There are tons of influences from ObjectPascal: * Range-based subtyping: You can declare a type as being an int of 1..5. Many Pascal-derived languages (Modula,
by lobster_johnson 12y ago
There are tons of influences from ObjectPascal:
* Range-based subtyping: You can declare a type as being an int of 1..5. Many Pascal-derived languages (Modula, Oberon, Ada) have this.
* Ranges are first-class values and can be used in loops and case statements: "for i in 0..10".
* Arrays: "array[1..5] of integer" becomes "array[1..5, int]". Nim also has open arrays, just like ObjectPascal.
* Enums. Almost exactly like Pascal.
* Sets, eg. "set[char]", which can then assign things like {"a".."z"}, almost exactly like Pascal.
* Functions like ord() and prec().
* For a long time Nim used Borland-influenced naming conventions (mainly three: TFoo for classes, PFoo for pointers to objects, FFoo for fields). Fortunately this has been deprecated.
* "var", "type" etc. being block-oriented and used to declare multiple things on separate lines.
* Functions/methods are called "procedures". (The Nim manual insists this is more correct. I'm not so sure.)
* Case insensitive identifiers.