home docs learn download forum faq slides # compute average line length var sum = 0 count = 0 for line in stdin.lines: sum += line.len count += 1 echo( "Average line length: " , if count: sum / count else : 0 ) # create and greet someone type Person = object name: string age: int proc greet (p: Person ) = echo "Hi, I'm " , p.name, "." echo "I am " , p.age, " years old." var p = Person (name: "Jon" , age: 18 ) p.greet() # or greet(p) slide0 Why should I be excited? Nim is the only language that leverages automated proof technology to perform a disjoint check for your parallel code. Working on disjoint data means no locking is required and yet data races are impossible: parallel : var i = 0 while i <= a.high: spawn f(a[i]) spawn f(a[i+ 1 ]) # ERROR: cannot prove a[i] is disjoin...