Data una variabile di tipo Dynamic
, è possibile sfruttare le classi di tipi della variabile interna senza condizionamento del tipo esatto? Ad esempio, supponiamo di voler scrivere una funzione prettyShow
. Se il tipo interno è un'istanza di Show
, dovremmo utilizzare tale istanza; altrimenti, dovremmo utilizzare l'istanza della classe Dynamic
. In codice, questo potrebbe essere simile:Combinazione di dati. Classi dinamiche e di tipo
prettyShow :: Dynamic -> String
prettyShow x = case fromDynamic x :: (forall a. Show a => Maybe a) of
Nothing -> show x
Just y -> show y
Edit: Dal momento che appare questo non può essere fatto direttamente, che cosa sono alcuni buoni soluzione alternativa che si può fare?
In breve, no. Mi piacerebbe che queste informazioni fossero disponibili, ma le informazioni sulla classe sono andate perdute e rimane solo un typerep dopo la compilazione. –
Ma sicuramente potrebbe esserci una grande tabella in memoria da qualche parte che associa ogni typerep con i suoi dizionari di classe. –
... ma non c'è. –