###前提・実現したいこと
授業でLispを用いたプログラムの課題が出ました.
Lisp初心者のため,簡単な問題もわかりません.
自分でも調べましたが,どうしてもわからず,期限も迫ってきたため,質問させていただきます.
###該当のソースコード
((lambda (a + b)(+ b a)) 2 - 4)
実行結果は2になりますが,なぜそうなるのかがわかりません.
((lambda (a) (lambda (b) ((sqrt a)(sqrt b)))) 5)
実行結果は#<procedure>になりますが,なぜそうなるのかがわかりません.
>(define arg 5) > (define local-arg 3) > (define (proc arg) (let ((local-arg 2)) (list arg local-arg))) > (proc 1)
実行結果は'(1 2)になりますが,なぜそうなるのかがわかりません.
###試したこと
Lispについてwebで調べてみましたが,あまり理解できませんでした.
lambda式についても調べましたが,C++やPythonなどの言語しか触ったことがないので,
全体的に理解できませんでした.
上記の3つのプログラムについて,解説していただければ幸いです.
よろしくお願いいたします.
###補足情報(言語/FW/ツール等のバージョンなど)
実行環境はDrRacketというツールで実行しています.
OSはwindows7です.
C++の関数ポインタ、std::function、または Python の Lambda は知っていますか? 回答中でこれらを使ってもよいでしょうか?
返信いただきありがとうございます.c++の関数ポインタはわかります.pythonのラムダ式も今調べて理解しました.
授業ではLispについて説明があったのでしょうか。それとも授業の中では説明はなく、Lisp (ラムダ式も含む) が何なのかを自分で調べて回答しなさい、という課題なのでしょうか。
返信ありがとうございます.授業では,Lispについてある程度の説明はありました.ですが,その部分の問題はすでに回答しています.上記に記載しましたプログラムを自力で理解して,説明せよという問題です.
なるほど。で、授業で使った教科書などあれば、回答に追記しておいていただけますか (著者名、書名、出版社名を明記する)。同じ本を読めるかたがいれば、その内容も勘案して回答してくれるかもしれません。
返信ありがとうございます.授業では教科書は使っていません.参考資料はすべて先生が作成したスライドになります.授業の趣旨がLispについてではなく,プログラミング言語についてなので,いろいろな言語について学ぶ授業です.今回年末をはさんだのでLispについて量の多い課題が出ました.
回答2件
あなたの回答
tips
プレビュー