Here's my own copy of the main Nim repository. See original at https://github.com/nim-lang/Nim
- Fixed: main module name can start with a digit. Proabably also with underscore, but that needs test.
Some notes...
- No
%and//ops, onlymodanddiv. Aha, there's%%. Where then//? (Aha, rationals. Never-used :) Can define own div) - Other ops... we'll see. Documentation on expressions is absent, or split over different parts.
- Parameters are const. WTF! I have to create a mutual copy not only for complex data, but even for ints! Yes, this feature sucks but I see the idea and not clear how to fix it. Also weird: variables --
var i: int, arguments --i: var int. discardis disgusting. Why notskip?inclfor sets must beadd(as well). OK, can have alias.. probably.- No
loop/forever, again stupidwhile true. GSD it's not True. Ok, can be defined with template. - Probably must be reverse:
@[...]<-->[...]. Aha,@is op. Interesting. But still not sure if wise. const A=1,B=2,C=3should work!- as well as
var a=1, b=2. Let's do it! - really annoying that you can't write
a=-1orb+=+1orc=@[]-- there must be ' ' after '='. This should be fixed! foldl,map,split,join,sum,^(power)%%and//for ints must be in system module. Also<< >> & | ~ (xor)var a: enum A,B-- internal error pfffff. Reported.- also error with
a=a*bvsa*=bunderoverflowchecks. type S = 0..1 \n var good: array[S,S] = [S(0),S(1)] \n var bad: array[S,S] = [0,1]-- should work too! in definition- what's wrong with
for i in 0..10: if a[i]>0: echo a[i]; t+=a[i] else: echo "!",i? what can be misunderstood there? - Ids have case-sensitive first letter, the tail is case-insensitive and underscores
_inside it are ignored. Wow this is weird!