]> gitweb.factorcode.org Git - factor.git/blob - extra/namespaces/extras/extras.factor
namespaces.extras: clean up
[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 -- obj )
9     [ get ] [ variable-required ] ?unless ;
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 -- obj1/obj2 first? )
21     2dup [ get ] bi@ 2dup xor* over
22     [ [ 4drop ] 2dip ] [ one-variable-only ] if ;