[英]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.