phino-0.0.154: test-resources/evaluate-packs/spends-a-step-on-every-firing-of-an-evaluate-line.yaml
# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The same recursion through 'evaluate' lines, with no '--acyclic' to cut
# it. Every firing an 'evaluate' line asks for is one step deeper, the way
# a frame of π or π» is, so the step budget alone ends the run (#1882): the
# second firing has one step less to morph 'next' with, and starves there.
# The budget of firings is there only to end the run if the step is ever
# lost again.
symbolic: |
- Ξ»: L_loop
morph:
π1: $.next
evaluate:
π2: π1
π: π2
location: 'Q.app'
steps: 6
firings: 20
input: 'β¦ loop β¦ β¦ next β¦ Ξ¦.loop, Ξ» β€ L_loop β§, app β¦ Ξ¦.loop.Ο β§'
fails: 'reaching the limit of steps'
protocol: |
π(Ξ¦.app):
πΌ(L_loop):
π1Β·1 := β¦ next β¦ Ξ¦.loop, Ξ» β€ L_loop β§ # π(ΞΎ.next)
πΌ(L_loop): # πΌ(π1)
π(Ξ¦.aπ΅1):
starved(6)