简体   繁体   English

Force在PureScript中显示记录

[英]Force show a record in PureScript

Is it possible to force-show (ie, create a string representation) an arbitrary record in PureScript for debugging purpose regardless of it having a type-class instance for Show ? 是否可以在PureScript中强制显示(即创建字符串表示形式)任意记录以进行调试,而不管它是否具有Show的类型类实例?

I would like to show the contents of the Pux Event object but it does not have a Show instance: 我想显示Pux事件对象的内容,但它没有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
                   }

你可以使用purescript-debug

You can wrap a record in a newtype and use Data.Generic to derive the instance for it: 您可以在包裹记录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

Now you can use show on MyRecord or show <<< MyRecord on the record. 现在你可以在MyRecord上使用show或在记录上show <<< MyRecord

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM