-USING: accessors alien.libraries kernel sequences system vocabs
-;
+USING: accessors alien.libraries kernel sequences system vocabs ;
IN: alien.libraries.finder
HOOK: find-library* os ( name -- path/f )
: find-library ( name -- path/library-not-found )
- dup find-library* [ nip ] when* ;
+ [ find-library* ] transmute ;
: ?update-library ( name path abi -- )
pick lookup-library [ dll>> dll-valid? ] [ f ] if* [
proc-first-line
split-words harvest
pid-stat "slots" word-prop length "0" pad-tail
- [ dup string>number [ nip ] when* ] map
+ [ [ string>number ] transmute ] map
[ pid-stat boa ] input<sequence ;
: ?call ( ..a obj/f quot: ( ..a obj -- ..a obj' ) -- ..a obj'/f ) dupd when ; inline
-: transmute ( old quot: ( old -- new/f ) -- new/old new? )
+: ?transmute ( old quot: ( old -- new/f ) -- new/old new? )
keep over [ drop t ] [ nip f ] if ; inline
+: transmute ( old quot: ( old -- new/f ) -- new/old )
+ ?transmute drop ; inline
+
! Default
: ?when ( ..a default cond: ( ..a default -- ..a new/f ) true: ( ..a new -- ..b ) -- ..b )
- [ transmute ] dip when ; inline
+ [ ?transmute ] dip when ; inline
: ?unless ( ..a default cond: ( ..a default -- ..a new/f ) false: ( ..a default -- ..b ) -- ..b )
- [ transmute ] dip unless ; inline
+ [ ?transmute ] dip unless ; inline
: ?if ( ..a default cond: ( default -- new/f ) true: ( ..a new -- ..b ) false: ( ..a default -- ..b ) -- ..b )
- [ transmute ] 2dip if ; inline
+ [ ?transmute ] 2dip if ; inline
! Cleavers
: bi ( x p q -- )
:: (query) ( params -- obj assoc )
{ { "action" "query" } } params assoc-union api-call dup
- dup "query" of [ nip ] when*
+ [ "query" of ] transmute
"siprop" params key? [
params { "prop" "list" "meta" } values-of sift first of
] unless swap ;