On Friday, 26 April 2024 at 13:25:34 UTC, Salih Dincer wrote:
You have a 5-item data tuples as Tuple(1, 2, 3, [1, 3], 5) and
implement the sum (total = 15) with the least codes using the
sum() function of the language you are coding...
Nim:
```nim
import std/[math, typetraits, macros]
macro unrollRange(low, high: static int; name, body: untyped) =
result = newStmtList()
for i in low ..< high:
result.add(newBlockStmt(newStmtList(
newConstStmt(name, newLit i),
copy body
)))
let t = (1, 2, 3, @[1, 3], 5)
var arr: seq[int]
unrollRange(0, t.tupleLen, i):
arr.add t[i]
doAssert arr.sum == 15
```
vs. D
1. there's no `each` on tuples
2. there's no static for loop, so a macro is needed for the tuple
indices
3. `add` is making use of the same overload as D's `~=`