問題タブ [s-expression]

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 に答える
587 参照

ocaml - Map のようなファンクター型で sexplib を使用するにはどうすればよいですか?

Sexplib の構文拡張により、任意のユーザー定義データ構造のシリアライズとデシリアライズが OCaml で簡単になります。これは通常with sexp、型定義の最後に注釈を追加することによって行われます。

これは、ファンクターベースの型に直接一般化されているようには見えません。また、Sexplib 標準型コンバーターが標準ファンクターでさえどのようにキャプチャできるかについても明らかではありません。

int Map.Make(String).tこれまでのところ、シリアル化の前に特定の Map 型のインスタンス (例: ) をリストにフラット化することでこの問題を回避してきました。また、[Bat]Map などの主要なモジュールへのカスタム sexp シリアライゼーションに古いバージョンの Batteries が混在していることにも気付きましたが、これはしばらくの間削除されています。

マップやその他の複雑なファンクター型は、Sexplib シリアライゼーションで一般的にどのように使用されますか?

0 投票する
3 に答える
336 参照

nested - ((f 2) 3 4) のように、s 式を頭に持つ Lisp はありますか? そうでない場合、なぜですか?

ネストされた s 式を頭にサポートする Lisp はありますか? 例えば

for は(f 2)、適用する関数/マクロに評価されると推定されます3 4

そのようなことをサポートするLispを持つことは可能ですか? または、これを禁止する/非実用的にする技術的な制限はありますか?

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

list - Lisp S 式とリストの長さ/サイズ

Common Lisp 関数のみを使用して、s 式に含まれる s 式の数をカウントする関数を作成しようとしています。例えば:

ネストされた式が可能です:

長さを見つける関数を書きましたが、ネストされた式がない場合に機能します。それは:

ネストされた式を次のようにサポートするために、これを変更しました。

これは、ネストのない式で機能しますが、ネストされた式の答えより常に 1 少なくなります。これは、上記の例の を例にとると((if x then (x = y)(z = w)))、これは最初に を見てif、3 番目の条件を満たし、cdr (式の残りの部分をリストとして) を に返すためlengthです。(x=y) に達するまで同じことが起こり、その時点で a+1が返されます。これは、式(if x then .... )がカウントされていないことを意味します。

どのような方法でそれを説明できますか? 追加+2すると、ネストされていない式が過大にカウントされます。

ネストはどこでも発生する可能性があるため、1 つの関数でこれを機能させる必要があります。

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

emacs - S 式をリアルタイムで視覚化する

Lisp/Scheme/Clojure コードをこのように書きたい

そして、このように視覚化してもらいます

表情を操作しながら木の変化をリアルタイムで見たい。木が大きくなるとレイアウトが重要になってきます。

これを行うツールはありますか?Emacs の世界には何かが存在するのではないかと思います。

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

ocaml - OCaml sexplib、カスタム to_sexplib 関数を定義する方法は?

構文を使用しwith sexpて、s-exp 関数を自動的に生成しています。

問題は、私が sexplib で印刷しているデータ構造にいくつかの再帰的なポインターがあり、印刷するとスタック オーバーフローが発生することです。

だから私は to_sexp 関数をオーバーライドして、単に返すようにする必要があります"(SomeRecursiveData)".どうすればいいですか?

注: 私のデータ定義の形式は次のとおりです。

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

c# - (構文解析) ツリーでパターンを照合するための C# ユーティリティはありますか?

私は、構文パーサーを使用して特定の文から構文解析ツリーを作成する自然言語処理 (NLP) プロジェクトに取り組んでいます。

入力例:私はジョーとジルに出くわし、買い物に行きました
出力例: [TOP [S [S [NP [PRP I]]] [VP [VBD ran] [PP [IN into] [NP [NNP Joe] [CC and] [NNP Jill]]]]] [CC and] [S [ADVP [RB then]] [NP [PRP we]] [VP [VBD going] [NP [NN shopping]]]]]] ここに画像の説明を入力

次のような複雑なクエリを実行できる C# ユーティリティを探しています。

  • 「Joe」に関連する最初の VBD を取得する
  • 「ショッピング」に最も近い NP を取得する

これを行うJava ユーティリティを次に示します。C# に相当するものを探しています。
どんな助けでも大歓迎です。

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

c# - S 式の解析

今日、私はこの質問に出くわしました:

入力例:私はジョーとジルに出くわし、買い物に行きました
出力例: [TOP [S [S [NP [PRP I]]] [VP [VBD ran] [PP [IN into] [NP [NNP Joe] [CC and] [NNP Jill]]]]] [CC and] [S [ADVP [RB then]] [NP [PRP we]] [VP [VBD going] [NP [NN shopping]]]]]]

ここに画像の説明を入力

予想される出力 (S 式のように見えるため) を単純に解析してオブジェクト (この場合はツリー) にし、単純な LINQ メソッドを使用してそれを処理することを提案しようとしていました。しかし、驚いたことに、C# の s-expression パーサーを見つけることができませんでした。

私が考えることができる唯一のことは、clrにコンパイルされるため、Clojureを使用して解析することですが、それが良い解決策であるかどうかはわかりません。

ちなみに、 type の output への回答は構いませんdynamic。ここで見つけた唯一の答えは、特定のスキーマへの逆シリアル化に関するものでした。

私の質問を要約するには: C# で s 式を逆シリアル化する必要があります (シリアル化は、この質問の将来の読者にとって良いでしょう)

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

java - Java LISP の実装はほぼ機能しています

私が実行すると、3,4,5,7,8,9,10 のみが正しく動作することがテストされます: http://joeganley.com/code/jslisp.html

これらの結果は、例外が発生して実行が停止するため、テスト 6 を削除した場合にのみ発生します。私がどこで間違ったのか、何か考えはありますか?

6 がコメントアウトされていない場合のエラー:

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

matrix - smalltalk の遅延リスト s 式行列

そのため、LazyMatrix という名前の smalltalk で作成するクラスがあります。このクラスにはインスタンス変数が 1 つしかなく、Object 以外のサブクラスになることはできません。LazyMatrix のインスタンス変数はブロックと呼ばれ、バックでなければなりません。LazyMatrix を次のように初期化します。

値を設定する方法があります

このメソッドは、新しいブロックを [#(ij value).[nil]] として設定することにより、ブロックを再定義します。後続の各呼び出しでは、ブロックに 3 の配列が追加されるため、[#(ij 値).[#(ij 値).[nil]]] のように展開され、s 式または「遅延リスト」によく似ています。

したがって、このブロックの先頭 (つまり [#(ij value) ) とこのブロックの末尾 (つまり [#(ij value).[nil]] ) にアクセスする必要があります。これを smalltalk で行うにはどうすればよいですか? ブロックで value を呼び出すと末尾が返されることはわかっています...今度は先頭を返す必要があります。