phino-0.0.162: test-resources/evaluate-packs/work-out-an-argument-that-comes-to-a-hanging-object.yaml
# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# yamllint disable rule:line-length
# The deferral of #1892 over a copy with two arguments: 'x' reads to the bare
# symbol 'π1', so the 'defer' line defers the copy, and 'w' is a call of
# 'Ξ¦.hang'. Its morph stops at a formation with no Ξ» whose Ο reads 'ΞΎ.x', so
# the line morphs that Ο and fires it once more, the way a branch whose Ο reads
# its own object is worked out in #1885. The line then names 'w' by a meta
# leading to a formation whose Ο ends in a symbol, instead of leaving a '?'
# in '<with>' (#1919).
symbolic: |
- Ξ»: L_inc
dataize:
πΏ1: $.x
π: Ξ¦.num( Ο β¦ β¦ Ξ» β€ π β§ )
- Ξ»: L_fork
dataize:
πΏ1: $.c
morph:
π1: $.a
π2: $.b
defer:
π3: π1
π4: π2
join:
on: πΏ1
left: π3
right: π4
location: 'Q.y'
input: 'β¦ box(x, w) β¦ β¦ Ο β¦ x.next β§, done β¦ β¦β§, hang(x) β¦ β¦ Ο β¦ ΞΎ.x β§, num(Ο) β¦ β¦β§, items β¦ β¦ tail β¦ β¦ Ξ» β€ π1 β§ β§, y β¦ β¦ x β¦ β¦ c β¦ β¦ Ξ» β€ π2 β§, a β¦ β¦ Ξ» β€ π3 β§, b β¦ Ξ¦.box( x β¦ Ξ¦.items.tail, w β¦ Ξ¦.hang( Ξ¦.num( Ο β¦ β¦ Ξ» β€ π4 β§ ) ) ), Ξ» β€ L_fork β§, Ξ» β€ L_inc β§.Ο β§'
result: 'π7:Ξ»'
protocol: |
π(Ξ¦.y):
πΌ(L_inc):
π»(ΞΎ.x):
πΌ(L_fork):
π»(ΞΎ.c):
πΏΒ·2Β·1 := π»(π2:Ξ»)
πΏ1Β·2 := πΏΒ·2Β·1 # π»(ΞΎ.c)
π(ΞΎ.a):
morphed πΒ·2Β·1 := π3:Ξ»
π1Β·2 := πΒ·2Β·1 # π(ΞΎ.a)
π(ΞΎ.b):
remembered πΒ·2Β·2 β‘ Ξ¦.box # β¦ x β¦ β
, w β¦ β
, Ο β¦ x.next β§
πΒ·2Β·3 := Ξ¦.box( x β¦ Ξ¦.items.tail )
πΒ·2Β·4 := β¦ x β¦ Ξ¦.items.tail, w β¦ β
, Ο β¦ x.next β§
remembered πΒ·2Β·4 β‘ πΒ·2Β·2( x β¦ Ξ¦.items.tail )
πΒ·2Β·5 := πΒ·2Β·3( w β¦ Ξ¦.hang( Ξ¦.num( Ο β¦ π4:Ξ» ) ) )
πΒ·2Β·6 := β¦ x β¦ Ξ¦.items.tail, w β¦ Ξ¦.hang( Ξ¦.num( Ο β¦ π4:Ξ» ) ), Ο β¦ x.next β§
remembered πΒ·2Β·6 β‘ πΒ·2Β·4( w β¦ Ξ¦.hang( Ξ¦.num( Ο β¦ π4:Ξ» ) ) )
morphed πΒ·2Β·7 := πΒ·2Β·6
π2Β·2 := πΒ·2Β·7 # π(ΞΎ.b)
recalled πΒ·2Β·6 β πΒ·2Β·4( w β¦ Ξ¦.hang( Ξ¦.num( Ο β¦ π4:Ξ» ) ) )
recalled πΒ·2Β·4 β πΒ·2Β·2( x β¦ Ξ¦.items.tail )
recalled πΒ·2Β·2 β Ξ¦.box
π(π2.w):
πΒ·2Β·8 := Ξ¦.hang( x β¦ Ξ¦.num( Ο β¦ π4:Ξ» ) )
πΒ·2Β·9 := β¦ x β¦ Ξ¦.num( Ο β¦ π4:Ξ» ), Ο β¦ x β§
morphed πΒ·2Β·10 := πΒ·2Β·9
π(π2.w.Ο):
πΒ·2Β·11 := Ξ¦.num( Ο β¦ π4:Ξ» )
πΒ·2Β·12 := π4:Ξ»:Ο
morphed πΒ·2Β·13 := πΒ·2Β·12
deferred π5 := Ξ¦.box( x β¦ π1:Ξ», w β¦ πΒ·2Β·13 ) # π(π2.Ο)
joined π6 := πΏ1Β·2 ? π3 : π5
πΒ·2Β·14 := π6:Ξ»
πΏΒ·1Β·1 := π»(π6:Ξ»)
πΏ1Β·1 := πΏΒ·1Β·1 # π»(ΞΎ.x)
πΒ·1Β·1 := Ξ¦.num( Ο β¦ π7:Ξ» ) # π
π(πΒ·1Β·1):
πΒ·1Β·2 := Ξ¦.num( Ο β¦ π7:Ξ» )
πΒ·1Β·3 := π7:Ξ»:Ο
morphed πΒ·1Β·4 := πΒ·1Β·3
πΒ·1Β·5 := πΒ·1Β·4 # π(πΒ·1Β·1)
morphed πΒ·0Β·1 := π7:Ξ»