問題タブ [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.
scheme - 車の戻り値?それともスキームが奇妙ですか?
私は、Scheme とリストを使用する私のプロジェクトの 1 つで、このやや奇妙な動作に気付きました。動作を 1 つのセクションに分離することができました。コードは次のとおりです。
次の出力が得られます。
誰でも私に説明できますか:
- なぜ
(set-car! x 6)
更新しないのZ
ですか?私の理解によると、対応する値へのポインターまたは参照を返しますcar
。cdr
これは本当に奇妙で、私はちょっと混乱しています。 car
/cdr
が参照/ポインターを返さない場合、最終set-cdr!
的にリストを操作する方法はv
?
何か案は?これは単純な修正ですが、なぜ変数の奇妙なことが起こっているのかについてもっと興味があります。
recursion - このコードを改善するにはどうすればよいですか?
SICPの1.11を実行するための私の解決策は次のとおりです。
さすがに(f 100)のような評価には時間がかかります。このコードを(再帰を先にせずに)改善したり、マルチコアボックスを利用したりする方法があるかどうか疑問に思いました。私は「mit-scheme」を使用しています。
linux - Ubuntu 8.10 で 6.001 用の MIT スキームをセットアップする方法
私はビデオ講義と講義資料を使って独学で 6.001 をプレイしています。ただし、Ubuntu (intrepid) で MIT スキームをセットアップする際にいくつかの問題があります。
パッケージ管理を使用して MIT-Scheme をインストールしましたが、使用するバージョンが明らかに間違っています。7.7.90 ではなく 7.5.1 にする必要があります。
ここまでで、tar ファイルをダウンロードし、/usr/local に解凍しました。ステップ3の意味がわかりません。
次に、コマンドを入力しました
スキーム -大 -バンド 6001.com -編集
エラーは
この構成には十分なメモリがありません。sudo モードで実行しようとしましたが、今度はエラーが異なります。プロセス テーブルを割り当てることができません。
不一致が検出されました
1GB 近くの空きメモリがあり、十分な HDD スペースがあります。これを正常に設定するにはどうすればよいですか?
scheme - LilyPond ソース ファイルを複数のキーに自動的に転置する最良の方法は何ですか?
問題
LilyPondを使用して、教会の合唱団が演奏する楽譜をタイプセットしています。週に誰が利用できるかに応じて、曲はさまざまなキーで再生されます。私たちには、何でも演奏できる素晴らしいピアニストがいて、ギタリストはたいてい別のコードを鉛筆で書きます。
では、いろはを歌うとしましょう。まず、利用可能なソース トランスクリプションをすべて取得し、それを LilyPond スクリプトに入力します。
これを自動的に移調する機能が必要なので、すべてを 'G' にしたい場合は、次のように \transpose 呼び出しで曲をラップします。
私が本当に欲しいのは、「g」を何かに置き換えて、メロディーの出力を複数回生成することです。単純な LilyPond 変数はここでは機能しないようです。これまでのところ、これを行うためのスキーム関数を定義することに成功していません。
今のところ私が頼っているのは、上記のファイルを取得して、twinkle.ly と呼び、twinkle.ly.m4 という名前の M4 スクリプトに変換することです。その内容は次のようになります。
次に、次の行を実行して while をコンパイルします。
これを行うための Makefile を作成し、持っているすべての曲と関心のあるすべてのキーのルールを定義しました。
質問 これについてもっと良い方法があるはずです。Lilypond が組み込みスキームをサポートしていることを考えると、Lilypond で前処理されたマクロを使用したくないと思います。他の誰かがこの同じ問題の解決策を思いつきましたか?
scheme - 'else'を省略した場合、Schemeの'cond'句はどうなりますか?
私はSchemeを学んでいます。私は最近、cond句の「else」という単語が欠落していることに気付く前に、プログラムのバグを見つけるのに(あまりにも多くの!)時間を費やしました。しかし、そのような状況での動作は少し奇妙に見えます。単純なプログラム(以下)だけで条件を試してみると、「whatever」はelse句で期待どおりに表示されますが、「else」がない場合は、周囲の二重引用符と解釈されない改行とともに表示されます。文字通り印刷された行。誰かが私に何が起こっているのか説明できますか?TIA。
scheme - SICPからスキーム番号関数を呼び出すにはどうすればよいですか
SICP(例2.6)では、次の関数は「数字なしで通り抜ける」方法として説明されています。私はこれを理解しようとひっかきます。出発点として、これらの関数はどのように呼び出されますか?出力が1になるような方法で実際に適用できますか?(または他の番号?)
私の最初の試みは成功していません:
functional-programming - 機能: 整数 1..n のリストを作成する
これは宿題ではありません。Standard ML を独学で学んでいます。私はSchemeも少し知っているので、この質問はどちらの言語でも答えられるはずです.
私の自主的な課題は、1 から n までの整数のリストを作成する関数を作成することです。たとえば、list(7) は [1,2,3,4,5,6,7] を返す必要があります。O(n) ソリューションが理想的です。
リストを逆に (すなわち [n,n-1,..,1]) 線形時間で構築するのは簡単です:
追加操作は線形であるため、今後リストを作成しようとすると O(n^2) になります。
私の次の試みは、nil から始めて n を先頭に付け、逆方向に 1 に再帰することで、最後から先頭 (右から左) へのリストを作成することでした。しかし、それはまったく機能しませんでした。
再帰で使用する終了していないリストを作成するヘルパー関数が必要だと思うのですが、困惑しています。
programming-languages - なぜ高次手続きなのか?
したがって、言語が高次の手続きを提供する場合、手続きを返す手続きを使用できます。何かのようなもの:
新しい手順を作成するには、次のようにします。
Proc
同様のタスクは、次のように、3 つの引数ではなく 4 つの引数を取る定義を定義し、このプロシージャを呼び出して定義することにより、高次プロシージャをサポートしない言語で実行できますProcA
。
では、なぜ高階手続きについてそれほど曖昧なのか? 何か不足していますか?
list - 組み込みリスト関数「フィルター」の使用方法
DrSchemeの組み込み関数「filter」の使用を手伝ってください。
「数値「Max」を消費する関数「hello」を作成し、数値のリスト「L」を作成して、「Max」よりも小さい数値のリストを「L」に生成します。」
書式設定のためのコメントから取得
これは私が今まで持っているものです
Maxを関数helloに実装する方法がわかりません。
c++ - ある言語で書かれたコードはどのようにして別の言語から呼び出されますか
これは私がいつも答えを知りたいと思っていた質問ですが、実際には尋ねられませんでした。
ある言語、特にインタプリタ言語で記述されたコードは、コンパイルされた言語で記述されたコードによってどのように呼び出されますか。
たとえば、C ++でゲームを作成していて、Schemeで作成するAIの動作の一部を外部委託しているとします。Schemeで書かれたコードは、コンパイルされたC ++コードで使用できるようになるにはどうすればよいですか?C ++ソースコードでどのように使用され、C ++コンパイル済みコードでどのように使用されますか?使い方に違いはありますか?