me gustaría hacer applyAndTruncate
oculta del mundo exterior (es decir, de nada fuera del módulo Scoring
), ya que en realidad sólo lo uso como columna vertebral de bestKPercent
y worstKPercent
. ¿Es posible ocultarlo? Si no, ¿cuál es la forma más fácil de lograr lo que quiero hacer?¿Es posible tener funciones privadas (definiciones de let) en módulos F #?
module Scoring
let applyAndTruncate f percentage (scoredPopulation:ScoredPopulation) : ScoredPopulation =
if (percentage < 0.0 || percentage > 1.0) then
failwith "percentage must be a number between 0.0 and 1.0"
let k = (int)(percentage * (double)(Array.length scoredPopulation))
scoredPopulation
|> f
|> Seq.truncate k
|> Seq.toArray
let bestKPercent = applyAndTruncate sortByScoreDesc
let worstKPercent = applyAndTruncate sortByScoreAsc
casi no sé nada de F #, pero quizás [la F # spec] (http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html#_Toc270597594) es útil. Parece que puedes agregar anotaciones de accesibilidad para dejar las fijaciones. –