問題タブ [infix-operator]
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.
scala - 自動数値変換付き中置演算子
この単純化された (そしてやや不自然な) 例は、私が探しているものにかなり近いものです。
これで私はできる:
しかし、私は不思議に思う必要があります:
すべての結果は Double です。標準ライブラリの自動数値変換を真似できますか?
/li>より良い方法はありますか?(常により良い方法があります。)
haskell - <$> は右結合ではないのに、なぜ f <$> g <$> x は (f . g) <$> x と同等なのですか?
右結合ではないのに、なぜf <$> g <$> x
同等なのですか?(f . g) <$> x
<$>
(この種の同等性は、plain を使用した一般的なイディオム$
で有効ですが、現在$
は右結合です!)
<*>
の結合性と優先順位は と同じ<$>
ですが、動作が異なります。
例:
の定義から、私も失敗する<$>
と予想されます。show <$> show <$> Just 3
rust - 中置演算子の特性を再定義する
Add
中置演算子として使用できるように、特性を再定義しようとしています。
機能を追加するために演算子をAdd
使用するように特性を再定義することは可能ですか?+
c# - 数式パーサーの右結合演算子
最後に、この質問から来ると、このサブパーサーという問題が残ります...
...指数演算子 ("^") を正しく処理しません。これは、右結合であるためです。上記のコードは、連想のままであるかのように処理します。
例: テキストe^x^2
は として解釈され(e^x)^2
ます。ただし、正しい「解釈」はe^(x^2)
.
私はすでに次のようなことを試しました:
これは、2 つの連続した「^」式に対してのみ機能します。のようなものではありませんe^x^y^z
(パーサーが主張するようなものではe^(x^(y^z))
ありませんe^((x^y)^z)
...何が欠けていますか?
swift - Swift: 中置演算子/最上位関数を使用したリリース ビルドでのクラッシュ
2 つの Optional, Equatable 値を比較するために、Swift で中置演算子を作成しました (これは一般的に行う必要があることです)。
ものすごく単純。
への準拠User
の一部として、この中置演算子を利用する型があります。Equatable
==
ご覧のとおり、中置演算子を使用して相互に比較する必要があるオプションのパラメーターがいくつかあります。構成を使用してビルドするdebug
と、すべて正常に動作します。ただし、構成を使用してビルドするとrelease
、次のクラッシュが発生します (Fabric/Crashlytics を介して報告されます)。
EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x4000000000000000
スタック トレースは長いですが、関連するクラッシュは次の場所で発生しています。
line 24
に直接対応しpublic func ==(lhs: User, rhs: User) -> Bool {
ます。中置演算子を削除する==?
と、クラッシュは発生しません。
中置演算子をトップ レベルの関数public func ==(lhs: User, rhs: User) -> Bool {...}
(とまったく同じ実装==?
) に置き換えると、引き続きクラッシュが発生します。したがって、中置演算子に固有のものではありません。
繰り返しますが、これは Swift 1.2 のリリース ビルドでのみ発生します。Swift 2 はベータ版ではないため使用できません。回答として送信しないでください。
アップデート
問題はモジュールに関連しているようです。中置演算子と最上位関数は、ファイルUtilities
にインポートしていたという別のモジュールで定義されていました。User.swift
関数を同じファイルに移動しようとしましたisEqual
が、クラッシュは発生しなくなりました。しかし、私はむしろ正しいモジュールに機能を持たせたいと思っています。
r - 数式内で使用する中置演算子の定義
このソリューションのより倹約的なバージョンを作成しようとしています。これには、式の RHS を形式で指定する必要がありd1 + d1:d2
ます。
数式のコンテキストでは、完全な相互作用 (つまり、を与える)*
の簡潔な代役であることを考えると、私のアプローチは、代替演算子を試して定義することでした。たとえば、他のアプリケーションで慣れてきた中置アプローチを使用して、ラ:d1 * d2
d1 + d2 + d1:d2
%+:%
ただし、評価に注意を払っていないため、これは予想どおり失敗します。私の進歩を説明するために例を紹介しましょう:
この例で、2 つの用語を単純に書き出すことが望ましくない理由が明確になることを願っています。
目的の出力に近い回避策の 1 つは、式全体を関数として定義することです。
これは、 に渡されたときに予想される係数を与えますが、lm
直接解釈するのが難しい名前が付いています (特に、この一般的な例とは対照的に、注意を払って説明的な名前を付ける実際のデータでは) d1
:d2
したがって、これは最適とは言えません。
上記の中置演算子が期待どおりに機能するように、コードの調整を定義する方法はありますか? plus.times
変数の名前が変更されないようにの形式を変更するのはどうですか?
( ?formula
、?"~"
、?":"
、この回答など) を調べてきましたが、式で R が検出されたときに R がどのように解釈するかを正確に確認していないgetAnywhere(formula.default)
ため、必要な微調整を行うことができます。*