# Generated by Clojure/Nim import cljnim_runtime proc square*(x: CljVal): CljVal = cljMul(@[x, x]) proc cube*(x: CljVal): CljVal = cljMul(@[x, x, x]) proc add*(a: CljVal, b: CljVal): CljVal = cljAdd(@[a, b]) proc greet*(name: CljVal): CljVal = cljStrConcat(@[cljString("Hello, "), name, cljString("!")]) proc factorial*(n: CljVal): CljVal = if cljIsTruthy(cljNumEq(@[n, cljInt(0)])): result = cljInt(1) else: result = cljMul(@[n, factorial(cljSub(@[n, cljInt(1)]))])