問題タブ [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.
emacs - 現在のポイントから最も外側のリストを取得する
Emacs バッファ内のポイント現在位置から、そのポイントを含む最も外側のリスト/s-expression を取得するにはどうすればよいですか?
私が達成したいことを説明するために、いくつかの例に従います。
例 1:
出力 1:
例 2:
出力 2:
例 3:
出力 3:
上記の動作を実現する Emacs が提供する「既製品」の機能はありますか?
そうでない場合は、それを達成するためのより簡単な方法を教えてもらえますか?
更新 #1
提案されたように、次のアプローチを試しました。
ただし、CTRL + PI を押した後、ポイントがどこにあっても出力が得られません。
私は何を間違っていますか?
list - (バインドされていない変数) S 式のリストで関数を使用する (mit-scheme)
S 式のリストで関数を使用しようとしていますが、エラーが発生するだけです"Unbound variable butter"
。
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 つのツリー間を変換するためのより良い解決策を読むことにもオープンです。
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 などは得られません。
haskell - 推移閉包を最適化するには?
最適化したい次のコードがあります。私は nub に特に不満があります:
これを完全に理解するために、それほど長くないすべてのコードを提供します。
f::Exp->Exp を使用している関数 deep と sf について、補足的な質問もあります。結局、f はおそらく f::[Exp]->[Exp] になるはずです。現在、f は 1 種類の変換のみを実行します。最後に、たとえば a+b->b+a、(a+b)+c->a+(b+c) など、さまざまな種類の変換を実行したいと思います。
syntax - Little Schemer の「S 式」述語
リトル・シェイマーは尋ねます。しかし、どのようにテストするのですか?
構文的に、次のような他のステートメントをテストする方法を取得します
と
これをテストする方法が完全にはわかりません...
戻るだけなので...
とにかく、S式をテストする方法を知ることは私を悩ませています
だから、いつものように、どんなイルミネーションも大歓迎です