我知道这通常不是一个好主意,但我想让Nim更“Pythonic”。例子:
1)使用def
而不是proc
2)使用echo
print
3)使用readLine
input
4)而不是parseJson
使用json.loads
等等。
是的,可能无法更改函数和语句的行为,但我希望它 - 至少 - 看起来就像“好”旧的“Python的。
老实说,请不要解释我为什么认为这是个坏主意。我想播放并尝试一下。没有动物会受到伤害,等等。
有什么想法吗?
谢谢!
答案 0 :(得分:3)
对于echo
,readLine
和parseJson
,您可以在system.nim和json.nim中查找其定义并定义自己的过程。这应该有效:
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
,我认为不可能使用与proc
完全相同的语法。如果你愿意,你可以想出一些def
宏,它本身会产生一些proc的AST。但据我所知,定义proc的结果语法非常难看。