En cuanto a una función en mi código de hoy, me preguntó si era posible combinar combinación parcial y optimización:F #: Aplicación parcial y cálculo previo
let foo (X:float) y1 y2 dx =
y1 + (y2 - y1) * dx/X
Básicamente, la mera aplicación de una relación - por lo que los tres primeros parámetros son generalmente los mismos dentro de un bucle dado.
pensé que tal vez si yo acabo de hacer esto:
let foo2 (X:float) y1 y2 dx =
let dy = (y2 - y1)/X
y1 + dy * dx
F # obtendría inteligente y optimizar para mí cuando parcialmente aplicar los tres primeros parámetros, pero el modo de depuración que no parece ser el caso (aunque no estoy seguro de haberlo probado de la manera correcta).
La pregunta es, ¿debería funcionar? Y si no, ¿hay una forma mejor de hacerlo (aparte de simplemente escribir otra función con dos parámetros)?
Como comentario aparte, esta es la razón por la cual las personas desean, p. un "PureAttribute" en .Net, que podría poner en "Caro" (asumiendo que no se imprimió, a diferencia de mi ejemplo de exposición), para empujar a los compiladores hacia esta optimización. Alternativamente, esta es la razón por la cual a las personas les gusta Haskell, donde todo es puro y los compiladores/tiempos de ejecución tienen permitido 'cache' cualquier llamada a función. Al final del día, mi opinión personal es que la esperanza de que el sistema 'optimizará mágicamente' esto para usted es una quimera. Si quiere que su código sea rápido, deletérelo al Sr. Computadora paso a paso. Los humanos siempre deben hacer el trabajo duro. – Brian
Su velocidad en baudios en este caso fue exactamente la misma que la de mi cerebro :) – Benjol