diff --git a/src/ndspkg/types/ndstring.nim b/src/ndspkg/types/ndstring.nim index b24452a..af06009 100644 --- a/src/ndspkg/types/ndstring.nim +++ b/src/ndspkg/types/ndstring.nim @@ -89,7 +89,8 @@ proc `$`*(ndStr: NdString): string = proc `&`*(left, right: NdString): NdString = # TODO optimize this later when strings will be benchmarked - newString($left & $right) + let combined: string = $left & $right + newString(combined) proc getLength*(ndStr: NdString): int = ndStr.len.int diff --git a/src/ndspkg/types/value.nim b/src/ndspkg/types/value.nim index 50cf1ff..44d5030 100644 --- a/src/ndspkg/types/value.nim +++ b/src/ndspkg/types/value.nim @@ -207,7 +207,7 @@ proc add*(val: var NdValue, right: NdValue): NatReturn {.inline.} = if val.isFloat() and right.isFloat(): val = fromFloat(val.asFloat() + right.asFloat()) elif val.isString() and right.isString(): - val = fromNdString(val.asString() & val.asString()) + val = fromNdString(val.asString() & right.asString()) else: return natError(&"Attempt to add types {val.friendlyType()} and {right.friendlyType()}.") return natOk