show
ですが、Show
クラス制約がないmaybeShow
関数を書き込もうとしています。ここに私の試みがあります:クラス制約上の書き換えルール
しかし、このコードでは、書き換えルールは決して始動しないようです。
これは時々、表示可能なタイプのためにNothing
を返すことがわかります。たとえば、Nothing
を返す特定の型に特化していない非インライン関数では、maybeShow
の使用を完全に想定しています。しかし、error
の出力に何かを追加するためにmaybeShow
を使用しているので、それが必ずしもうまくいかないかどうかは関係ありません。
しかし、現時点ではそうではないように(たとえば、呼び出し関数にインライン展開されたときなど)、時にはうまく動作したいと思います。
書き換えルールを起動する方法についてのアイデアはありますか?これはwiki.haskell.orgに書いてありますが、GHC 6.6のアドバイスからはまだ有効であるかどうかはわかりません。
リンクされたページが示すように、辞書が展開された後に規則が適用され、その後単純な構文チェックになるため、条件の存在を条件として条件付きで作成することはできません。 –
あなたは何をしようとしているのか説明できますか? –
show制約を必要とせずにデバッグ目的の変数を表示します( 'error'呼び出し)。 – Clinton