From 192a164ef497d90fb96fa09f171d53bb0bc3febc Mon Sep 17 00:00:00 2001
From: Slava Pestov <slava@slava-pestovs-macbook-pro.local>
Date: Tue, 2 Dec 2008 00:24:00 -0600
Subject: [PATCH] Fix some bugs

---
 basis/alien/c-types/c-types.factor | 6 +++---
 basis/alien/strings/strings.factor | 6 +++---
 basis/alien/structs/structs.factor | 9 +++++----
 basis/alien/syntax/syntax.factor   | 7 ++-----
 4 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/basis/alien/c-types/c-types.factor b/basis/alien/c-types/c-types.factor
index 5fe139a56f..c3ae644b47 100644
--- a/basis/alien/c-types/c-types.factor
+++ b/basis/alien/c-types/c-types.factor
@@ -4,7 +4,7 @@ USING: byte-arrays arrays assocs kernel kernel.private libc math
 namespaces make parser sequences strings words assocs splitting
 math.parser cpu.architecture alien alien.accessors quotations
 layouts system compiler.units io.files io.encodings.binary
-accessors combinators effects continuations ;
+accessors combinators effects continuations fry ;
 IN: alien.c-types
 
 DEFER: <int>
@@ -240,8 +240,8 @@ M: long-long-type box-return ( type -- )
 
 : define-out ( name -- )
     [ "alien.c-types" constructor-word ]
-    [ [ [ <c-object> ] curry ] [ c-setter ] bi append ] bi
-    define-inline ;
+    [ dup c-setter '[ _ <c-object> [ 0 @ ] keep ] ]
+    bi define-inline ;
 
 : c-bool> ( int -- ? )
     zero? not ;
diff --git a/basis/alien/strings/strings.factor b/basis/alien/strings/strings.factor
index 54a6cbfb4a..d482634772 100644
--- a/basis/alien/strings/strings.factor
+++ b/basis/alien/strings/strings.factor
@@ -3,7 +3,7 @@
 USING: arrays sequences kernel accessors math alien.accessors
 alien.c-types byte-arrays words io io.encodings
 io.streams.byte-array io.streams.memory io.encodings.utf8
-io.encodings.utf16 system alien strings cpu.architecture ;
+io.encodings.utf16 system alien strings cpu.architecture fry ;
 IN: alien.strings
 
 GENERIC# alien>string 1 ( c-ptr encoding -- string/f )
@@ -77,10 +77,10 @@ M: string-type c-type-unboxer
     drop "void*" c-type-unboxer ;
 
 M: string-type c-type-boxer-quot
-    second [ alien>string ] curry [ ] like ;
+    second '[ _ alien>string ] ;
 
 M: string-type c-type-unboxer-quot
-    second [ string>alien ] curry [ ] like ;
+    second '[ _ string>alien ] ;
 
 M: string-type c-type-getter
     drop [ alien-cell ] ;
diff --git a/basis/alien/structs/structs.factor b/basis/alien/structs/structs.factor
index 9bbb5ce2aa..a3c616cda2 100644
--- a/basis/alien/structs/structs.factor
+++ b/basis/alien/structs/structs.factor
@@ -43,20 +43,21 @@ M: struct-type stack-size
     struct-type boa
     swap typedef ;
 
-: define-struct-early ( name vocab fields -- fields )
+: make-fields ( name vocab fields -- fields )
     [ first2 <field-spec> ] with with map ;
 
 : compute-struct-align ( types -- n )
     [ c-type-align ] map supremum ;
 
 : define-struct ( name vocab fields -- )
-    pick [
+    [
+        [ 2drop ] [ make-fields ] 3bi
         [ struct-offsets ] keep
         [ [ type>> ] map compute-struct-align ] keep
         [ (define-struct) ] keep
-    ] dip [ swap define-field ] curry each ;
+    ] [ 2drop '[ _ swap define-field ] ] 3bi each ;
 
-: define-union ( name vocab members -- )
+: define-union ( name members -- )
     [ expand-constants ] map
     [ [ heap-size ] map supremum ] keep
     compute-struct-align f (define-struct) ;
diff --git a/basis/alien/syntax/syntax.factor b/basis/alien/syntax/syntax.factor
index a204b1621c..d10c97cd3d 100644
--- a/basis/alien/syntax/syntax.factor
+++ b/basis/alien/syntax/syntax.factor
@@ -24,13 +24,10 @@ IN: alien.syntax
     scan scan typedef ; parsing
 
 : C-STRUCT:
-    scan in get
-    parse-definition
-    [ 2dup ] dip define-struct-early
-    define-struct ; parsing
+    scan in get parse-definition define-struct ; parsing
 
 : C-UNION:
-    scan in get parse-definition define-union ; parsing
+    scan parse-definition define-union ; parsing
 
 : C-ENUM:
     ";" parse-tokens