0

我知道这通常不是一个好主意,但我想让 Nim 更“Pythonic”。例子:

1) 代替proc, 使用 def

2) 代替echo, 使用print

3) 代替readLine, 使用input

4)代替parseJson使用json.loads

等等。

是的,可能无法更改函数和语句的行为,但我希望它 - 至少 -看起来像“旧的”Python 的。

老实说,请不要向我解释为什么你认为这是一个坏主意。我想玩并尝试一下。没有动物会受到伤害,废话。

有任何想法吗?

谢谢!

4

1 回答 1

3

对于echo, readLine,parseJson您可以在 system.nim 和 json.nim 中查找它们的定义并定义您自己的 procs。这应该有效:

import json

proc print*(x: varargs[expr, `$`]) {.magic: "Echo", tags: [WriteIOEffect], sideEffect.}

proc input*(f: File): TaintedString  {.tags: [ReadIOEffect], benign.}

proc loads(p: var JsonParser): JsonNode = parseJson(p)

关于def,我认为不可能使用与 for 完全相同的语法proc。如果你愿意,你可以想出一些def宏,它本身会生成一些 proc 的 AST。但据我所见,用于定义 proc 的结果语法会非常难看。

于 2015-06-18T21:21:07.950 回答