問題タブ [chicken-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 - チキンスキームのdefstructで作成されたデータ構造のすべての「部分」を印刷する方法
上記のコードがあるとしましょう:
(tree-height ココナッツ) を使用してココナッツの高さを表示できることは知っていますが、1 つのコマンドでココナッツのすべての情報を確認するにはどうすればよいでしょうか? 私はまた、生成する (tree->alist ココナッツ) を試しました: ((height . 30) (age . 5) (leaf-color . 'green)) しかし、次のようなものは使用できません: (for-each pp ココナッツ)。そのようにすることは可能ですか、それとも適切なコマンドで私の印刷ツリーを書くことが唯一の解決策でしょうか?
lisp - リストまたはconsesを含むリストの検索
このようなリストを取得したとしましょう(より多くの要素がありますが、メソッドは同じである必要があります):
また、既存のリストにいつでも要素を追加できます。これが最も効果的な方法で、ユーザーの名前を受け取り、名前を返す関数を作成するとします。
何かのようなもの :
そのような場合の一般的な習慣は何ですか?誰かが方法の例/リンクを指摘できますか?
list - すべてがスキームのリストですか?
「SimplyScheme」(第2版)という本と一緒に、YouTubeで「ComputerScience61A-Lectures」を見ています。講義では、家庭教師はStk通訳を使用していますが、私はチキンスキーム通訳を使用しています。
最初の講義では、彼は「最初の」手順を使用します。
「h」を返します。
「SimplyScheme」の本には、最初に実装する方法の例があります。
私のテストと理解にとって、送信された場合に機能するのはリストです。スキームで「すべてがリストである」と言うのが適切かどうかを理解しようとしています。より具体的には、「こんにちは」のリストはどこにあり、リストがある場合は、本に書かれているように最初の手順で機能しないのはなぜですか?
また、すべての実装が「すべてがリストである」ことを念頭に置いて記述されている場合、同じコードがすべてのスキーム実装で機能しないのはなぜですか?
garbage-collection - スタック制限に関するプラットフォーム固有の情報を取得するにはどうすればよいですか
私はChickenSchemeのスタイルでメモリ割り当てを行うインタプリタを作って遊んでいます。基本的な考え方は次のとおりです。
と
サンプルの手順は次のとおりです。
私が知る必要があるのは、STACK_LIMITの値がどうあるべきかです(スタックが大きくなるか下がるかも知る必要があります)。スタック制限に関するプラットフォーム固有の情報を取得するにはどうすればよいですか?
java - スタック制限を確認し、JavaでChicken Schemeスタイルの再帰を実行するにはどうすればよいですか?
次のコードを検討してください。このコードは、ほとんどの場合関数が直接呼び出されるチキンスキームスタイルの再帰をほぼ実装していますが、より複雑なトランポリン手順が存在する場合もあります。ただし、コードは正しく機能しません。私が本当に必要としているのは、スタックオーバーフローの危険性があるかどうかを示すブール値を返すメソッドstackLimitsAlmostReachedです。スタック制限を確認し、JavaでChicken Schemeスタイルの再帰を実行するにはどうすればよいですか?
function - 可変個引数関数の定義方法
arguments
Javascriptの配列に似たものを探しています:
可変引数の長さのドット表記とスキームのapply
機能を認識しています。
ドットが最初の引数と見なされるため、これは機能しないようです。
これは機能しますが、理想的ではありません。args リストを定義するための追加の構文を使用せずに関数を呼び出したいと思います。
scheme - スキームを使用して開発されたウィンドウマネージャはありますか?
今では、stumpwm が私の毎日のデスクトップです。それは素晴らしいです、そして私はそれがとても好きです。stumpwm は、実用的な FP 言語である common lisp を使用して開発されています。
Scheme は一般的な Lisp よりも古いものです。また、スキームを使って開発されたアプリケーションは少ないようです。スキームが単に教育に応用できるかどうか?
よろしく!
syntax - Chicken Scheme は複素数をサポートしていますか? もしそうなら、なぜこのエラーが発生するのですか?
私は少しばかり Scheme を学び始めたばかりで、Fixnum Days で Dorai Sitaram の Teach Yourself Scheme を使用しています。同著では次のように述べられている。
スキーム番号は、整数 (例: 42) ... または複素数 ( 2+3i ) にすることができます。
鉱山を強調します。フォームに注意してください。
これまでに教えられた原則を使用して、さまざまな種類の数を処理するいくつかの異なるプログラムを作成してみました。複素数をテストするために、この非常に単純なスニペットを作成しました。
これをcodepad.org (MzScheme を使用) とIdeone.com (guile を使用) でテストすると、完全に機能しました。
ここで、Chicken Scheme (私のローカル開発環境) で試してみたところ、問題なくコンパイルされましたが、実行するとクラッシュしてエラーが発生しました。
どうやら、バインドされていない変数エラーがありますが、私の制限されたスキームでは、それが何を意味するのかさえわかりません(まだ.)
他の誰かがこれを経験しましたか?Chicken Scheme はかなり標準に準拠していると思われるので、このような単純なものをサポートしないのは奇妙に思えます。ドキュメントをグーグルで調べましたが、具体的なものは見つかりませんでした(ただし、外部の複素数ライブラリが利用できると思うので、おそらくそれがヒントです。)
誰か提案があれば、大歓迎です。前もって感謝します!:)
compilation - コンパイルされた環境でeggを使用するにはどうすればよいですか?
これは私の前の質問のフォローアップです。残念ながら、Chicken Schemeはデフォルトで複素数をサポートしておらず、numbers
インストール可能なエッグを提供しているようです。
を介してこのeggをインストールchicken-install numbers
しましたが、解釈された環境にロードできます。use
;を呼び出すことでこれを行うことができます。REPLで手動で実行するか、.scm
ファイルをスクリプトとして実行しますcsi
。
たとえば、このスクリプトは完全に機能します。
で実行する場合:
しかし、これとまったく同じスニペットをcsc
(追加のフラグがなくても)コンパイルすると、ロードしなかった場合と同じランタイムエラーが発生します(バインドされていない変数など)。コンパイルされた環境ではそうではないようですuse
。マスタードをカットします。
他に注意すべき2つの点は、ドキュメントによると、、などの他のインポート関数を試しましrequire-extension
たrequire-library
が、違いはありません。numbers
もう1つは、モジュールの名前を「たとえば」以外に変更するnumberss
と、拡張機能を読み込めないと文句を言ってコンパイルに失敗するため、少なくともnumbers
ライブラリがインストールされていることを検出していることは明らかです。
誰かが、できればコンパイルされた環境で卵を使用する方法を簡単な実例を通して説明できますか?前もって感謝します!:)
random - スキームでランダム関数を正しくシードする方法は?
私は、Scheme の起動randomize
時に、現在の時刻をシードとしてプロシージャーが呼び出されたという印象を受けました。ただし、Scheme スクリプトが のみで構成されている場合、(print (random 10))
受け取る出力は7
;のみです。他の番号はありません。それで、私は何を間違っていますか?記録のために、私は Chicken Scheme を使用しています。