前者がGuileで後者はR6RSで実装されている。文字列をグルグルさせるのならSRFI-13のxsubstringが使えるだろう思い、僕も書いてみた。
(import (rnrs) (srfi :13)) (define s "ひらけ!ポンキッキ") (define-syntax do-while (syntax-rules () ((_ ((var init ...) ...) (pred r) commands ...) (do ((first #t #f) (var init ...) ...) ((and (not first) pred) r) commands ...)))) (do-while ((t s (xsubstring t 1))) ((string=? s t) #t) (display t) (newline))Cの
do ... while
を真似たdo-while
マクロは正直いらんけど…以下は実行結果
$ sash hirake.scm ひらけ!ポンキッキ らけ!ポンキッキひ け!ポンキッキひら !ポンキッキひらけ ポンキッキひらけ! ンキッキひらけ!ポ キッキひらけ!ポン ッキひらけ!ポンキ キひらけ!ポンキッ毎回文字列の比較をするので、当然効率は良くないが、まぁこういうこともできるということで。
No comments:
Post a Comment