背景

Gaucheで指定した文字を指定した回数だけ繰り返したい。

Rubyでいう "a" * 5 、PHPでいう str_repeat('a', 5) のようなこと。

irb(main): 002 : 0 > " a " * 5 => " aaaaa "

目的は受け入れテストにて「x文字以上ならエラー」というケースでx文字を簡単に用意したかったから。

(Vimですぐ出来るけど、練習のためにGaucheのやり方を調べた)

結論

1文字の繰り返しでいいなら make-string 。

gosh> ( make-string 5 #\a ) "aaaaa"

文字列で繰り返したいならリストを作ってからapplyする方法っぽい。

gosh> ( apply string-append ( make-list 5 "Vim" )) "VimVimVimVimVim"

ちなみにClojureでも似たような感じっぽい。

user=> ( apply str ( repeat 3 "str" ))

追記: 他の書き方も教えて頂いた。

文字列ポートを使えばこんな風にもかけますね。 文字列の繰返しに限って言えば多くの場合はリストを作ってから apply の方が効率的だと思いますが。 pic.twitter.com/d4lgfSgXiE — 齊藤敦志@仕事ください (@SaitoAtsushi) 2017年6月24日

調べ方

まずはGaucheのドキュメントを repeat とか cycle とかのキーワードで探したが辿り着けず。

GaucheというよりSchemeでの書き方が分かればいいはず、ということでググっていたら以下に辿り着いた。

色々な言語での実装例があって面白かった。 Repeat a string