問題タブ [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 投票する
2 に答える
106 参照

emacs - 現在のポイントから最も外側のリストを取得する

Emacs バッファ内のポイント現在位置から、そのポイントを含む最も外側のリスト/s-expression を取得するにはどうすればよいですか?
私が達成したいことを説明するために、いくつかの例に従います。

例 1:

出力 1:

例 2:

出力 2:

例 3:

出力 3:

上記の動作を実現する Emacs が提供する「既製品」の機能はありますか?
そうでない場合は、それを達成するためのより簡単な方法を教えてもらえますか?

更新 #1

提案されたように、次のアプローチを試しました。

ただし、CTRL + PI を押した後、ポイントがどこにあっても出力が得られません。
私は何を間違っていますか?

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

list - (バインドされていない変数) S 式のリストで関数を使用する (mit-scheme)

S 式のリストで関数を使用しようとしていますが、エラーが発生するだけです"Unbound variable butter"

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

compiler-construction - OCaml の S 式ツリーから抽象構文ツリーへ

OCaml でシンボリック言語を実装しており、S 式ツリーを抽象構文ツリーに変換するのに苦労しています。

s式ツリーは

抽象構文木は

関数ast_of_sexprは型シグネチャに準拠する必要があります

val ast_of_sexpr : Sexpr.expr -> expr.

これは私の挑戦です。型シグネチャに準拠し、s-expression ツリー (つまり、ネストされたリスト) に再帰し、s-expression ツリー ノードを抽象構文ツリー ノードに変換する方法がわかりません。

理想的な世界では、1 つの式でリストの先頭を評価し、末尾を再帰できます。シーケンスを使用して、この理想をエミュレートしようとしました。しかしもちろん、これは左側の値を無視し、解析されたトークンのストリームを出力するときに最後の値のみを出力します。

value を無視せずにリスト ヘッドを評価し、s-expression ツリーを深く再帰する方法を提案できる人はいますか? 私は、2 つのツリー間を変換するためのより良い解決策を読むことにもオープンです。

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

haskell - Haskell を使用した数式の近傍

数式を操作するアルゴリズムを Haskell で実装しようとしています。私はこのデータ型を持っています:

私の質問にはこれで十分です。

一連の式変換が与えられた場合、たとえば次のようになります。

(ab を追加) => (ba を追加)

(Add (Add ab) c) => (Add a (Add bc))

x = (Add (Add xy) (Add zt)) のような式で、x の近傍にあるすべての式を見つけたいと考えています。x の近傍が y in Neighborhood(x) として定義されている場合、x から 1 回の変換で y に到達できる場合。

私はHaskellが初めてです。Haskell がこの仕事に適したツールであるかどうかさえ確信が持てません。

最終的な目標は、x と等価なすべての式のセットを返す関数 : 等価 x を取得することです。言い換えれば、x の近傍の閉包にあるすべての式のセット (変換のセットが与えられた場合)。

現在、私は次のものを持っています:

しかし、おそらく必要以上に遅く (nub は O(n^2))、いくつかの用語が欠落しています。

たとえば、f = (x+y)+z の場合、(x+z)+y などは得られません。

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

haskell - 推移閉包を最適化するには?

最適化したい次のコードがあります。私は nub に特に不満があります:

これを完全に理解するために、それほど長くないすべてのコードを提供します。

f::Exp->Exp を使用している関数 deep と sf について、補足的な質問もあります。結局、f はおそらく f::[Exp]->[Exp] になるはずです。現在、f は 1 種類の変換のみを実行します。最後に、たとえば a+b->b+a、(a+b)+c->a+(b+c) など、さまざまな種類の変換を実行したいと思います。

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

syntax - Little Schemer の「S 式」述語

リトル・シェイマーは尋ねます。しかし、どのようにテストするのですか?


構文的に、次のような他のステートメントをテストする方法を取得します

これをテストする方法が完全にはわかりません...

戻るだけなので...

とにかく、S式をテストする方法を知ることは私を悩ませています

だから、いつものように、どんなイルミネーションも大歓迎です