1 ! Copyright (C) 2023 Doug Coleman.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: kernel namespaces ;
6 ERROR: variable-required variable ;
8 : required ( symbol -- str/f )
9 dup get [ nip ] [ variable-required ] if* ;
11 : 2required ( symbol1 symbol2 -- obj1 obj2 ) [ required ] bi@ ; inline
12 : 2get ( symbol1 symbol2 -- obj1 obj2 ) [ get ] bi@ ; inline
14 : xor* ( obj1 obj2 -- xor first? )
15 [ swap [ 2drop f f ] [ f ] if* ]
16 [ [ t ] [ f f ] if* ] if* ; inline
18 ERROR: one-variable-only symbol1 symbol2 value1 value2 ;
20 : one-of ( symbol1 symbol2 -- str/f first? )
21 2dup [ get ] bi@ 2dup xor* over
22 [ [ 4drop ] 2dip ] [ one-variable-only ] if ;