#:g1: SRFI-118の紹介 & Common Lispへ移植

Posted 2015-01-02 15:00:00 GMT

LISP Library 1000 の368回目。
今回は、「Simple adjustable-size strings 」です。

 Schemeの文字列の長さは可変でないようですが、可変長文字列を導入しようという提案です。
なお、現在のステイタスはドラフトです。
現在APIについての議論がされていて、メーリングリストの議論を眺める限りAPIは変更されそうな気配があり、Common Lispへの移植は時期尚早な気がしています。

移植について

(Let* ((s (Make-Array 0
                      :element-type 'Character
                      :Fill-Pointer 0
                      :adjustable T))
       (res (srfi-118:string-append! s "bar" "baz" "zot")))
  (List (Eq s res)
        (String= s "barbazzot")))
;=>  (T T)

(Let* ((s (Make-Array 9 :element-type 'Character :initial-element #\_ :Fill-Pointer 9 :adjustable T)) (res (srfi-118:string-replace! s 3 6 "BAR"))) (List (Eq s res) (String= s "___BAR___"))) ;=> (T T)

 このSRFI中でもCommon Lispについて触れられていますが、Common Lispでは可変長の文字列のサポートはあるので、その辺の機能を使って適当に移植しました。

 API的には、可変長の文字列を入力にして、可変長の文字列が返るのかどうかは、関数名で明示した方が使い勝手は良さそうだなあという印象です。その辺りは今後決定されると思いますので、決定次第調整しようかなというところ。


HTML generated by 3bmd in LispWorks Personal Edition 6.1.1

comments powered by Disqus