Set/String.bruijn


# 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]])