From fe1fe57f358472561041cde12a48d28b8bd247a9 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sun, 27 Oct 2024 18:45:21 +0100 Subject: Improvements in maps, sets, and parsing --- std/Set/Number.bruijn | 22 ++++++++++++++++++++++ std/Set/NumberSet.bruijn | 22 ---------------------- std/Set/String.bruijn | 23 +++++++++++++++++++++++ std/Set/StringSet.bruijn | 23 ----------------------- 4 files changed, 45 insertions(+), 45 deletions(-) create mode 100644 std/Set/Number.bruijn delete mode 100644 std/Set/NumberSet.bruijn create mode 100644 std/Set/String.bruijn delete mode 100644 std/Set/StringSet.bruijn (limited to 'std/Set') diff --git a/std/Set/Number.bruijn b/std/Set/Number.bruijn new file mode 100644 index 0000000..220e2dc --- /dev/null +++ b/std/Set/Number.bruijn @@ -0,0 +1,22 @@ +# MIT License, Copyright (c) 2024 Marvin Borner + +:input std/Set + +:import std/Number T + +# adds a number of a set +add T.add ⧗ Number → NumberSet → NumberSet + +# returns true if a number is in a set +has? T.has? ⧗ Number → NumberSet → Boolean + +:test (has? (+5) (add (+5) empty)) ([[1]]) +:test (has? (+5) empty) ([[0]]) + +# converts a list to a set +list→set T.list→set ⧗ (List Number) → NumberSet + +:test (has? (+0) (list→set ((+5) : ((+3) : ((+2) : ((+1) : {}(+0))))))) ([[1]]) +:test (has? (+5) (list→set ((+5) : ((+3) : ((+2) : ((+1) : {}(+0))))))) ([[1]]) +:test (has? (+6) (list→set ((+5) : ((+3) : ((+2) : ((+1) : {}(+0))))))) ([[0]]) +:test (has? (+7) (list→set ((+5) : ((+7) : {}(+1))))) ([[1]]) diff --git a/std/Set/NumberSet.bruijn b/std/Set/NumberSet.bruijn deleted file mode 100644 index 220e2dc..0000000 --- a/std/Set/NumberSet.bruijn +++ /dev/null @@ -1,22 +0,0 @@ -# MIT License, Copyright (c) 2024 Marvin Borner - -:input std/Set - -:import std/Number T - -# adds a number of a set -add T.add ⧗ Number → NumberSet → NumberSet - -# returns true if a number is in a set -has? T.has? ⧗ Number → NumberSet → Boolean - -:test (has? (+5) (add (+5) empty)) ([[1]]) -:test (has? (+5) empty) ([[0]]) - -# converts a list to a set -list→set T.list→set ⧗ (List Number) → NumberSet - -:test (has? (+0) (list→set ((+5) : ((+3) : ((+2) : ((+1) : {}(+0))))))) ([[1]]) -:test (has? (+5) (list→set ((+5) : ((+3) : ((+2) : ((+1) : {}(+0))))))) ([[1]]) -:test (has? (+6) (list→set ((+5) : ((+3) : ((+2) : ((+1) : {}(+0))))))) ([[0]]) -:test (has? (+7) (list→set ((+5) : ((+7) : {}(+1))))) ([[1]]) diff --git a/std/Set/String.bruijn b/std/Set/String.bruijn new file mode 100644 index 0000000..4bee345 --- /dev/null +++ b/std/Set/String.bruijn @@ -0,0 +1,23 @@ +# MIT License, Copyright (c) 2024 Marvin Borner +# TODO: hash instead of comparing + +:input std/Set + +:import std/String S + +# adds a number of a set +add S.add ⧗ String → StringSet → StringSet + +# returns true if a number is in a set +has? S.has? ⧗ String → StringSet → Boolean + +:test (has? "abc" (add "abc" empty)) ([[1]]) +:test (has? "abc" empty) ([[0]]) + +# converts a list to a set +list→set S.list→set ⧗ (List String) → StringSet + +:test (has? "0" (list→set ("a" : ("b" : ("d" : ("c" : {}"0")))))) ([[1]]) +:test (has? "a" (list→set ("a" : ("b" : ("d" : ("c" : {}"0")))))) ([[1]]) +:test (has? "e" (list→set ("a" : ("b" : ("d" : ("c" : {}"0")))))) ([[0]]) +:test (has? "c" (list→set ("a" : ("c" : {}"b")))) ([[1]]) diff --git a/std/Set/StringSet.bruijn b/std/Set/StringSet.bruijn deleted file mode 100644 index 4bee345..0000000 --- a/std/Set/StringSet.bruijn +++ /dev/null @@ -1,23 +0,0 @@ -# MIT License, Copyright (c) 2024 Marvin Borner -# TODO: hash instead of comparing - -:input std/Set - -:import std/String S - -# adds a number of a set -add S.add ⧗ String → StringSet → StringSet - -# returns true if a number is in a set -has? S.has? ⧗ String → StringSet → Boolean - -:test (has? "abc" (add "abc" empty)) ([[1]]) -:test (has? "abc" empty) ([[0]]) - -# converts a list to a set -list→set S.list→set ⧗ (List String) → StringSet - -:test (has? "0" (list→set ("a" : ("b" : ("d" : ("c" : {}"0")))))) ([[1]]) -:test (has? "a" (list→set ("a" : ("b" : ("d" : ("c" : {}"0")))))) ([[1]]) -:test (has? "e" (list→set ("a" : ("b" : ("d" : ("c" : {}"0")))))) ([[0]]) -:test (has? "c" (list→set ("a" : ("c" : {}"b")))) ([[1]]) -- cgit v1.2.3