diff --git a/core/bootstrap/image/image.factor b/core/bootstrap/image/image.factor index ba0e4800fb..f6f3e5c0da 100755 --- a/core/bootstrap/image/image.factor +++ b/core/bootstrap/image/image.factor @@ -157,7 +157,7 @@ GENERIC: ' ( obj -- ptr ) #! n is positive or zero. [ dup 0 > ] [ dup bignum-bits neg shift swap bignum-radix bitand ] - { } unfold ; + [ ] unfold nip ; : emit-bignum ( n -- ) dup 0 < [ 1 swap neg ] [ 0 swap ] if bignum>seq diff --git a/core/classes/classes.factor b/core/classes/classes.factor index a17866aa3b..d9f2c71f74 100644 --- a/core/classes/classes.factor +++ b/core/classes/classes.factor @@ -133,7 +133,7 @@ PRIVATE> >vector [ dup empty? not ] [ dup largest-class >r over delete-nth r> ] - { } unfold ; + [ ] unfold nip ; : class-or ( class1 class2 -- class ) { diff --git a/core/io/io.factor b/core/io/io.factor index d00a208e4e..cc0d2cc8e5 100644 --- a/core/io/io.factor +++ b/core/io/io.factor @@ -86,7 +86,7 @@ SYMBOL: stdio presented associate format ; : lines ( stream -- seq ) - [ [ readln dup ] [ ] { } unfold ] with-stream ; + [ [ readln dup ] [ ] [ drop ] unfold ] with-stream ; : contents ( stream -- str ) 2048 [ stream-copy ] keep >string ; diff --git a/core/sequences/sequences.factor b/core/sequences/sequences.factor index dedbbfc59d..2f6bb7ad57 100755 --- a/core/sequences/sequences.factor +++ b/core/sequences/sequences.factor @@ -414,12 +414,10 @@ PRIVATE> : interleave ( seq between quot -- ) [ (interleave) ] 2curry iterate-seq 2each ; inline -: unfold ( obj pred quot exemplar -- seq ) - [ - 10 swap new-resizable [ - [ push ] curry compose [ drop ] while - ] keep - ] keep like ; inline +: unfold ( pred quot tail -- seq ) + V{ } clone [ + swap >r [ push ] curry compose r> while + ] keep { } like ; inline : index ( obj seq -- n ) [ = ] curry* find drop ; diff --git a/core/tuples/tuples.factor b/core/tuples/tuples.factor index edd37abb65..4369a56d23 100644 --- a/core/tuples/tuples.factor +++ b/core/tuples/tuples.factor @@ -107,7 +107,7 @@ M: tuple equal? [ dup , delegate (delegates) ] when* ; : delegates ( obj -- seq ) - [ dup ] [ [ delegate ] keep ] { } unfold ; + [ dup ] [ [ delegate ] keep ] [ ] unfold nip ; : is? ( obj quot -- ? ) >r delegates r> contains? ; inline diff --git a/extra/concurrency/concurrency.factor b/extra/concurrency/concurrency.factor index b59f758ad8..e885877a37 100644 --- a/extra/concurrency/concurrency.factor +++ b/extra/concurrency/concurrency.factor @@ -60,7 +60,7 @@ PRIVATE> (mailbox-block-if-empty) [ dup mailbox-empty? ] [ dup mailbox-data dlist-pop-front ] - { } unfold ; + [ ] unfold nip ; : mailbox-get-all ( mailbox -- array ) f mailbox-get-all* ; diff --git a/extra/io/sockets/impl/impl.factor b/extra/io/sockets/impl/impl.factor index b03ec94a6b..426eda9c76 100644 --- a/extra/io/sockets/impl/impl.factor +++ b/extra/io/sockets/impl/impl.factor @@ -12,7 +12,10 @@ GENERIC: protocol-family ( addrspec -- af ) GENERIC: sockaddr-type ( addrspec -- type ) -GENERIC: make-sockaddr ( addrspec -- sockaddr type ) +GENERIC: make-sockaddr ( addrspec -- sockaddr ) + +: make-sockaddr/size ( addrspec -- sockaddr size ) + dup make-sockaddr swap sockaddr-type heap-size ; GENERIC: parse-sockaddr ( sockaddr addrspec -- newaddrspec ) @@ -36,16 +39,15 @@ M: inet4 address-size drop 4 ; M: inet4 protocol-family drop PF_INET ; -M: inet4 sockaddr-type drop "sockaddr-in" ; +M: inet4 sockaddr-type drop "sockaddr-in" c-type ; -M: inet4 make-sockaddr ( inet -- sockaddr type ) +M: inet4 make-sockaddr ( inet -- sockaddr ) "sockaddr-in" AF_INET over set-sockaddr-in-family over inet4-port htons over set-sockaddr-in-port over inet4-host "0.0.0.0" or - rot inet-pton *uint over set-sockaddr-in-addr - "sockaddr-in" ; + rot inet-pton *uint over set-sockaddr-in-addr ; M: inet4 parse-sockaddr >r dup sockaddr-in-addr r> inet-ntop @@ -65,15 +67,14 @@ M: inet6 address-size drop 16 ; M: inet6 protocol-family drop PF_INET6 ; -M: inet6 sockaddr-type drop "sockaddr-in6" ; +M: inet6 sockaddr-type drop "sockaddr-in6" c-type ; -M: inet6 make-sockaddr ( inet -- sockaddr type ) +M: inet6 make-sockaddr ( inet -- sockaddr ) "sockaddr-in6" AF_INET6 over set-sockaddr-in6-family over inet6-port htons over set-sockaddr-in6-port over inet6-host "::" or - rot inet-pton over set-sockaddr-in6-addr - "sockaddr-in6" ; + rot inet-pton over set-sockaddr-in6-addr ; M: inet6 parse-sockaddr >r dup sockaddr-in6-addr r> inet-ntop @@ -97,7 +98,7 @@ M: f parse-sockaddr nip ; : parse-addrinfo-list ( addrinfo -- seq ) [ dup ] [ dup addrinfo-next swap addrinfo>addrspec ] - { } unfold [ ] subset ; + [ ] unfold nip [ ] subset ; M: object resolve-host ( host serv passive? -- seq ) >r dup integer? [ number>string ] when diff --git a/extra/ui/gadgets/borders/borders.factor b/extra/ui/gadgets/borders/borders.factor index f0099e2f91..e58ba343c7 100644 --- a/extra/ui/gadgets/borders/borders.factor +++ b/extra/ui/gadgets/borders/borders.factor @@ -20,7 +20,8 @@ M: border pref-dim* : border-minor-rect ( major border -- rect ) gadget-child pref-dim - [ >r rect-bounds r> v- 2 v/n v+ ] keep ; + [ >r rect-bounds r> v- [ 2 / >fixnum ] map v+ ] keep + ; : scale-rect ( rect vec -- loc dim ) [ v* ] curry >r rect-bounds r> 2apply ; diff --git a/extra/ui/gadgets/gadgets.factor b/extra/ui/gadgets/gadgets.factor index 214c5b4921..dddab1aa8a 100644 --- a/extra/ui/gadgets/gadgets.factor +++ b/extra/ui/gadgets/gadgets.factor @@ -286,7 +286,7 @@ M: gadget ungraft* drop ; swap [ over (add-gadget) ] each relayout ; : parents ( gadget -- seq ) - [ dup ] [ [ gadget-parent ] keep ] { } unfold ; + [ dup ] [ [ gadget-parent ] keep ] [ ] unfold nip ; : each-parent ( gadget quot -- ? ) >r parents r> all? ; inline @@ -333,7 +333,7 @@ M: f request-focus-on 2drop ; dup focusable-child swap request-focus-on ; : focus-path ( world -- seq ) - [ dup ] [ [ gadget-focus ] keep ] { } unfold ; + [ dup ] [ [ gadget-focus ] keep ] [ ] unfold nip ; : make-gadget ( quot gadget -- gadget ) [ \ make-gadget rot with-variable ] keep ; inline