aboutsummaryrefslogtreecommitdiffhomepage
path: root/std/Number/Unary.bruijn
diff options
context:
space:
mode:
authorMarvin Borner2024-03-25 16:21:54 +0100
committerMarvin Borner2024-03-25 16:21:54 +0100
commitf8398804d351667a7b887b89f6f70c7d5c407d22 (patch)
treed33df8e6bbe60640beb9e99c778eb27b1aa77995 /std/Number/Unary.bruijn
parent7bfc78b122ad9cbb65eed16f7de4d4021547c2a8 (diff)
More samples and definitions
Diffstat (limited to 'std/Number/Unary.bruijn')
-rw-r--r--std/Number/Unary.bruijn20
1 files changed, 20 insertions, 0 deletions
diff --git a/std/Number/Unary.bruijn b/std/Number/Unary.bruijn
index 5041614..3b58ceb 100644
--- a/std/Number/Unary.bruijn
+++ b/std/Number/Unary.bruijn
@@ -173,6 +173,26 @@ mod* [[1 &[[(0 ⋀? (2 ≤? 1)) case-rec case-end]] (1 : true) k]] ⧗ Unary →
case-rec (1 - 3) : true
case-end 1 : false
+# returns true if the number is even (remainder mod 2 == 0)
+even? [=?(0 % (+2u))] ⧗ Unary → Boolean
+
+=²?‣ even?
+
+:test (=²?(+0u)) (true)
+:test (=²?(+1u)) (false)
+:test (=²?(+41u)) (false)
+:test (=²?(+42u)) (true)
+
+# returns true if the number is odd (remainder mod 2 == 1)
+odd? ¬‣ ∘ even? ⧗ Unary → Boolean
+
+≠²?‣ odd?
+
+:test (≠²?(+0u)) (false)
+:test (≠²?(+1u)) (true)
+:test (≠²?(+41u)) (true)
+:test (≠²?(+42u)) (false)
+
# exponentiates two unary number
# doesn't give correct results for x^0
pow* [[1 0]] ⧗ Unary → Unary → Unary