haskell-jp / random #87 at 2021-02-13 12:38:39 +0900

Haskellで型クラス実装されてなくても動くような、いわゆるSoft Constraintsの言語拡張って難しいんでしょうか?
(!) :: (Show? key, Ord key) => Map key value -> key -> value
(!) m key = case lookup key m of
  Just value -> value
  Nothing -> case show? of
    Nothing -> error $ "no value for key"
    Just fshow -> error $ "no value for key: "++ fshow key

>>> empty ! "hoge"
Error: no value for key: "hoge"
>>> newtype T = T Int deriving(Eq,Ord)
>>> empty ! (T 10)
Error: no value for key
あったら便利そうですね。力技ですが https://github.com/mikeizbicki/ifcxt こういうのはあります
ifcxt面白いですね。IfCxtのインスタンスをGHCが自動生成するようにするのが筋が良さそうな気がしますね。
こういうのちょくちょく欲しくなりますね