all repos — min @ 433a3c7fb541c59cbfdbc819356218f22f85fc49

A small but practical concatenative programming language.

dynamic/dynamicadd.nim

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
## This is all you need to create a min module in Nim
## Compile with `nim c --app:lib --noMain -d:release dynamicadd.nim`
include mindyn

proc setup*(): DynInfo {.rtl.} =
  result = DynInfo(moduleName: "the_lib", dynlibVersion: 1) 

proc the_lib*(i: In) {.rtl.} =
  let def = i.define()
  def.symbol("myp") do (i: In):
    let vals = i.expect("num", "num")
    let a = vals[0]
    let b = vals[1]
    if a.isInt:
      if b.isInt:
        i.push newVal(a.intVal + b.intVal)
      else:
        i.push newVal(a.intVal.float + b.floatVal)
    else:
      if b.isFloat:
        i.push newVal(a.floatVal + b.floatVal)
      else:
        i.push newVal(a.floatVal + b.intVal.float)
  def.finalize("dyn")