2016-11-10 4 views
2

Можно ли принудительно показать (т. Е. Создать строковое представление) произвольную запись в PureScript для цели отладки, независимо от того, имеет ли она экземпляр класса типа для Show?Force показать запись в PureScript

Я хотел бы показать содержимое Pux Event объекта, но это не имеет Показать экземпляр:

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 
        } 

ответ

5

Вы можете использовать purescript-debug.

+0

Thanks Phil - это самый короткий способ распечатать запись '{a: 1}', делая это: 'traceAny {a: 1} id'? –

3

Вы можете обернуть запись в 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 на MyRecord или show <<< MyRecord на запись.