@@ -24,60 +24,6 @@ object NamedTupleIteratorExtensions:
2424
2525 extension [K <: Tuple , V <: Tuple ](itr : Iterator [NamedTuple [K , V ]])
2626
27- inline def numericTypeTest : (List [ConversionAcc ], Long ) =
28- val headers = constValueTuple[K ].toList.map(_.toString())
29- val headerAcc = headers.map(_ => ConversionAcc (0 , 0 , 0 ))
30-
31- itr.foldLeft[List [ConversionAcc ] *: Long *: EmptyTuple ]((headerAcc, 0L )) { case (acc : (List [ConversionAcc ], Long ), elem : NamedTuple [K , V ]) =>
32- val list = elem.toList
33- .asInstanceOf [List [String ]]
34- .zip(acc._1)
35- .map { case (str, acc) =>
36- (
37- ConversionAcc (
38- acc.validInts + str.toIntOption.fold(0 )(_ => 1 ),
39- acc.validDoubles + str.toDoubleOption.fold(0 )(_ => 1 ),
40- acc.validLongs + str.toLongOption.fold(0 )(_ => 1 )
41- )
42- )
43- }
44-
45- (list, acc._2 + 1L )
46-
47- }
48- end numericTypeTest
49-
50- inline def formatTypeTest : String =
51- val headers = constValueTuple[K ].toList.map(_.toString())
52- val (asList, n) = numericTypeTest
53- val intReport = (
54- " int" *: listToTuple(
55- for (acc <- asList) yield (acc.validInts / n.toDouble).formatAsPercentage
56- )
57- )
58- val doubleReported = " doubles" *: listToTuple(
59- for (acc <- asList) yield (acc.validDoubles / n.toDouble).formatAsPercentage
60- )
61- val longReported = " long" *: listToTuple(
62- for (acc <- asList) yield (acc.validLongs / n.toDouble).formatAsPercentage
63- )
64- val recommendation = " recommendation" *: listToTuple(
65- for (acc <- asList) yield recommendConversion(List (acc), n)
66- )
67-
68- val ntList = Seq (
69- intReport,
70- doubleReported,
71- longReported,
72- recommendation
73- )
74-
75- ConsoleFormat .consoleFormat_(headers = " conversion % to" +: headers, fancy = true , table = ntList)
76- end formatTypeTest
77-
78- inline def showTypeTest : Unit =
79- println(formatTypeTest)
80-
8127 inline def sample (frac : Double , inline deterministic : Boolean = false ): Iterator [NamedTuple [K , V ]] =
8228 if deterministic then itr.zipWithIndex.filter { case (_, idx) => idx % (1 / frac) == 0 }.map(_._1)
8329 else itr.filter(_ => rand.nextDouble() < frac)
0 commit comments