7
は、どのようにそれが類義語はどのように正確に機能しますか?
setFunFoo :: ((Foo a) => a -> IO()) -> Bar -> Bar
にsetFunFooを型シグネチャをオフに変更する場合は、次のタイプをチェックし
{-# LANGUAGE RankNTypes #-}
module Main where
class Foo a where
type FunFoo = (Foo a) => a -> IO()
data Bar = Bar {
funFoo :: FunFoo
}
setFunFoo :: FunFoo -> Bar -> Bar
setFunFoo action bar = bar {funFoo = action}
それがないことを、来るのでしょうか? FunFooという同義語なしで上記のコードを表現する方法はありますか?
ランクn型を使用することは確かですか?これは、タイプ同義語がどのように機能するかを尋ねる人にとって、かなり高度なトピックです。 –