aboutsummaryrefslogtreecommitdiffhomepage
path: root/std/String.bruijn
diff options
context:
space:
mode:
Diffstat (limited to 'std/String.bruijn')
-rw-r--r--std/String.bruijn19
1 files changed, 12 insertions, 7 deletions
diff --git a/std/String.bruijn b/std/String.bruijn
index 5ea6ef9..76121ee 100644
--- a/std/String.bruijn
+++ b/std/String.bruijn
@@ -1,7 +1,7 @@
# MIT License, Copyright (c) 2022 Marvin Borner
:import std/Char C
-:import std/Number .
+:import std/Math .
:import std/Number/Binary B
:input std/List
@@ -29,21 +29,26 @@ ni? \in? ⧗ String → Char → Boolean
:test ("ab" ∋ 'c') (false)
# converts a string of digits into a number
-number! from-digits ∘ (map C.number!) ⧗ String → Number
+string→number from-digits ∘ (map C.char→number) ⧗ String → Number
-:test (%(number! "123")) ((+123))
+:test (%(string→number "123")) ((+123))
# converts a signed string of digits into a number
-signed-number! [(sign ^0) (number! ~0)] ⧗ String → Number
+string→signed-number [(sign ^0) (string→number ~0)] ⧗ String → Number
sign [(B.eq? 0 '-') -‣ i]
-:test (%(signed-number! "+123")) ((+123))
-:test (%(signed-number! "-123")) ((-123))
+:test (%(string→signed-number "+123")) ((+123))
+:test (%(string→signed-number "-123")) ((-123))
+
+# converts a number to a string
+number→string (map C.number→char) ∘ digits ⧗ Number → String
+
+:test (number→string (+123)) ("123")
# splits string by newline character
lines z [[rec]] ⧗ String → (List String)
rec build (break (B.eq? '\n') 0)
- build [(~0) [[[^3 : (5 1)]]] {}(^0) ]
+ build [~0 [[[^3 : (5 1)]]] {}(^0) ]
:test (lines "ab\ncd") ("ab" : {}"cd")