I'm so sorry.
#[
"""
# ]#
import macros
type
None = void
str = string
macro def(d, b: untyped) =
let n = d[1][0]
var params: seq[NimNode]
var defb: seq[NimNode]
params.add(d[^1])
for x in d[1][1..^1]:
if x.kind == nnkIdent:
defb.add(x)
else:
defb.add(x[0])
for y in defb:
params.add(newIdentDefs(y, x[1]))
defb.setLen(0)
let pragmas = newNimNode(nnkPragma).add(ident("discardable"))
return newProc(n, params, b, pragmas = pragmas)
def `+`(x, y: str) -> str:
return x & y
def print(x: str) -> None:
echo x
#[
"""
# ]#
def python_rocks(x: int, y: str) -> int:
print("yea!!!" + y)
return x * 2
python_rocks(2, "hi")
Run
$ nim r def.nim
yea!!!hi
$ python def.nim
yea!!!hi
Run
(Please do not use this...)