phino-0.0.152: test-resources/atoms.yaml
# SPDX-FileCopyrightText: Copyright (c) 2025 Objectionary.com
# SPDX-License-Identifier: MIT
---
# The Ξ» functions phino's own specs fire. phino implements none of them, so a
# spec that needs one to answer brings this file in with '--symbolic'. Every
# entry answers symbolically: the operands come down through π» or reach a
# normal form through π, and the term under 'π' carries a fresh symbol π
# standing for the value nobody worked out. Nothing here computes, which is
# what makes the morphing symbolic.
#
# 'L_number_nope' is missing on purpose: it is the Ξ» function no entry answers,
# the one '--partial' parks on.
# Arithmetic over two numbers answers a number nobody has worked out.
- Ξ»: L_number_(plus|times|div)
dataize:
πΏ1: $.Ο
πΏ2: $.x
π: Ξ¦.number( Ο β¦ β¦ Ξ» β€ π β§ )
# Comparing two numbers answers a bool nobody has decided, which is what the
# fork below then branches on.
- Ξ»: L_number_gt
dataize:
πΏ1: $.Ο
πΏ2: $.x
π: Ξ¦.bool( Ο β¦ β¦ Ξ» β€ π β§ )
# Comparing two byte arrays answers a bool of the same kind.
- Ξ»: L_bytes_eq
dataize:
πΏ1: $.Ο
πΏ2: $.b
π: Ξ¦.bool( Ο β¦ β¦ Ξ» β€ π β§ )
# Inverting a byte array answers an array nobody has worked out.
- Ξ»: L_bytes_not
dataize:
πΏ1: $.Ο
π: Ξ¦.bytes( Ο β¦ β¦ Ξ» β€ π β§ )
# A branch is where a 'morph' operand earns its place: the condition comes
# down through π», both branches reach a normal form through π, and the answer
# is one of them. This one answers the first, which is what an entry naming a
# meta it bound does; an entry whose answer is to stand for either branch joins
# the two of them in a 'join' block first and answers the meta that makes.
- Ξ»: L_fork
dataize:
πΏ1: $.Ο
morph:
π1: $.then
π2: $.else
π: π1