2
私はShow
クラスのインスタンスを作成しましたが、希望の結果が得られません。私はderiving
言葉を使ってショーのクラスのインスタンスを作成しようとした場合、それは動作しますが、同様にしようとした場合:haskellのインスタンスとインスタンスの相違点
instance Show (SomeValue v) where
show (Null) = "You have no value"
show (Justs v) = show (Justs v)
findKey key = foldr (\(k,v) acc -> if key == k then Justs v else acc) Null
それは(一種の)非終了ループに入ります。私は、上記のコードに何が問題なのかをderiving
という言葉を使って知ると、デフォルトの実装がうまくいくと思いますか?それはコンパイルされますが、何も印刷されません。
このような値を印刷することは可能ですか(「ジャスト」なし)?
instance Show (SomeValue v) where
show (Null) = "You have no value"
show (Justs v) = show (v)
関連:https://stackoverflow.com/questions/28665917/accessing-the-default-show-in-haskell –
@WillemVanOnsem同じではありません。私のデータコンストラクタの場合、私は2つの値しか持たず、これらの値の両方に対してshowを定義していますが、何も出力しません。型の注釈を使って読み込みしようとしましたが、うまくいきません:) –
もちろん何も印刷しない、無限ループに詰まっている。 –