【问题标题】:access type variable values in instance declaration在实例声明中访问类型变量值
【发布时间】:2020-08-21 23:14:28
【问题描述】:

我有一个 newtype 包装函数

newtype Operation a b = Operation (a -> b)

我想为此数据类型编写一个Show 实例,提供"Operation(Int -> String)" 之类的信息。为此,我需要在show 的实现中访问类型变量ab 的值。这可能吗?

我会说不,但 Haskell 从来没有停下来让我吃惊,所以我想我可能会问

【问题讨论】:

    标签: haskell


    【解决方案1】:

    首先让我说这是一个坏主意:Show 实例实际上应该为您提供内容/值,而不仅仅是有关类型的信息。

    不管怎样……

    import Data.Typeable
    
    instance (Typeable a, Typeable b) => Show (Operation a b) where
      show (Operation f) = "«Operation("++show (typeOf f)++")»"
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-16
    • 2014-03-16
    • 2018-04-05
    • 2012-11-28
    • 1970-01-01
    • 2018-08-07
    • 2019-02-27
    • 2014-03-04
    相关资源
    最近更新 更多