Gaucheで指定文字を指定回数繰り返す書き方
背景
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