slots.macros: Refactor {word-names}.

modern-harvey2
Doug Coleman 2017-07-23 15:18:14 -05:00
parent bb756c8823
commit c9fd44502c
2 changed files with 4 additions and 4 deletions

View File

@ -58,7 +58,7 @@ TUPLE: foo a b c ;
{ { 2 1 3 } } [
T{ foo { a 1 } { b 2 } { c 3 } }
{ "b" "a" "c" } {slots}
{ "b" "a" "c" } slots>array
] unit-test
{ T{ foo { a "one" } { b "two" } { c "three" } } } [
@ -70,5 +70,5 @@ TUPLE: foo a b c ;
{ T{ foo { a "one" } { b "two" } { c "three" } } } [
{ "two" "one" "three" }
T{ foo { a 1 } { b 2 } { c 3 } } clone
[ { "b" "a" "c" } {set-slots} ] keep
[ { "b" "a" "c" } array>set-slots ] keep
] unit-test

View File

@ -44,12 +44,12 @@ MACRO: set-slot ( name -- quot: ( value tuple -- ) )
MACRO: slots ( names -- quot: ( tuple -- values... ) )
[ '[ _ slot ] ] { } map-as '[ _ cleave ] ;
MACRO: {slots} ( names -- quot: ( tuple -- {values} ) )
MACRO: slots>array ( names -- quot: ( tuple -- values ) )
dup length '[ _ slots _ narray ] ;
MACRO: set-slots ( names -- quot: ( values... tuple -- ) )
[ [ '[ _ set-slot ] ] [ ] map-as ] [ length dup ] bi
'[ @ _ cleave-curry _ spread* ] ;
MACRO: {set-slots} ( names -- quot: ( {values} tuple -- ) )
MACRO: array>set-slots ( names -- quot: ( values tuple -- ) )
[ length ] keep '[ [ _ firstn ] dip _ set-slots ] ;