問題タブ [scheme]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
lisp - 誰かがこのスキームの手順を説明するのを手伝ってくれますか
質問:
これは中間で 1 位でした。私は「81 9」を入れました。とにかく、なぜ81なのかわかりません。
理由は理解できます(lambda (x) (* x x)) (* 3 3) = 81
が、最初のラムダ x と y の値が何であるか、そして が何をするのか理解でき[body] (x y)
ません。
だから、最初の部分が何もしないように見える理由を誰かが説明してくれることを望んでいました.
lisp - この Lisp / Scheme コードの書き方は?
関数 (1 つの引数) と数値を取り、その関数を数値の 2 倍に適用するラムダ式。
scheme - ツリー再帰/時間の複雑さ スキームの割り当て
この質問の一部を手伝っていただければ幸いです。ありがとう。
この定義を、2 の累乗と呼ばれるまったく同等のツリー再帰関数に変換します。その漸近的な時間計算量を説明し、なぜこの時間計算量を持つのかを説明してください。
ここで、まったく同じことを計算する tttpo_rec という関数を作成しますが、O(n) 時間の複雑さを持ち、保留中の操作に O(n) スペースを使用する線形再帰プロセスを使用します。
ここで、まったく同じことを計算する tttpo_iter という関数を作成しますが、O(n) 時間の複雑さを持ち、一定のスペースを使用する線形反復プロセスを使用します。
ここで、2^N、3^N などを計算できるように、前述の定義の 1 つを一般化して、任意の整数乗を処理できるようにしたいとします。2 つの引数を取る to-the-power-of という関数を作成します。そして、一方を他方の力に上げます。
テンプレートは次のとおりです。
もう 1 つ制限を追加します。* 演算子は使用できません。乗算を行うには、次の再帰関数のみを使用できます。
関数を書き、その時間計算量とその理由を説明します。
functional-programming - SICP の自習にはどの言語を使用しますか?
関数型プログラミングを実際に学ぶためにバグを見つけました。そこで、私の次の自習プロジェクトは、コンピュータ プログラムの構造と解釈に取り組むことです。残念ながら、私は大学で CS を専攻していなかったので、Lisp を学んだことはありません。
SICP はプログラミングのためのツールを強調していませんが、演習を行うには、使用する Lisp に似た言語を選択する必要があります。スキームのいくつかの実装は、抵抗が最も少ない方法のようです。一方、Common LispとClojureを使用した人もいます。Common Lisp や Clojure はプロダクション コードで使用される可能性が高く、私の履歴書には少し適しているように思えます。ところで、私は言語を学ぶこと自体が価値があるという議論を十分に理解していますが、履歴書に役立つ言語を学ぶことは依然として有益です. 私は資本家であり、自分の学習については学者です。
SICP を独学しなければならないとしたら、どの言語を選びますか?またその理由は何ですか? 理想的には、JVM で実行できる言語を使用したいと考えています。確かに、REPL が bash と emacs で動作する言語を使用できます。
追記:Schemeを使わずにSICPを読んでみた人はいますか?もしそうなら、あなたの経験はどのようなものでしたか?
lisp - あなたがSchemeマクロを使ったことのあることは何ですか?
マクロの多くの例は、CL の with-open-file など、ラムダを非表示にすることに関するものです。特に PLT スキームで、マクロのより風変わりな使い方を探しています。マクロの使用と関数の使用のどちらを検討するかについて、感触をつかみたいと思います。
coding-style - 二次方程式を解くためにスキームコードを使用していますか?
二次方程式 a x2 + b x + c = 0の 1 つの解を計算するために、このスキーム コードを書きました。
しかし、この手順はわかりにくいと誰かが私に言った。なんで?
この手順のクリーンアップ バージョンはどのようになりますか? 新しい手順の方が理解しやすい理由を教えてください。
ありがとう
function - 関数のn回目の繰り返し適用を計算するスキーム手順は?
誰もこれに精通していますか?
f と正の整数 n を計算する手続きを入力として受け取り、f の n 回目の繰り返し適用を計算する手続きを返す手続きを書きなさい。この手順は、次のように使用できる必要があります。
関数の構成用に作成した次のコードがソリューションをより簡単にするのに役立つことはわかっていますが、ここからどこに行くべきかわかりません。
lambda - このスキーム評価で何が間違っていますか?
評価:
これは私がしたことです:
評価
((((lambda (x) (lambda (y) (lambda (x) (+ x y)))) 3) 4) 5)
- 評価
5 -> 5
- 評価
評価
(((lambda (x) (lambda (y) (lambda (x) (+ x y)))) 3) 4)
- 評価
4 -> 4
- 評価
評価
((lambda (x) (lambda (y) (lambda (x) (+ x y)))) 3)
- 評価
3 -> 3
- 評価
(lambda (x) (lambda (y) (lambda (x) (+ x y))))
->(lambda (x) (lambda (y) (lambda (x) (+ x y))))
に適用
(lambda (x) (lambda (y) (lambda (x) (+ x y))))
する3
置換
3
->x
で(lambda (y) (lambda (x) (+ x y))
(lambda (y) (lambda (x) (+ 3 y))
評価
(lambda (y) (lambda (x) (+ 3 y)) -> (lambda (y) (lambda (x) (+ 3 y))
apply (lambda (y) (lambda (x) (+ 3 y))
に4
代用
4 -> y
する(lambda (y) (lambda (x) (+ 3 y))
(lambda (y) (+ 3 4))
評価
(lambda (y) (+ 3 4)) -> (lambda (y) (7))
- 置換
5
-> ?
- 置換
そして、私は立ち往生しています。
scheme - このスキームの二乗和関数が機能しないのはなぜですか?
テストしましたが、sum-of-squares
機能が動作しません。なんで?
function - スキームで関数を繰り返し適用しますか?
f が数値関数で、n が正の整数の場合、f の n 回目の反復適用を形成できます。これは、x における値が f(f(...(f(x))) である関数として定義されます。 ..)))。たとえば、f が関数 x + 1 の場合、f を n 回繰り返し適用すると、関数 x + n になります。f が数値の 2 乗演算である場合、f を n 回繰り返して適用すると、その引数が 2^n 乗される関数になります。f と正の整数 n を計算する手続きを入力として受け取り、f の n 回目の繰り返し適用を計算する手続きを返す手続きを書きなさい。手順は次のように使用できるはずです。
これを使用して答えを簡単にすることができます: