packages feed

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)