@@ -345,6 +345,10 @@ eval traceon ctxt ntimes genv tm opts = ev ntimes [] True [] tm where
345 | Just v <- findDefault alts = return $ Just (amap, v)
345 | Just v <- findDefault alts = return $ Just (amap, v)
346 chooseAlt env _ (VP _ n _, args) alts amap
346 chooseAlt env _ (VP _ n _, args) alts amap
347 | Just (ns, sc) <- findFn n alts = return $ Just (updateAmap (zip ns args) amap, sc)
347 | Just (ns, sc) <- findFn n alts = return $ Just (updateAmap (zip ns args) amap, sc)
348+ chooseAlt env _ (VBind _ _ (Pi s) t, []) alts amap
349+ | Just (ns, sc) <- findFn (UN "->") alts
350+ = do t' <- t (VV 0) -- we know it's not in scope or it's not a pattern
351+ return $ Just (updateAmap (zip ns [s, t']) amap, sc)
348 chooseAlt _ _ _ alts amap
352 chooseAlt _ _ _ alts amap
349 | Just v <- findDefault alts
353 | Just v <- findDefault alts
350 = if (any fnCase alts)
354 = if (any fnCase alts)