「唯一の可能性のあるインスタンスを使用する」というタイプクラスメソッドのためのHaskell言語拡張はありますか?あいまいなタイプのデフォルトインスタンスを選択
私は、次の
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
class Foo a r where
foo :: a -> r
instance Foo a (Bool -> a) where
foo x _ = x
-- This compiles
-- bar :: Int -> Bool
-- This does not
bar :: a -> Bool
bar _ = True
use :: Bool
use = bar $ foo _5 True
where
_5 :: Int
_5 = 5
をコンパイルしたい今、私は次のエラーを取得:
No instance for (Foo Int (Bool -> r0))
(maybe you haven't applied enough arguments to a function?)
arising from a use of ‘foo’
The type variable ‘r0’ is ambiguous
Note: there is a potential instance available:
instance Foo a (Bool -> a) -- Defined at tests/pos/Fixme.hs:9:10
をしかし、一つだけの潜在的インスタンスが利用可能であることから、使用するGHCを強制する方法がありますそのインスタンス?または、型があいまいであるときに、既定のインスタンスとしてインスタンスを宣言する方法がありますか?
このtypeclass +インスタンスは私をひどくします。ここに正しいことを表現していますか? –