問題タブ [metacircular]

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.

0 投票する
1 に答える
2078 参照

scheme - メタサーキュラー評価者

私はスキームでスキームを書かなければなりません..静かで面白いですが、それが状況です。いずれにせよ、これは私が使用する可能性のあるすべてのプローセダーを使用して「ラムダ」式を記述しようとする例であり、「Let」式を記述する際にも助けが必要です。同様の方法で「Let」式をラムダに変換するにはどうすればよいですか? ありがとう。

0 投票する
2 に答える
582 参照

lisp - 環境を実装するメタサーキュラー評価者

Harold Abelson と Gerald Jay Sussman による有名な本「Structure and Interpretation of Computer Programs」に従って、Scheme に Metacircular Evaluator を実装しようとしています。

http://mitpress.mit.edu/sicp/full-text/sicp/book/node79.htmlhttp://mitpress.mit.edu/sicp/full-text/sicp/book/node80.html

著者は、次の方法で環境をセットアップすることを提案しています。

ただし、理由がわかりません

私が知っているように、Scheme はデフォルトで値によって関数に変数を渡すため、Scheme で期待どおりに動作するはずです。initial-env に変更すると、initial-env は毎回変更されず、setup-environment 関数は、extend-environment が返した値を返します。

私の理解のどこが間違っていますか、教えていただけますか?

前もって感謝します!

0 投票する
1 に答える
215 参照

c# - オープンソースのメタサーキュラーCLRの実装はありますか?

.Net CLRのオープンソースメタサーキュラー実装はありますか?MONOが完全にC#で記述されているわけではないことを知っているので、.Net CLRをよりよく理解するために、.Net CLRを完全にC#で実装するある種のオープンソースプロジェクト( JVM用のMaxineなど)を探していました。

0 投票する
1 に答える
885 参照

interpreter - メタサーキュラーインタープリターとは

同じ人がメタサーキュラー インタープリターとは何かを説明してくれますか? ウィキペディアでの定義は次のとおりです。

メタ循環エバリュエーターは、自己インタープリターの特殊なケースであり、親インタープリターの既存の機能が、追加の実装を必要とせずに、解釈されるソース コードに直接適用されます。

しかし、「親インタープリターの既存の機能を、解釈されるソースコードに直接適用する自己インタープリター」という文を理解する方法がわかりません。

ここでstackoverflowで、メタサーキュラーインタープリターは追加機能のない自己インタープリターであるという答えを見つけたので、かなり混乱しています。

前もって感謝します

0 投票する
2 に答える
5726 参照

scheme - Dr.RacketにおけるSchemeのメタサーキュラー評価者

Dr. Racket でエバリュエーターを実行しようとすると、「モジュール言語: 定義ウィンドウには式が 1 つしかありません」というエラーが表示されます。

明らかに、このウィンドウには複数の定義があり、エバリュエーターには複数の定義があります。これらの複数の定義を実行するにはどうすればよいですか? または、エバリュエーターを実行する他の方法があります。

どんな助けでも大歓迎です。

0 投票する
1 に答える
238 参照

haskell - この「似た形」のデータ型のペアでボイラープレートをどのように抽象化しますか?

一般的な質問

同じものを表す 2 つの異なる方法であるデータ型のペアがあります。1 つは String で変数名を記録し、もう 1 つは Int で変数名を記録します。現在、両方とも定義されています。ただし、ここでは最初の表現だけを説明したいと思います。2 つ目の表現は何らかの関係によって生成されます。

具体例

具体的には、最初のものは STLC ターム ユニバースのユーザー定義バージョンであり、2 つ目は同じものの de Bruijn インデックス付きバージョンです。

Termとに対して定義された関係が既に存在しTermInます:

Termの元の名前は に保存されているため、 とTermInの 1 対 1 のマッピングが存在することに注意してください。TermTermIn

質問を言い換える

Termこれでボイラー プレートがどれだけ関与しているかがわかります。これは、私が定義する洗練された抽象化と出力型に対する関数を使用して取り除きたいと考えていますTermIn。さらに多くのコンテキストを提供するために、さまざまなラムダ計算の定式化に対して、このような外部表現と de Bruijn 表現のペアを多数作成していますが、それらすべてに 1 対 1 の関係が成り立ちます。

0 投票する
1 に答える
388 参照

scheme - メタサーキュラーインタープリター while スキームのループ

この while ループがメタサーキュラー インタープリターで機能しないのはなぜですか。インタラクション ウィンドウでこれを実行するにはどうすればよいですか?

0 投票する
2 に答える
199 参照

scheme - Scheme Meta Circular Evaluator のパターンマッチ機能

パターン マッチング関数を既存のスキーム メタ循環エバリュエーターに追加しようとしています(これは宿題です)。指示の文言に少し迷っています。この点でより熟練した誰かが私がこれを解釈するのを手伝ってくれることを望んでいました.

match の構文は次のようになります。(match a ((p1 v1) (p2 v2) (p3 v3)))

そして、次のように長さを見つけるために使用できます。

関数内のパターン言語には、数値定数、引用符で囲まれた定数、変数、およびコンスが含まれている必要があります。一致が見つからずにパターンが使い尽くされた場合は、エラーがスローされます。

パターン マッチングの概念は理解できたと思いますが、この方法で関数に実装すると、少し気が遠くなります。この関数が何をすべきかをよりよく理解できるように、上記の構文が何をしているのか (具体的には、上記の長さで match がどのように使用されているのか) を説明してくれる人はいますか?

0 投票する
4 に答える
2532 参照

lambda - Alan Kay の Eval/Apply Einstein Moment

Alan Kay 氏は、コードをよく読んで、Lisp 1.5 マニュアルの 13 ページにあるコードの唯一のバグを見つけたことが、コンピューター サイエンスの理解を 100 倍向上させたと述べています。

問題のコードはeval&の最初のリリースで、applyモダンな Lisp のように見えます (私が認識しています)。

正解はわかっている可能性がありますが、失われているため (私の Google-fu はまともで、少なくとも 20 分間検索しました)、1 番目の正解を授与します (編集時間を確認するので、ごまかそうとしないでください)。できるだけ早く 250 ポイントのバウンティ。

他の人も賞金に貢献することをお勧めします.上のビデオから、アラン・ケイは、このものはアインシュタインが相対性理論を発見したときの環境を思い起こさせると言ったことを思い出してください.

本文中のコードはM式で書かれています。私は、M 式から S 式 (lisp コード) @ https://github.com/Viruliant/MccarthyMCEval-1.5に変換するトランスレータに取り組んでいます。

とにかく、13ページからの翻訳された引用は次のとおりです。