@args --debugger nix-repl> let f = _: throw "x_x"; x = f 5; in x error: x_x absolute indices still work: nix-repl> :st 1 1: while calling a function «string»:1:12 1| let f = _: throw "x_x"; x = f 5; in x | ^ Env level 0 static: _ Env level 1 static: f x Env level 2 static: Env level 3 abort baseNameOf break builtins derivation derivationStrict dirOf false fetchGit fetchMercurial fetchTarball fetchTree fromTOML import isNull map null placeholder removeAttrs scopedImport throw toString true index with + goes up the stack relative to current (1 in this case): nix-repl> :st +3 4: while evaluating a 'let' expression «string»:1:1 1| let f = _: throw "x_x"; x = f 5; in x | ^ Env level 0 static: f x Env level 1 static: Env level 2 abort baseNameOf break builtins derivation derivationStrict dirOf false fetchGit fetchMercurial fetchTarball fetchTree fromTOML import isNull map null placeholder removeAttrs scopedImport throw toString true index with - goes down and is also relative to current (4): nix-repl> :st -1 3: while calling a function «string»:1:29 1| let f = _: throw "x_x"; x = f 5; in x | ^ Env level 0 static: f x Env level 1 static: Env level 2 abort baseNameOf break builtins derivation derivationStrict dirOf false fetchGit fetchMercurial fetchTarball fetchTree fromTOML import isNull map null placeholder removeAttrs scopedImport throw toString true quit nix-repl> :quit error: x_x