【问题标题】:Force show a record in PureScript在 PureScript 中强制显示记录
【发布时间】:2016-11-10 15:02:46
【问题描述】:

是否可以在 PureScript 中强制显示(即创建字符串表示形式)任意记录以进行调试,而不管它是否具有 Show 的类型类实例?

我想显示 Pux Event 对象的内容,但它没有 Show 实例:

  No type class instance was found for

    Data.Show.Show { target :: { value :: String
                               , checked :: Boolean
                               }
                   , currentTarget :: { value :: String
                                      , checked :: Boolean
                                      }
                   , altKey :: Boolean
                   , button :: Number
                   , buttons :: Number
                   , clientX :: Number
                   , clientY :: Number
                   , ctrlKey :: Boolean
                   , metaKey :: Boolean
                   , pageX :: Number
                   , pageY :: Number
                   , screenX :: Number
                   , screenY :: Number
                   , shiftKey :: Boolean
                   }

【问题讨论】:

    标签: debugging inspect purescript


    【解决方案1】:

    您可以使用purescript-debug

    【讨论】:

    • 谢谢菲尔 - 是打印记录的最短方法 {a:1} 这样做:traceAny {a:1} id?
    • 当前版本是`trace { a: 1} identity
    【解决方案2】:

    您可以将记录包装在newtype 中并使用Data.Generic 为其派生实例:

    import Data.Generic
    
    newtype MyRecord = MyRecord
                       { target :: { value :: String
                                   , checked :: Boolean
                                   }
                       , currentTarget :: { value :: String
                                          , checked :: Boolean
                                          }
                       , altKey :: Boolean
                       , button :: Number
                       , buttons :: Number
                       , clientX :: Number
                       , clientY :: Number
                       , ctrlKey :: Boolean
                       , metaKey :: Boolean
                       , pageX :: Number
                       , pageY :: Number
                       , screenX :: Number
                       , screenY :: Number
                       , shiftKey :: Boolean
                       }
    
    
    derive instance genericMyRecord :: Generic MyRecord
    
    instance showMyRecord :: Show MyRecord where
        show = gShow
    

    现在您可以在记录上使用show MyRecordshow <<< MyRecord

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2013-11-08
      • 1970-01-01
      相关资源
      最近更新 更多