質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

Q&A

1回答

908閲覧

emacsでconcatenateのような関数を使いたい

rhino_whisteria

総合スコア0

Emacs

GNU Emacsと拡張性の高い、高性能なテキストエディタです。豊富なライブラリの導入により、統合開発環境やWebブラウザとしても機能させる事が可能です。

LISP

LISPはプログラミング言語の一種であり、関数型言語に分類されています。 特徴として、括弧を多様する独特の構文を持ちます。

0グッド

0クリップ

投稿2021/12/24 06:21

編集2021/12/24 06:21

emacsでconcat関数を使ったのですが引数を3つ以上にすると,エラーが出ました.
自分で関数を作ろうかと考えたのですが,可変長引数の使い方がわからなかったので諦めました.
emacslispにconcatenate関数のようなものはありますか.
ない場合は,関数の作り方を教えてください.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2021/12/24 06:34

こちらでは Emacs29 を使っていますが、例えば、 (concat "a" "b" "c" "d") は "abcd" を返します。具体的にはどの様なエラーメッセージが表示されたのでしょうか?
otn

2021/12/24 11:05

どんなコードでどんなエラーが出たかですね。 個数とは関係ないエラーでしょう。
guest

回答1

0

concatで問題ないような気がします。

lisp

1(concat "hoge" "fuga" "piyo") 2=> "hogefugapiyo" ;; 引数3つでも連結できている

なので以下は不要かもですが念のため。

可変長引数ですが、
&restというのを引数の前におけば、その引数名にまとめてリストにつめこんでくれます。

lisp

1(defun func (x &rest args) 2 (format "%s %s" x args)) 3 4(func "hoge" "fuga" "piyo") 5=> "hoge (fuga piyo)"

この例では、第1引数xは必須の引数ですが、argsは 直前に&restが指定されているので、可変長引数用の引数という扱いになります。

なのでargsというリストが作られて、その中に "fuga" と "piyo"が入っています。

argsはただのリストなので、あとはmapcarでもdolistでもなんでも使えます。

で、ここまで書いておいてなんなのですが、emacsで M-x describe-function concatとすると、下記のようにconcat関数のヘルプが出ます。

concat is a built-in function in ‘C source code’.

(concat &rest SEQUENCES) <----ここ注目
以下省略

というわけで、concat 関数の引数にも &rest が使われているので、何個でも文字列連結できるはず!ということがわかります。

以上、現場からでした。 ご参考まで。

投稿2022/01/11 03:49

編集2022/01/11 03:50
yaxavr

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問