From 4a887d355fd8e0129c546ef5d56bae245eabb5e7 Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Sat, 30 Aug 2008 20:32:26 -0500
Subject: [PATCH 1/7] partial update of xmode for new accessors

---
 extra/xmode/catalog/catalog.factor           | 29 ++++----
 extra/xmode/loader/loader.factor             | 20 +++---
 extra/xmode/marker/marker.factor             | 69 ++++++++++----------
 extra/xmode/marker/state/state.factor        | 11 ++--
 extra/xmode/rules/rules.factor               | 18 ++---
 extra/xmode/utilities/utilities-tests.factor |  6 +-
 6 files changed, 77 insertions(+), 76 deletions(-)

diff --git a/extra/xmode/catalog/catalog.factor b/extra/xmode/catalog/catalog.factor
index 98276caf83..e85188e82d 100755
--- a/extra/xmode/catalog/catalog.factor
+++ b/extra/xmode/catalog/catalog.factor
@@ -1,6 +1,6 @@
 USING: xmode.loader xmode.utilities xmode.rules namespaces
 strings splitting assocs sequences kernel io.files xml memoize
-words globs combinators io.encodings.utf8 sorting ;
+words globs combinators io.encodings.utf8 sorting accessors ;
 IN: xmode.catalog
 
 TUPLE: mode file file-name-glob first-line-glob ;
@@ -10,9 +10,9 @@ TUPLE: mode file file-name-glob first-line-glob ;
 TAG: MODE
     "NAME" over at >r
     mode new {
-        { "FILE" f set-mode-file }
-        { "FILE_NAME_GLOB" f set-mode-file-name-glob }
-        { "FIRST_LINE_GLOB" f set-mode-first-line-glob }
+        { "FILE" f (>>file) }
+        { "FILE_NAME_GLOB" f (>>file-name-glob) }
+        { "FIRST_LINE_GLOB" f (>>first-line-glob) }
     } init-from-tag r>
     rot set-at ;
 
