在 PureScript 中强制显示记录
Force show a record in PureScript
是否可以强制显示(即创建字符串表示)PureScript 中的任意记录以进行调试,而不管它是否具有 Show
的类型 class 实例?
我想显示 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
}
您可以将记录包装在 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
现在您可以在 MyRecord
或 show <<< MyRecord
上使用 show
记录。
您可以使用 purescript-debug
.
是否可以强制显示(即创建字符串表示)PureScript 中的任意记录以进行调试,而不管它是否具有 Show
的类型 class 实例?
我想显示 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
}
您可以将记录包装在 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
现在您可以在 MyRecord
或 show <<< MyRecord
上使用 show
记录。
您可以使用 purescript-debug
.