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

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

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

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

Q&A

解決済

1回答

3881閲覧

LISPのエラーが解決できない

subaru-k

総合スコア19

LISP

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

0グッド

1クリップ

投稿2020/05/12 08:45

簡単な英文(肯定文)を疑問文にする以下のプログラムを作成しました。

入力例:(question '(this is a simple lisp function))
出力例:(is this a simple lisp function ?)

LISP

1(defun question (arg) 2 ( 3 (let ( (be) (a ()) ) 4 (loop 5 (cond ( (equal be (car arg)) (return arg) ) ) 6 (setq be (car arg)) 7 (setq arg (cdr arg)) 8 (cond ( (or (equal 'am be) (equal 'is be) (equal 'are be) 9 (equal 'was be) (equal 'were be) ) 10 (setq arg (cons be (append (reverse a) arg))) 11 ) 12 ) 13 (setq a (cons be a) ) 14 ) 15 ) 16 ) 17)

すると以下のエラーが表示されました。

*** - SYSTEM::%EXPAND-FORM: (LET ((BE) (A NIL)) (LOOP (COND ((EQUAL BE (CAR ARG)) (RETURN ARG))) (SETQ BE (CAR ARG)) (SETQ ARG (CDR ARG)) (COND ((OR (EQUAL 'AM BE) (EQUAL 'IS BE) (EQUAL 'ARE BE) (EQUAL 'WAS BE) (EQUAL 'WERE BE)) (SETQ ARG (CONS BE (APPEND (REVERSE A) ARG))))) (SETQ A (CONS BE A)))) should be a lambda expression The following restarts are available: ABORT :R1 Abort main loop

このエラーの意味と、どうすれば直るのかを回答していただけると幸いです。
環境は、Windows10で、バーチャルボックス上でubuntuを起動しています。

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

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

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

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

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

guest

回答1

0

ベストアンサー

let の外にある括弧が一個余分で、
エラーメッセージに表示されているコード全体は、
lambda式であるべきと言われてます。

lisp

1(defun question (arg) 2 (let ((be) (a ())) 3 (loop 4 (cond ((equal be (car arg)) (return arg))) 5 (setq be (car arg)) 6 (setq arg (cdr arg)) 7 (cond ((or (equal 'am be) 8 (equal 'is be) 9 (equal 'are be) 10 (equal 'was be) 11 (equal 'were be)) 12 (setq arg (cons be (append (reverse a) arg))))) 13 (setq a (cons be a))))) 14 15(print (question '(this is a simple lisp function)))

ちなみに、文字列ではなくシンボルなので出力は

(IS THIS A SIMPLE LISP FUNCTION)

投稿2020/05/12 09:36

編集2020/05/12 10:19
teamikl

総合スコア8681

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

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

subaru-k

2020/05/12 09:55

丁寧なご回答ありがとうございます。 理解できました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問