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