all repos — min @ 96c6c32be80edc5f32b69c0ca981b400e43037c2

A small but practical concatenative programming language.

Some tests in global are failing (seem to be dictionary relared)
h3rald h3rald@h3rald.com
Mon, 25 May 2026 14:01:02 +0200
commit

96c6c32be80edc5f32b69c0ca981b400e43037c2

parent

8b8a3bbf928110c92bf9b455438d1381a590b2d3

2 files changed, 4 insertions(+), 3 deletions(-)

jump to
M minpkg/core/interpreter.nimminpkg/core/interpreter.nim

@@ -194,7 +194,7 @@ return v

proc apply*(i: In, op: MinOperator, sym = "") {.gcsafe, effectsOf: op.} = if op.kind == minProcOp: - if not op.mdl.scope.isNil and not i.scope.hasParent op.mdl.scope: + if op.mdl.isDictionary and not op.mdl.scope.isNil and not i.scope.hasParent op.mdl.scope: # Capture closures at module level let origScope = i.scope let origParentScope = i.scope.parent
M minpkg/core/parser.nimminpkg/core/parser.nim

@@ -762,6 +762,7 @@ result = MinValue(kind: minQuotation, qVal: q)

of tkBraceLe: var scope = newScopeRef(nil) var val: MinValue + var valSet = false discard getToken(p) var c = 0 while p.token != tkBraceRi:

@@ -769,7 +770,7 @@ let v = p.parseMinValue(i)

if v.isUnknown: continue c = c+1 - if val.isUnknown: + if not valSet: val = v elif v.kind == minSymbol: let key = v.symVal

@@ -778,7 +779,7 @@ var offset = 0

if key[1] == '"': offset = 1 scope.symbols[key[1+offset .. key.len-1-offset]] = MinOperator(kind: minValOp, val: val, sealed: false, lambda: key[0] == '^') - val = MinValue(kind: minUnknown) + valSet = false else: raiseInvalid("Invalid dictionary key: " & key) else: