2017-10-25 6 views
1

私はjoinと呼ばれる他の多くの言語の機能を探しています。 splitの逆のように動作します。最大値に分割の逆がありますか?結合関数?

私はそれが存在するかどうかわからないんだけど、あなたはこのようにそれを定義することができ、それはstr_join(split("1;2", ";"), ";")"1:2"

答えて

0

になるだろうと動作するように期待:

str_join(list, delim) := block(
    if length(list) = 0 then return (""), 
    lreduce(
     lambda(
      [p,c], 
      if not(stringp(p)) then p: string(p), 
      if not(stringp(c)) then c: string(c), 
      concat(p, delim, c) 
     ), 
     list 
    ) 
); 
1

私はあなたが効果を得ることができると思います~{~}(出力の反復)の構文をprintfにしたいとします。また、私は~^(反復からのエスケープ)構造を使用したことにも注意してください。

(%i5) printf (true, "~{~a~^:~}~%", [1,2,3,4]); 
1:2:3:4 
(%o5)        false 

? printfは詳細には載っていません。 printfの出力制御演算子はCommon Lispから直接借用されているので、CL Hyperspecで情報を見つけることができます。参照:http://www.lispworks.com/documentation/HyperSpec/Body/22_c.htm

EDIT:printf(false, ...)で(標準出力に出力する代わりに)戻り値として文字列を取得できます。

関連する問題