/*o.      !"#$%&'()*+,-None&'0167;<=>?AQSTV)Q  Used with 9Used to print a container of Records in a tabular format.  data Stock = Stock {price:: Double, ticker:: String} deriving (Show, Data, G.Generic) instance Tabulate Stock DoNotExpandWhenNested -- this can be a Vector or Map let s = [Stock 10.0 "yahoo", Stock 12.0 "goog", Stock 10.0 "amz"] T.printTable s 4Nested records can also be printed in tabular format C data FxCode = USD | EUR deriving (Show, Data, G.Generic) instance e FxCode data Price = Price {px:: Double, fxCode:: FxCode} deriving (Show, Data, G.Generic) instance  Price  o -- since Price will be nested, it also needs an instance of -- CellValueFormatter instance CellValueFormatter Price data Stock = Stock {ticker:: String, price:: Price} deriving (Show, Data, G.Generic) instance Tabulate Stock DoNotExpandWhenNested -- this can be a Vector or Map let s = [Stock "yahoo" (Price 10.0 USD), Stock "ikea" (Price 11.0 EUR)] printTable s  Similar to * but rather than return IO (), returns a Box, object that can be printed later on, using printBoxUsed for printing selected fields from Record types This is useful when Records have a large number of fields and only few fields need to be introspected at any time.!Using the example provided under  printTables, % [DFld (px . price), DFld ticker] s )Same as printTableWithFlds but returns a Box+ object, rather than returning an `IO ()`.Class that implements formatting using printf. Default instances for String, Char, Int, Integer, Double and Float are provided. For types that are not an instance of this class . is used.gClass instance that needs to be instantiated for each record that needs to be printed using printTable g data Stock = Stock {price:: Double, name:: String} derive (Show, G.Generic, Data) instance Tabulate S   If / is embedded inside another Record= type and should be displayed in regular Record Syntax, then  instance Tabulate S   ]Use this flag to not expand a Record type as a table when nested inside another record. The 0 instance of the nested record is used by default without expanding. This means that the fields of the nested record are not displayed as separate headers. TUse this flag to expand a Record Type as a table when nested inside another record.1>Future change to support providing custom formatting functions2Default TabulateValueFormat"JInstance methods to render or print a list of records in a tabular format.    3456789:;<=>?@ABCDCDEFGHIJKLMN1OPQRSTU      !"#$%&'()*+,-./01203401567889:;;<=>?@ABCDEFGHIJKLMNOPQBRSTUVW&pptable-0.3.0.0-BkHD2mruw031l37XqB3DllText.PrettyPrint.Tabulate DisplayFldDFldBoxable printTable renderTableprintTableWithFldsrenderTableWithFldsCellValueFormatterTabulateDoNotExpandWhenNestedExpandWhenNested$fGRecordMetaM1$fGRecordMetaM10$fGRecordMetaM11$fGRecordMeta:+:$fGRecordMeta:*:$fGRecordMetaU1$fTabulateaflag$fRecordMeta'ExpandWhenNesteda $fRecordMetaa$fCellValueFormatterMaybe$fCellValueFormatterBool$fCellValueFormatterDouble$fCellValueFormatter[]$fCellValueFormatterFloat$fCellValueFormatterInt$fCellValueFormatterInteger#$fRecordMeta'DoNotExpandWhenNesteda$fGRecordMetaK1$fCellValueFormatterT$fTabulateTExpandWhenNested$fTabulateT1ExpandWhenNested $fBoxableMap$fBoxableVector $fBoxable[] $fShowTag$fDataT$fShowT $fGenericT$fDataT1$fShowT1 $fGenericT1 $fGenericR2$fShowR2 $fGenericR3$fShowR3baseGHC.Showshow GHC.GenericsSShowTablizeValueFormatgetDefaultTabulateValueFormatR3r31r32R2aT1C2t1bIntbStringTC1aIntaString ppFormatterppFormatterWithStyle RecordMeta'toTree'' RecordMetatoTree' GRecordMetatoTreeTagConstrFieldsValuesfloatValueFormatstringValueFormatintegerValueFormatintValueFormatdoubleValueFormat