diff --git a/bootstrap.php b/bootstrap.php index f292bb4..237f3cc 100644 --- a/bootstrap.php +++ b/bootstrap.php @@ -15,6 +15,7 @@ function ml_get_lisp(): array $env = new MadLisp\Env(); (new MadLisp\Lib\Math())->register($env); + (new MadLisp\Lib\Compare())->register($env); /* $env->set('eval', function (...$args) use ($eval, $env) { diff --git a/src/Lib/Compare.php b/src/Lib/Compare.php new file mode 100644 index 0000000..0fbeeef --- /dev/null +++ b/src/Lib/Compare.php @@ -0,0 +1,45 @@ +set('=', new CoreFunc('=', 'Return true if arguments are equal.', 2, 2, + fn ($a, $b) => $a == $b + )); + + $env->set('==', new CoreFunc('==', 'Return true if arguments are equal using strict comparison.', 2, 2, + fn ($a, $b) => $a === $b + )); + + $env->set('!=', new CoreFunc('!=', 'Return true if arguments are not equal.', 2, 2, + fn ($a, $b) => $a != $b + )); + + $env->set('!==', new CoreFunc('!==', 'Return true if arguments are not equal using strict comparison.', 2, 2, + fn ($a, $b) => $a !== $b + )); + + $env->set('<', new CoreFunc('<', 'Return true if first argument is less than second argument.', 2, 2, + fn ($a, $b) => $a < $b + )); + + $env->set('<=', new CoreFunc('<=', 'Return true if first argument is less or equal to second argument.', 2, 2, + fn ($a, $b) => $a <= $b + )); + + $env->set('>', new CoreFunc('>', 'Return true if first argument is greater than second argument.', 2, 2, + fn ($a, $b) => $a > $b + )); + + $env->set('>=', new CoreFunc('>=', 'Return true if first argument is greater or equal to second argument.', 2, 2, + fn ($a, $b) => $a >= $b + )); + } +} diff --git a/src/Lib/Core.php b/src/Lib/Core.php index 83eb5a3..906773b 100644 --- a/src/Lib/Core.php +++ b/src/Lib/Core.php @@ -13,17 +13,6 @@ class Core implements ILib { public function register(Env $env): void { - // arithmetic - - // comparison - - $env->set('=', fn ($a, $b) => $a == $b); - $env->set('<', fn ($a, $b) => $a < $b); - $env->set('>', fn ($a, $b) => $a > $b); - $env->set('<=', fn ($a, $b) => $a <= $b); - $env->set('>=', fn ($a, $b) => $a >= $b); - $env->set('!=', fn ($a, $b) => $a != $b); - // types $env->set('type?', function ($a) {