@@ -87,17 +87,17 @@ subTermT = go
87
87
L -> (\ l' -> TermCell (set cellLeft l' c)) <$> go ds g (c ^. cellLeft)
88
88
R -> (\ r' -> TermCell (set cellRight r' c)) <$> go ds g (c ^. cellRight)
89
89
90
- subTerm :: (Members '[Reader EvalCtx , Error (NockEvalError a )] r ) => Term a -> Path -> Sem r (Term a )
91
- subTerm term pos =
90
+ subTerm :: (Members '[Reader EvalCtx , Error (NockEvalError a )] r ) => Term a -> Path -> Maybe Interval -> Sem r (Term a )
91
+ subTerm term pos posLoc =
92
92
case term ^? subTermT pos of
93
- Nothing -> throwInvalidPath term pos
93
+ Nothing -> throwInvalidPath posLoc term pos
94
94
Just t -> return t
95
95
96
96
setSubTerm :: forall a r . (Members '[Error (NockEvalError a ), Reader EvalCtx ] r ) => Term a -> Path -> Term a -> Sem r (Term a )
97
97
setSubTerm term pos repTerm =
98
98
let (old, new) = setAndRemember (subTermT' pos) repTerm term
99
99
in if
100
- | isNothing (getFirst old) -> throwInvalidPath term pos
100
+ | isNothing (getFirst old) -> throwInvalidPath Nothing term pos
101
101
| otherwise -> return new
102
102
103
103
parseCell ::
@@ -435,7 +435,7 @@ evalProfile inistack initerm =
435
435
goOpAddress :: Sem r (Term a )
436
436
goOpAddress = do
437
437
cr <- withCrumb (crumb crumbDecodeFirst) (asPath (c ^. operatorCellTerm))
438
- withCrumb (crumb crumbEval) (subTerm stack cr)
438
+ withCrumb (crumb crumbEval) (subTerm stack cr (c ^. operatorCellTerm . termLoc) )
439
439
440
440
goOpQuote :: Term a
441
441
goOpQuote = c ^. operatorCellTerm
@@ -517,7 +517,7 @@ evalProfile inistack initerm =
517
517
cellTerm <- withCrumb (crumb crumbDecodeFirst) (asCell (c ^. operatorCellTerm))
518
518
r <- withCrumb (crumb crumbDecodeSecond) (asPath (cellTerm ^. cellLeft))
519
519
t' <- evalArg crumbEvalFirst stack (cellTerm ^. cellRight)
520
- subTerm t' r >>= evalArg crumbEvalSecond t'
520
+ subTerm t' r (cellTerm ^. cellLeft . termLoc) >>= evalArg crumbEvalSecond t'
521
521
522
522
goOpSequence :: Sem r (Term a )
523
523
goOpSequence = do
0 commit comments