我正在玩箭头,为此,我尝试编写一个跟踪其输入和输出的函数。它没有用,因为我在实例化Arrow类时最终需要对我的类型的参数进行Show约束。无论如何,我的问题如下,有没有办法创建一个showlike
函数,如果可能的话使用show
,如果没有则使用默认字符串。
我尝试了以下(使用类型系列),但它不起作用
{-# TypeFamilies #-}
type family ToShow where
Show a => ToShow a = a -- doesn't compile
ToShow a = ()
toShow :: a -> ToShow a
toShow x = ???
show' :: a -> String
show' = show . toShow
知道这是否可行?