phino-0.0.154: test-resources/evaluate-packs/fires-the-answer-of-an-evaluate-line-on-the-next-line.yaml
# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# An 'evaluate' line fires once and no more: 'L_first' answers a ready call
# of 'L_second', which πΌ leaves as π left it, and only the next line of the
# block fires that call (#1874).
symbolic: |
- Ξ»: L_first
π: β¦ Ξ» β€ L_second β§
- Ξ»: L_second
π: β¦ Ο β¦ β¦ Ξ» β€ π β§ β§
- Ξ»: L_twice
morph:
π1: $.a
evaluate:
π2: π1
π3: π2
π: π3
location: 'Q.y'
input: 'β¦ y β¦ β¦ a β¦ β¦ Ξ» β€ L_first β§, Ξ» β€ L_twice β§.Ο β§'
result: 'π1:Ξ»'
protocol: |
π(Ξ¦.y):
πΌ(L_twice):
π1Β·1 := L_first:Ξ» # π(ΞΎ.a)
πΌ(L_first): # πΌ(π1)
πΒ·2Β·1 := L_second:Ξ» # π
πΒ·2Β·2 := L_second:Ξ» # π(πΒ·2Β·1)
π2Β·1 := L_second:Ξ» # πΌ(π1)
πΌ(L_second): # πΌ(π2)
πΒ·3Β·1 := π1:Ξ»:Ο # π
πΒ·3Β·2 := π1:Ξ»:Ο # π(πΒ·3Β·1)
π3Β·1 := πΒ·3Β·2 # πΌ(π2)
πΒ·1Β·1 := π3Β·1 # π
πΒ·1Β·2 := π3Β·1 # π(πΒ·1Β·1)