2017-01-24 4 views
2

私が理解するように、単項マイナスはハスケルの唯一の単項演算子であり、Numnegateにバインドされていますか?単精度マイナスを別の型クラスのnegateに再バインドする方法はありますか?単項マイナス(否定)をNumとは別の型クラスに再バインドする方法はありますか?

+0

プレリュード( '-XNoImplicitPrelude')を避けて、必要に応じて定義することができます。問題は、ほとんどのライブラリが暗黙のうちに前奏曲に依存しているために非常に孤独になるということです。 – hao

+0

私はインポート中にネゲートを隠すだけでうまくいきませんでした。 –

+0

ああ待って、忘れてしまった。私を無視! – hao

答えて

4

お試しthe RebindableSyntax extensionこれは、単項マイナスが範囲内にある「否定」を参照することを許可します。 docs sayとおり

  • 否定(例えばする「 - (F X)」)、「ネゲート(F Xの)」とは、両方の数値パターン、および式で。

コンパイラは、ハードコードされ、この規則を持っていますが、限り、暗黙のうちにNoImplicitPreludeをオンにRebindableSyntaxにあなた

  • 電源を入れ、別段説得することができます。
  • Preludeをインポートするときにデフォルトのnegateを非表示にします。そして
  • 範囲内に独自のnegateを定義します。
+0

私は否定とは別にたくさんのことを定義しなければならないようです。 ifThenElse(パターンマッチングを使用)とfromStringのインポートも定義する必要がありましたが、今は動作します。ありがとう。 ...そして、実際にifThenElseというグローバルスタンダードを使用するのではなく、私のDSLのtypeclass定義の一部とすることができたのです。それはかなりきれいです。 –

+1

再バインド可能な構文は驚くほど良いアイデアです! – hao

関連する問題