Memoize

BasicWerk   EC Support   Technique   Facebook  

20140611161945_factor_SYMBOLS

factor_SYMBOLS

 

昨日書いた、

http://basicwerk.com/memoize/20140610123934_factor_regexp.html

最初にマッチした箇所だけを置換するワード。

 

rot が繰り返し出てきて何だかよくわからないので、後から修正するのが大変だ。

 

SYMBOL を使って書き直してみた。

一つ目の re-replace-first% が旧バージョン。

 
! Copyright (C) 2014 Shin Nakamura.
! See http://factorcode.org/license.txn for BSD license.
USING:  kernel locals math 
        regexp regexp.private 
        sequences.private 
        accessors sequences 
        lexer parser words words.symbol
        namespaces ;
IN: my-regexp
 
! OLD
: re-replace-first% ( string regexp replacement -- result )
    rot rot over rot rot first-match
    dup tuple?
    [
        dup from>>
        over to>>
        rot drop
        rot
        replace-slice
    ]
    [   
        drop
        nip
    ] if
;
 
! NEW
: re-replace-first ( string regexp replacement -- result )
    SYMBOLS: str re rep ;
    rep set re set str set
    str get re get first-match
    dup tuple?
    [
        rep get swap
        dup from>>
        swap to>>
        str get
        replace-slice
    ]
    [   
        drop
        str get
    ] if
;
 

 


© Shin Nakamura/BasicWerk 2014