diff options
| author | Jedidiah Barber <contact@jedbarber.id.au> | 2025-12-18 14:55:25 +1300 |
|---|---|---|
| committer | Jedidiah Barber <contact@jedbarber.id.au> | 2025-12-18 14:55:25 +1300 |
| commit | 25bcb022d4afde35ad59e1a91ccab335accf69fb (patch) | |
| tree | 3070aa66d6f5d2652c79f63d9bf2968e42ce3f74 | |
| parent | f6c26c09bad7ba5d39c8af25cc06ff07f836769c (diff) | |
Added missing equality function for Term
| -rw-r--r-- | src/kompsos.adb | 24 | ||||
| -rw-r--r-- | src/kompsos.ads | 4 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/kompsos.adb b/src/kompsos.adb index 1fedb86..476eb86 100644 --- a/src/kompsos.adb +++ b/src/kompsos.adb @@ -96,6 +96,30 @@ package body Kompsos is -- Terms -- + function "=" + (Left, Right : in Term) + return Boolean is + begin + if Left.Actual = Right.Actual then + return True; + elsif Left.Kind = Right.Kind then + case Left.Kind is + when Atom_Term => + return Left.Actual.Value = Right.Actual.Value; + when Var_Term => + return Left.Actual.Refer = Right.Actual.Refer; + when Pair_Term => + return Left.Actual.Left = Right.Actual.Left and + Left.Actual.Right = Right.Actual.Right; + when Null_Term => + return True; + end case; + else + return False; + end if; + end "="; + + function Kind (This : in Term) return Term_Kind is diff --git a/src/kompsos.ads b/src/kompsos.ads index 15f61bb..22e5a8b 100644 --- a/src/kompsos.ads +++ b/src/kompsos.ads @@ -42,6 +42,10 @@ package Kompsos is Empty_Term : constant Term; + function "=" + (Left, Right : in Term) + return Boolean; + function T (Item : in Element_Type) return Term; |