@@ -35,7 +35,7 @@ MEMO: mode-names ( -- modes )
 
 MEMO: (load-mode) ( name -- rule-sets )
     modes at [
-        mode-file
+        file>>
         "resource:extra/xmode/modes/" prepend
         utf8 <file-reader> parse-mode
     ] [
@@ -72,7 +72,7 @@ SYMBOL: rule-sets
     swap [ add-rule ] curry each-rule ;
 
 : resolve-imports ( ruleset -- )
-    dup rule-set-imports [
+    dup imports>> [
         get-rule-set swap rule-sets [
             dup resolve-delegates
             2dup import-keywords
@@ -80,16 +80,17 @@ SYMBOL: rule-sets
         ] with-variable
     ] with each ;
 
+ERROR: mutually-recursive-rulesets ruleset ;
 : finalize-rule-set ( ruleset -- )
-    dup rule-set-finalized? {
+    dup finalized?>> {
         { f [
-            1 over set-rule-set-finalized?
-            dup resolve-imports
-            dup resolve-delegates
-            t swap set-rule-set-finalized?
+            1 >>finalized?
+            [ resolve-imports ]
+            [ resolve-delegates ] bi
+            t >>finalized? drop
         ] }
         { t [ drop ] }
-        { 1 [ "Mutually recursive rule sets" throw ] }
+        { 1 [ mutually-recursive-rulesets ] }
     } case ;
 
 : finalize-mode ( rulesets -- )
@@ -107,8 +108,8 @@ SYMBOL: rule-sets
     dup [ glob-matches? ] [ 2drop f ] if ;
 
 : suitable-mode? ( file-name first-line mode -- ? )
-    tuck mode-first-line-glob ?glob-matches
-    [ 2drop t ] [ mode-file-name-glob ?glob-matches ] if ;
+    tuck first-line-glob>> ?glob-matches
+    [ 2drop t ] [ file-name-glob>> ?glob-matches ] if ;
 
 : find-mode ( file-name first-line -- mode )
     modes
diff --git a/extra/xmode/loader/loader.factor b/extra/xmode/loader/loader.factor
index 8039db0ac9..11e10cc5e4 100755
--- a/extra/xmode/loader/loader.factor
+++ b/extra/xmode/loader/loader.factor
@@ -1,7 +1,7 @@
 USING: xmode.loader.syntax xmode.tokens xmode.rules
 xmode.keyword-map xml.data xml.utilities xml assocs kernel
 combinators sequences math.parser namespaces parser
-xmode.utilities regexp io.files ;
+xmode.utilities regexp io.files accessors ;
 IN: xmode.loader
 
 ! Based on org.gjt.sp.jedit.XModeHandler
@@ -10,13 +10,13 @@ IN: xmode.loader
 <TAGS: parse-rule-tag ( rule-set tag -- )
 
 TAG: PROPS
-    parse-props-tag swap set-rule-set-props ;
+    parse-props-tag >>props drop ;
 
 TAG: IMPORT
     "DELEGATE" swap at swap import-rule-set ;
 
 TAG: TERMINATE
-    "AT_CHAR" swap at string>number swap set-rule-set-terminate-char ;
+    "AT_CHAR" swap at string>number >>terminate-char drop ;
 
 RULE: SEQ seq-rule
     shared-tag-attrs delegate-attr literal-start ;
@@ -55,18 +55,18 @@ TAGS>
 : (parse-rules-tag) ( tag -- rule-set )
     <rule-set>
     {
-        { "SET" string>rule-set-name set-rule-set-name }
-        { "IGNORE_CASE" string>boolean set-rule-set-ignore-case? }
-        { "HIGHLIGHT_DIGITS" string>boolean set-rule-set-highlight-digits? }
-        { "DIGIT_RE" ?<regexp> set-rule-set-digit-re }
+        { "SET" string>rule-set-name (>>name) }
+        { "IGNORE_CASE" string>boolean (>>ignore-case?) }
+        { "HIGHLIGHT_DIGITS" string>boolean (>>highlight-digits?) }
+        { "DIGIT_RE" ?<regexp> (>>digit-re) }
         { "ESCAPE" f add-escape-rule }
-        { "DEFAULT" string>token set-rule-set-default }
-        { "NO_WORD_SEP" f set-rule-set-no-word-sep }
+        { "DEFAULT" string>token (>>default) }
+        { "NO_WORD_SEP" f (>>no-word-sep) }
     } init-from-tag ;
 
 : parse-rules-tag ( tag -- rule-set )
     dup (parse-rules-tag) [
-        dup rule-set-ignore-case? ignore-case? [
+        dup ignore-case?>> ignore-case? [
             swap child-tags [ parse-rule-tag ] with each
         ] with-variable
     ] keep ;
diff --git a/extra/xmode/marker/marker.factor b/extra/xmode/marker/marker.factor
index 911397cc20..60543c0504 100755
--- a/extra/xmode/marker/marker.factor
+++ b/extra/xmode/marker/marker.factor
@@ -3,7 +3,7 @@ USING: kernel namespaces xmode.rules xmode.tokens
 xmode.marker.state xmode.marker.context xmode.utilities
 xmode.catalog sequences math assocs combinators combinators.lib
 strings regexp splitting parser-combinators ascii unicode.case
-combinators.short-circuit ;
+combinators.short-circuit accessors ;
 
 ! Based on org.gjt.sp.jedit.syntax.TokenMarker
 
@@ -12,11 +12,11 @@ combinators.short-circuit ;
 
 : keyword-number? ( keyword -- ? )
     {
-        [ current-rule-set rule-set-highlight-digits? ]
+        [ current-rule-set highlight-digits?>> ]
         [ dup [ digit? ] contains? ]
         [
             dup [ digit? ] all? [
-                current-rule-set rule-set-digit-re
+                current-rule-set digit-re>>
                 dup [ dupd matches? ] [ drop f ] if
             ] unless*
         ]
@@ -26,10 +26,10 @@ combinators.short-circuit ;
     keyword-number? DIGIT and ;
 
 : mark-keyword ( keyword -- id )
-    current-rule-set rule-set-keywords at ;
+    current-rule-set keywords>> at ;
 
 : add-remaining-token ( -- )
-    current-rule-set rule-set-default prev-token, ;
+    current-rule-set default>> prev-token, ;
 
 : mark-token ( -- )
     current-keyword
@@ -48,9 +48,9 @@ M: rule match-position drop position get ;
 : can-match-here? ( matcher rule -- ? )
     match-position {
         [ over ]
-        [ over matcher-at-line-start?     over zero?                implies ]
-        [ over matcher-at-whitespace-end? over whitespace-end get = implies ]
-        [ over matcher-at-word-start?     over last-offset get =    implies ]
+        [ over at-line-start?>>     over zero?                implies ]
+        [ over at-whitespace-end?>> over whitespace-end get = implies ]
+        [ over at-word-start?>>     over last-offset get =    implies ]
     } 0&& 2nip ;
 
 : rest-of-line ( -- str )
@@ -73,18 +73,18 @@ M: regexp text-matches?
 
 : rule-start-matches? ( rule -- match-count/f )
     dup rule-start tuck swap can-match-here? [
-        rest-of-line swap matcher-text text-matches?
+        rest-of-line swap text>> text-matches?
     ] [
         drop f
     ] if ;
 
 : rule-end-matches? ( rule -- match-count/f )
     dup mark-following-rule? [
-        dup rule-start swap can-match-here? 0 and
+        dup start>> swap can-match-here? 0 and
     ] [
-        dup rule-end tuck swap can-match-here? [
+        dup end>> tuck swap can-match-here? [
             rest-of-line
-            swap matcher-text context get line-context-end or
+            swap text>> context get end>> or
             text-matches?
         ] [
             drop f
@@ -94,10 +94,10 @@ M: regexp text-matches?
 DEFER: get-rules
 
 : get-always-rules ( vector/f ruleset -- vector/f )
-    f swap rule-set-rules at ?push-all ;
+    f swap rules>> at ?push-all ;
 
 : get-char-rules ( vector/f char ruleset -- vector/f )
-    >r ch>upper r> rule-set-rules at ?push-all ;
+    >r ch>upper r> rules>> at ?push-all ;
 
 : get-rules ( char ruleset -- seq )
     f -rot [ get-char-rules ] keep get-always-rules ;
@@ -108,9 +108,9 @@ GENERIC: handle-rule-end ( match-count rule -- )
 
 : find-escape-rule ( -- rule )
     context get dup
-    line-context-in-rule-set rule-set-escape-rule [ ] [
-        line-context-parent line-context-in-rule-set
-        dup [ rule-set-escape-rule ] when
+    in-rule-set>> escape-rule>> [ ] [
+        parent>> in-rule-set>>
+        dup [ escape-rule>> ] when
     ] ?if ;
 
 : check-escape-rule ( rule -- ? )
@@ -138,9 +138,9 @@ GENERIC: handle-rule-end ( match-count rule -- )
     ] when* ;
 
 : rule-match-token* ( rule -- id )
-    dup rule-match-token {
+    dup match-token>> {
         { f [ dup rule-body-token ] }
-        { t [ current-rule-set rule-set-default ] }
+        { t [ current-rule-set default>> ] }
         [ ]
     } case nip ;
 
@@ -156,8 +156,8 @@ M: seq-rule handle-rule-start
     ?end-rule
     mark-token
     add-remaining-token
-    tuck rule-body-token next-token,
-    rule-delegate [ push-context ] when* ;
+    tuck body-token>> next-token,
+    delegate>> [ push-context ] when* ;
 
 UNION: abstract-span-rule span-rule eol-span-rule ;
 
@@ -167,8 +167,8 @@ M: abstract-span-rule handle-rule-start
     add-remaining-token
     tuck rule-match-token* next-token,
     ! ... end subst ...
-    dup context get set-line-context-in-rule
-    rule-delegate push-context ;
+    dup context get (>>in-rule)
+    delegate>> push-context ;
 
 M: span-rule handle-rule-end
     2drop ;
@@ -197,15 +197,16 @@ M: mark-previous-rule handle-rule-start
     ] when ;
 
 : check-end-delegate ( -- ? )
-    context get line-context-parent [
-        line-context-in-rule [
+    context get parent>> [
+        in-rule>> [
             dup rule-end-matches? dup [
                 [
                     swap handle-rule-end
                     ?end-rule
                     mark-token
                     add-remaining-token
-                ] keep context get line-context-parent line-context-in-rule rule-match-token* next-token,
+                ] keep context get parent>> in-rule>>
+                rule-match-token* next-token,
                 pop-context
                 seen-whitespace-end? on t
             ] [ drop check-escape-rule ] if
@@ -213,8 +214,8 @@ M: mark-previous-rule handle-rule-start
     ] [ f ] if* ;
 
 : handle-no-word-break ( -- )
-    context get line-context-parent [
-        line-context-in-rule [
+    context get parent>> [
+        in-rule>> [
             dup rule-no-word-break? [
                 rule-match-token* prev-token,
                 pop-context
@@ -231,11 +232,11 @@ M: mark-previous-rule handle-rule-start
 : (check-word-break) ( -- )
     check-rule
     
-    1 current-rule-set rule-set-default next-token, ;
+    1 current-rule-set default>> next-token, ;
 
 : rule-set-empty? ( ruleset -- ? )
-    dup rule-set-rules assoc-empty?
-    swap rule-set-keywords assoc-empty? and ;
+    [ rules>> ] [ keywords>> ] bi
+    [ assoc-empty? ] bi@ and ;
 
 : check-word-break ( -- ? )
     current-char dup blank? [
@@ -285,9 +286,9 @@ M: mark-previous-rule handle-rule-start
     check-rule ;
 
 : unwind-no-line-break ( -- )
-    context get line-context-parent [
-        line-context-in-rule [
-            rule-no-line-break? [
+    context get parent>> [
+        in-rule>> [
+            no-line-break?>> [
                 pop-context
                 unwind-no-line-break
             ] when
diff --git a/extra/xmode/marker/state/state.factor b/extra/xmode/marker/state/state.factor
index 2cf12f301d..4faa3a4f59 100755
--- a/extra/xmode/marker/state/state.factor
+++ b/extra/xmode/marker/state/state.factor
@@ -1,4 +1,4 @@
-USING: xmode.marker.context xmode.rules symbols
+USING: xmode.marker.context xmode.rules symbols accessors
 xmode.tokens namespaces kernel sequences assocs math ;
 IN: xmode.marker.state
 
@@ -9,10 +9,10 @@ SYMBOLS: line last-offset position context
  escaped?  process-escape?  delegate-end-escaped? ;
 
 : current-rule ( -- rule )
-    context get line-context-in-rule ;
+    context get in-rule>> ;
 
 : current-rule-set ( -- rule )
-    context get line-context-in-rule-set ;
+    context get in-rule-set>> ;
 
 : current-keywords ( -- keyword-map )
     current-rule-set rule-set-keywords ;
@@ -32,9 +32,8 @@ SYMBOLS: line last-offset position context
     context [ <line-context> ] change ;
 
 : pop-context ( -- )
-    context get line-context-parent
-    dup context set
-    f swap set-line-context-in-rule ;
+    context get parent>>
+    f >>in-rule context set ;
 
 : init-token-marker ( main prev-context line -- )
     line set
diff --git a/extra/xmode/rules/rules.factor b/extra/xmode/rules/rules.factor
index 50d2924b61..1a2a99c956 100755
--- a/extra/xmode/rules/rules.factor
+++ b/extra/xmode/rules/rules.factor
@@ -30,10 +30,10 @@ finalized?
         V{ } clone >>imports ;
 
 MEMO: standard-rule-set ( id -- ruleset )
-    <rule-set> [ set-rule-set-default ] keep ;
+    <rule-set> swap >>default ;
 
 : import-rule-set ( import ruleset -- )
-    rule-set-imports push ;
+    imports>> push ;
 
 : inverted-index ( hashes key index -- )
     [ swapd push-at ] 2curry each ;
@@ -44,8 +44,9 @@ MEMO: standard-rule-set ( id -- ruleset )
     ] when* ;
 
 : rule-set-no-word-sep* ( ruleset -- str )
-    dup rule-set-no-word-sep
-    swap rule-set-keywords dup [ keyword-map-no-word-sep* ] when
+    [ no-word-sep>> ]
+    [ keywords>> ] bi
+    dup [ keyword-map-no-word-sep* ] when
     "_" 3append ;
 
 ! Match restrictions
@@ -101,18 +102,17 @@ M: string-matcher text-hash-char string-matcher-string first ;
 M: regexp text-hash-char drop f ;
 
 : rule-chars* ( rule -- string )
-    dup rule-chars
-    swap rule-start matcher-text
+    [ chars>> ] [ start>> ] bi text>>
     text-hash-char [ suffix ] when* ;
 
 : add-rule ( rule ruleset -- )
     >r dup rule-chars* >upper swap
-    r> rule-set-rules inverted-index ;
+    r> rules>> inverted-index ;
 
 : add-escape-rule ( string ruleset -- )
     over [
-        >r <escape-rule> r>
-        2dup set-rule-set-escape-rule
+        [ <escape-rule> ] dip
+        2dup (>>escape-rule)
         add-rule
     ] [
         2drop
diff --git a/extra/xmode/utilities/utilities-tests.factor b/extra/xmode/utilities/utilities-tests.factor
index 49a1265b09..e4946701dd 100755
--- a/extra/xmode/utilities/utilities-tests.factor
+++ b/extra/xmode/utilities/utilities-tests.factor
@@ -14,7 +14,7 @@ TUPLE: company employees type ;
 
 : <company> V{ } clone f company boa ;
 
-: add-employee company-employees push ;
+: add-employee employees>> push ;
 
 <TAGS: parse-employee-tag
 
@@ -22,7 +22,7 @@ TUPLE: employee name description ;
 
 TAG: employee
     employee new
-    { { "name" f set-employee-name } { f set-employee-description } }
+    { { "name" f (>>name) } { f (>>description) } }
     init-from-tag swap add-employee ;
 
 TAGS>
@@ -32,7 +32,7 @@ TAGS>
 : parse-company-tag
     [
         <company>
-        { { "type" >upper set-company-type } }
+        { { "type" >upper (>>type) } }
         init-from-tag dup
     ] keep
     children>> [ tag? ] filter

From 6fe6475cce47b99f47192fc75e4673869c47077c Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Sat, 30 Aug 2008 20:37:55 -0500
Subject: [PATCH 2/7] fix bug

---
 extra/xmode/catalog/catalog.factor | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/extra/xmode/catalog/catalog.factor b/extra/xmode/catalog/catalog.factor
index e85188e82d..092eced330 100755
--- a/extra/xmode/catalog/catalog.factor
+++ b/extra/xmode/catalog/catalog.factor
@@ -84,10 +84,12 @@ ERROR: mutually-recursive-rulesets ruleset ;
 : finalize-rule-set ( ruleset -- )
     dup finalized?>> {
         { f [
-            1 >>finalized?
-            [ resolve-imports ]
-            [ resolve-delegates ] bi
-            t >>finalized? drop
+            {
+                [ 1 >>finalized? drop ]
+                [ resolve-imports ]
+                [ resolve-delegates ]
+                [ t >>finalized? drop ]
+            } cleave
         ] }
         { t [ drop ] }
         { 1 [ mutually-recursive-rulesets ] }

From 6bd16d7f9fa7fd42b17a17824e7ac0118a6098d3 Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Sat, 30 Aug 2008 20:38:07 -0500
Subject: [PATCH 3/7] new accessors

---
 extra/asn1/asn1.factor                       | 28 ++++++++++----------
 extra/benchmark/fib4/fib4.factor             | 10 +++----
 extra/benchmark/typecheck1/typecheck1.factor |  4 +--
 extra/regexp/regexp.factor                   |  4 +--
 4 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/extra/asn1/asn1.factor b/extra/asn1/asn1.factor
index 7b46aa87de..3509deb2fb 100644
--- a/extra/asn1/asn1.factor
+++ b/extra/asn1/asn1.factor
@@ -3,7 +3,7 @@
 
 USING: arrays asn1.ldap assocs byte-arrays combinators
 continuations io io.binary io.streams.string kernel math
-math.parser namespaces pack strings sequences ;
+math.parser namespaces pack strings sequences accessors ;
 
 IN: asn1
 
@@ -48,16 +48,12 @@ SYMBOL: elements
 
 TUPLE: element syntax id tag tagclass encoding contentlength newobj objtype ;
 
-: <element> ( -- element ) element new ;
-
-: set-id ( -- boolean )
-    read1 dup elements get set-element-id ;
 
 : get-id ( -- id )
-    elements get element-id ;
+    elements get id>> ;
 
 : (set-tag) ( -- )
-    elements get element-id 31 bitand
+    elements get id>> 31 bitand
     dup elements get set-element-tag
     31 < [
         [ "unsupported tag encoding: #{" % 
@@ -81,14 +77,14 @@ TUPLE: element syntax id tag tagclass encoding contentlength newobj objtype ;
     ] unless elements get set-element-contentlength ;
 
 : set-newobj ( -- )
-    elements get element-contentlength read
+    elements get contentlength>> read
     elements get set-element-newobj ;
 
 : set-objtype ( syntax -- )
     builtin-syntax 2array [
-        elements get element-tagclass swap at
-        elements get element-encoding swap at
-        elements get element-tag
+        elements get tagclass>> swap at
+        elements get encoding>> swap at
+        elements get tag>>
         swap at [ 
             elements get set-element-objtype
         ] when*
@@ -99,7 +95,7 @@ DEFER: read-ber
 SYMBOL: end
 
 : (read-array) ( -- )
-    elements get element-id [
+    elements get id>> [
         elements get element-syntax read-ber
         dup end = [ drop ] [ , (read-array) ] if
     ] when ;
@@ -115,9 +111,13 @@ SYMBOL: end
         { "array" [ "" or [ read-array ] with-string-reader ] }
     } case ;
 
+: set-id ( -- boolean )
+    read1 dup elements get set-element-id ;
+
 : read-ber ( syntax -- object )
-    <element> elements set
-    elements get set-element-syntax
+    element new
+        swap >>syntax
+    elements set
     set-id [
         (set-tag)
         set-tagclass
diff --git a/extra/benchmark/fib4/fib4.factor b/extra/benchmark/fib4/fib4.factor
index 7cf756e11f..580be0d0ec 100644
--- a/extra/benchmark/fib4/fib4.factor
+++ b/extra/benchmark/fib4/fib4.factor
@@ -1,4 +1,4 @@
-USING: math kernel debugger ;
+USING: accessors math kernel debugger ;
 IN: benchmark.fib4
 
 TUPLE: box i ;
@@ -6,15 +6,15 @@ TUPLE: box i ;
 C: <box> box
 
 : tuple-fib ( m -- n )
-    dup box-i 1 <= [
+    dup i>> 1 <= [
         drop 1 <box>
     ] [
-        box-i 1- <box>
+        i>> 1- <box>
         dup tuple-fib
         swap
-        box-i 1- <box>
+        i>> 1- <box>
         tuple-fib
-        swap box-i swap box-i + <box>
+        swap i>> swap i>> + <box>
     ] if ;
 
 : fib-main ( -- ) T{ box f 34 } tuple-fib T{ box f 9227465 } assert= ;
diff --git a/extra/benchmark/typecheck1/typecheck1.factor b/extra/benchmark/typecheck1/typecheck1.factor
index 434094a2a3..5ffe96292b 100644
--- a/extra/benchmark/typecheck1/typecheck1.factor
+++ b/extra/benchmark/typecheck1/typecheck1.factor
@@ -1,9 +1,9 @@
-USING: math kernel ;
+USING: math kernel accessors ;
 IN: benchmark.typecheck1
 
 TUPLE: hello n ;
 
-: foo ( obj -- obj n ) 0 100000000 [ over hello-n + ] times ;
+: foo ( obj -- obj n ) 0 100000000 [ over n>> + ] times ;
 
 : typecheck-main ( -- ) 0 hello boa foo 2drop ;
 
diff --git a/extra/regexp/regexp.factor b/extra/regexp/regexp.factor
index c329977875..1bd81d46ea 100755
--- a/extra/regexp/regexp.factor
+++ b/extra/regexp/regexp.factor
@@ -2,7 +2,7 @@ USING: arrays combinators kernel lists math math.parser
 namespaces parser lexer parser-combinators parser-combinators.simple
 promises quotations sequences combinators.lib strings math.order
 assocs prettyprint.backend memoize unicode.case unicode.categories
-combinators.short-circuit ;
+combinators.short-circuit accessors ;
 USE: io
 IN: regexp
 
@@ -277,7 +277,7 @@ TUPLE: regexp source parser ignore-case? ;
 
 : match-head ( string regexp -- end )
     do-ignore-case regexp-parser parse dup nil?
-    [ drop f ] [ car parse-result-unparsed slice-from ] if ;
+    [ drop f ] [ car parse-result-unparsed from>> ] if ;
 
 ! Literal syntax for regexps
 : parse-options ( string -- ? )

From 91d3f64ab2571b98e079b151e80d1e20341f9244 Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Sat, 30 Aug 2008 20:38:18 -0500
Subject: [PATCH 4/7] new accessors

---
 basis/channels/channels.factor | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/basis/channels/channels.factor b/basis/channels/channels.factor
index ea54766ad4..9b5cbee04b 100755
--- a/basis/channels/channels.factor
+++ b/basis/channels/channels.factor
@@ -3,7 +3,7 @@
 !
 ! Channels - based on ideas from newsqueak
 USING: kernel sequences sequences.lib threads continuations
-random math ;
+random math accessors ;
 IN: channels
 
 TUPLE: channel receivers senders ;
@@ -17,14 +17,14 @@ GENERIC: from ( channel -- value )
 <PRIVATE
 
 : wait ( channel -- )
-    [ channel-senders push ] curry
+    [ senders>> push ] curry
     "channel send" suspend drop ;
 
 : (to) ( value receivers -- )
     delete-random resume-with yield ;
 
 : notify ( continuation channel -- channel )
-    [ channel-receivers push ] keep ;
+    [ receivers>> push ] keep ;
 
 : (from) ( senders -- )
     delete-random resume ;
@@ -32,11 +32,11 @@ GENERIC: from ( channel -- value )
 PRIVATE>
 
 M: channel to ( value channel -- )
-    dup channel-receivers
+    dup receivers>>
     dup empty? [ drop dup wait to ] [ nip (to) ] if ;
 
 M: channel from ( channel -- value )
     [
-        notify channel-senders
+        notify senders>>
         dup empty? [ drop ] [ (from) ] if
     ] curry "channel receive" suspend ;

From 6ed00241b694de45c1dd469b5585cf17ec8a8037 Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Sat, 30 Aug 2008 20:53:59 -0500
Subject: [PATCH 5/7] more accessors

---
 extra/xmode/catalog/catalog.factor      |  6 +++---
 extra/xmode/loader/loader.factor        |  4 ++--
 extra/xmode/loader/syntax/syntax.factor | 24 ++++++++++++------------
 3 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/extra/xmode/catalog/catalog.factor b/extra/xmode/catalog/catalog.factor
index 092eced330..605d6742c8 100755
--- a/extra/xmode/catalog/catalog.factor
+++ b/extra/xmode/catalog/catalog.factor
@@ -52,11 +52,11 @@ SYMBOL: rule-sets
     dup -roll at* [ nip ] [ drop no-such-rule-set ] if ;
 
 : resolve-delegate ( rule -- )
-    dup rule-delegate dup string?
-    [ get-rule-set nip swap set-rule-delegate ] [ 2drop ] if ;
+    dup delegate>> dup string?
+    [ get-rule-set nip swap (>>delegate) ] [ 2drop ] if ;
 
 : each-rule ( rule-set quot -- )
-    >r rule-set-rules values concat r> each ; inline
+    >r rules>> values concat r> each ; inline
 
 : resolve-delegates ( ruleset -- )
     [ resolve-delegate ] each-rule ;
diff --git a/extra/xmode/loader/loader.factor b/extra/xmode/loader/loader.factor
index 11e10cc5e4..442693025e 100755
--- a/extra/xmode/loader/loader.factor
+++ b/extra/xmode/loader/loader.factor
@@ -45,7 +45,7 @@ RULE: MARK_PREVIOUS mark-previous-rule
 TAG: KEYWORDS ( rule-set tag -- key value )
     ignore-case? get <keyword-map>
     swap child-tags [ over parse-keyword-tag ] each
-    swap set-rule-set-keywords ;
+    swap (>>keywords) ;
 
 TAGS>
 
@@ -72,7 +72,7 @@ TAGS>
     ] keep ;
 
 : merge-rule-set-props ( props rule-set -- )
-    [ rule-set-props assoc-union ] keep set-rule-set-props ;
+    [ assoc-union ] change-props drop ;
 
 ! Top-level entry points
 : parse-mode-tag ( tag -- rule-sets )
diff --git a/extra/xmode/loader/syntax/syntax.factor b/extra/xmode/loader/syntax/syntax.factor
index 8b66774d7f..5512b68b04 100644
--- a/extra/xmode/loader/syntax/syntax.factor
+++ b/extra/xmode/loader/syntax/syntax.factor
@@ -49,41 +49,41 @@ SYMBOL: ignore-case?
     swap position-attrs <matcher> ;
 
 : shared-tag-attrs ( -- )
-    { "TYPE" string>token set-rule-body-token } , ; inline
+    { "TYPE" string>token (>>body-token) } , ; inline
 
 : delegate-attr ( -- )
-    { "DELEGATE" f set-rule-delegate } , ;
+    { "DELEGATE" f (>>delegate) } , ;
 
 : regexp-attr ( -- )
-    { "HASH_CHAR" f set-rule-chars } , ;
+    { "HASH_CHAR" f (>>chars) } , ;
 
 : match-type-attr ( -- )
-    { "MATCH_TYPE" string>match-type set-rule-match-token } , ;
+    { "MATCH_TYPE" string>match-type (>>match-token) } , ;
 
 : span-attrs ( -- )
-    { "NO_LINE_BREAK" string>boolean set-rule-no-line-break? } ,
-    { "NO_WORD_BREAK" string>boolean set-rule-no-word-break? } ,
-    { "NO_ESCAPE" string>boolean set-rule-no-escape? } , ;
+    { "NO_LINE_BREAK" string>boolean (>>no-line-break?) } ,
+    { "NO_WORD_BREAK" string>boolean (>>no-word-break?) } ,
+    { "NO_ESCAPE" string>boolean (>>no-escape?) } , ;
 
 : literal-start ( -- )
-    [ parse-literal-matcher swap set-rule-start ] , ;
+    [ parse-literal-matcher >>start drop ] , ;
 
 : regexp-start ( -- )
-    [ parse-regexp-matcher swap set-rule-start ] , ;
+    [ parse-regexp-matcher >>start drop ] , ;
 
 : literal-end ( -- )
-    [ parse-literal-matcher swap set-rule-end ] , ;
+    [ parse-literal-matcher >>end drop ] , ;
 
 ! SPAN's children
 <TAGS: parse-begin/end-tag ( rule tag -- )
 
 TAG: BEGIN
     ! XXX
-    parse-literal-matcher swap set-rule-start ;
+    parse-literal-matcher >>start drop ;
 
 TAG: END
     ! XXX
-    parse-literal-matcher swap set-rule-end ;
+    parse-literal-matcher >>end drop ;
 
 TAGS>
 

From 9695df7fbd8f7bd41653fc450279b1bbb6d64f9d Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Sat, 30 Aug 2008 21:01:54 -0500
Subject: [PATCH 6/7] fix loader bug i introduced

---
 core/vocabs/loader/loader.factor | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/core/vocabs/loader/loader.factor b/core/vocabs/loader/loader.factor
index 8609cb5b5f..522e7d74c3 100755
--- a/core/vocabs/loader/loader.factor
+++ b/core/vocabs/loader/loader.factor
@@ -52,17 +52,17 @@ H{ } clone root-cache set-global
 SYMBOL: load-help?
 
 : load-source ( vocab -- vocab )
-    f >>source-loaded?
+    f over set-vocab-source-loaded?
     [ vocab-source-path [ parse-file ] [ [ ] ] if* ] keep
-    t >>source-loaded?
+    t over set-vocab-source-loaded?
     [ [ % ] [ call ] if-bootstrapping ] dip ;
 
 
 : load-docs ( vocab -- vocab )
     load-help? get [
-        f >>docs-loaded?
+        f over set-vocab-docs-loaded?
         [ vocab-docs-path [ ?run-file ] when* ] keep
-        t >>docs-loaded?
+        t over set-vocab-docs-loaded?
     ] when ;
 
 : reload ( name -- )

From 34b2db96ef5a674b07cba80084ea874e48fec526 Mon Sep 17 00:00:00 2001
From: Doug Coleman <doug.coleman@gmail.com>
Date: Sat, 30 Aug 2008 21:10:02 -0500
Subject: [PATCH 7/7] new accessors ftw

---
 extra/xmode/catalog/catalog.factor    | 4 ++--
 extra/xmode/loader/loader.factor      | 2 +-
 extra/xmode/marker/marker.factor      | 8 ++++----
 extra/xmode/marker/state/state.factor | 2 +-
 extra/xmode/rules/rules.factor        | 8 ++++----
 5 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/extra/xmode/catalog/catalog.factor b/extra/xmode/catalog/catalog.factor
index 605d6742c8..26147c7867 100755
--- a/extra/xmode/catalog/catalog.factor
+++ b/extra/xmode/catalog/catalog.factor
@@ -65,8 +65,8 @@ SYMBOL: rule-sets
     over [ dupd update ] [ nip clone ] if ;
 
 : import-keywords ( parent child -- )
-    over >r [ rule-set-keywords ] bi@ ?update
-    r> set-rule-set-keywords ;
+    over >r [ keywords>> ] bi@ ?update
+    r> (>>keywords) ;
 
 : import-rules ( parent child -- )
     swap [ add-rule ] curry each-rule ;
diff --git a/extra/xmode/loader/loader.factor b/extra/xmode/loader/loader.factor
index 442693025e..28c0de406a 100755
--- a/extra/xmode/loader/loader.factor
+++ b/extra/xmode/loader/loader.factor
@@ -77,7 +77,7 @@ TAGS>
 ! Top-level entry points
 : parse-mode-tag ( tag -- rule-sets )
     dup "RULES" tags-named [
-        parse-rules-tag dup rule-set-name swap
+        parse-rules-tag dup name>> swap
     ] H{ } map>assoc
     swap "PROPS" tag-named [
         parse-props-tag over values
diff --git a/extra/xmode/marker/marker.factor b/extra/xmode/marker/marker.factor
index 60543c0504..707449a23f 100755
--- a/extra/xmode/marker/marker.factor
+++ b/extra/xmode/marker/marker.factor
@@ -72,7 +72,7 @@ M: regexp text-matches?
     >r >string r> match-head ;
 
 : rule-start-matches? ( rule -- match-count/f )
-    dup rule-start tuck swap can-match-here? [
+    dup start>> tuck swap can-match-here? [
         rest-of-line swap text>> text-matches?
     ] [
         drop f
@@ -114,7 +114,7 @@ GENERIC: handle-rule-end ( match-count rule -- )
     ] ?if ;
 
 : check-escape-rule ( rule -- ? )
-    rule-no-escape? [ f ] [
+    no-escape?>> [ f ] [
         find-escape-rule dup [
             dup rule-start-matches? dup [
                 swap handle-rule-start
@@ -139,7 +139,7 @@ GENERIC: handle-rule-end ( match-count rule -- )
 
 : rule-match-token* ( rule -- id )
     dup match-token>> {
-        { f [ dup rule-body-token ] }
+        { f [ dup body-token>> ] }
         { t [ current-rule-set default>> ] }
         [ ]
     } case nip ;
@@ -216,7 +216,7 @@ M: mark-previous-rule handle-rule-start
 : handle-no-word-break ( -- )
     context get parent>> [
         in-rule>> [
-            dup rule-no-word-break? [
+            dup no-word-break?>> [
                 rule-match-token* prev-token,
                 pop-context
             ] [ drop ] if
diff --git a/extra/xmode/marker/state/state.factor b/extra/xmode/marker/state/state.factor
index 4faa3a4f59..9075ff6329 100755
--- a/extra/xmode/marker/state/state.factor
+++ b/extra/xmode/marker/state/state.factor
@@ -15,7 +15,7 @@ SYMBOLS: line last-offset position context
     context get in-rule-set>> ;
 
 : current-keywords ( -- keyword-map )
-    current-rule-set rule-set-keywords ;
+    current-rule-set keywords>> ;
 
 : token, ( from to id -- )
     2over = [ 3drop ] [ >r line get subseq r> <token> , ] if ;
diff --git a/extra/xmode/rules/rules.factor b/extra/xmode/rules/rules.factor
index 1a2a99c956..4ab45d7539 100755
--- a/extra/xmode/rules/rules.factor
+++ b/extra/xmode/rules/rules.factor
@@ -74,14 +74,14 @@ TUPLE: span-rule < rule ;
 TUPLE: eol-span-rule < rule ;
 
 : init-span ( rule -- )
-    dup rule-delegate [ drop ] [
-        dup rule-body-token standard-rule-set
-        swap set-rule-delegate
+    dup delegate>> [ drop ] [
+        dup body-token>> standard-rule-set
+        swap (>>delegate)
     ] if ;
 
 : init-eol-span ( rule -- )
     dup init-span
-    t swap set-rule-no-line-break? ;
+    t >>no-line-break? drop ;
 
 TUPLE: mark-following-rule < rule ;