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

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

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

Schemeは、Lispから派生したプログラミング言語の一つであり、仕様または実装を指す場合もあります。言語自体の仕様はシンプルで、関数型言語として理解しやすいことから記号処理などで主に用いられている言語です。

Q&A

解決済

1回答

383閲覧

Schemeの(define (f a b) ( lambda(x) ( ....)))が何を表しているのかわからない。

ruei

総合スコア284

Scheme

Schemeは、Lispから派生したプログラミング言語の一つであり、仕様または実装を指す場合もあります。言語自体の仕様はシンプルで、関数型言語として理解しやすいことから記号処理などで主に用いられている言語です。

0グッド

0クリップ

投稿2018/09/30 14:08

以下のコードが何をしているのかわかりません。

Scheme

1(define (pw-amp k x0) (lambda (x) 2 (exp (* 0+1i (vector3-dot k (vector3+ x x0))))))

コードはgithubのリンクの19-20行目です。

k,x0,xは3次元ベクトルです。
vector3-dotは内積です。
0+1iは虚数iです。
vector3+は3次元ベクトルx,x0の和を計算しています。

Schemeの(define (f a b) ( lambda(x) ( ....)))が何を表しているのかわかりません。

(define sum3 (lambda (a b c) (+ a b c)))

のような関数の定義の仕方は分かるのですが、上の場合だとsum3の部分が(pw-amp k x0)となっていてこの部分が何を表しているのかわかりません。

分かる方がいらっしゃったらご教示ください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

これは pw-ampという手続の定義です。引数をk x0としますと読みます。

(define (pw-amp k x0)

投稿2018/09/30 14:15

fu7mu4

総合スコア1088

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

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

ruei

2018/09/30 14:19

使用するときはpw-ampの引数k, x_0とxはどういう風に区別して使うのでしょうか (pw-amp k x_0 x) ですか?この書き方は一般的な書き方ですか? (define pw-amp (lambda (k x_0 x) (・・・))) と何が違うのでしょうか
fu7mu4

2018/09/30 14:59 編集

この場合はgithubの該当行の上のコメントにありますように pm-amp手続は、k と x0 を引数にとって、 lambda(x)を返しています。xはその返したlambdaの引数です。 ```` Actually, it is a function of k and x0 that returns a function of x ... ```` ````lisp (define f (lambda (x) x)) ```` は ````lisp (define (f x) x) ```` と同じですので、あなたの慣れた書き方に戻すと、 ````lisp (define pw-amp (lambda (k x_0) (lambda (x) (exp (* 0+1i (vector3-dot k (vector3+ x x0))))))) ```` になります。
ruei

2018/09/30 15:25

書き直していただいたので分かりました。 pw-ampは関数をreturnする関数ということですね。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問