visual studio microsoft español descargar community f# functional-programming unit-type

f# - microsoft - visual studio installer



F#- ¿Función sin argumentos? (2)

Creo que lo que quieres es flojo .

let resource = lazy( // expensive value init here )

Luego, cuando necesites leer el valor ...

resource.Value

Si nunca llama a la propiedad Value, el código dentro del bloque lazy nunca se ejecuta, pero si lo hace, ese código se ejecutará no más de una vez.

Al pensar en una mentalidad funcional, dado que se supone que las funciones son puras, se puede concluir que cualquier función sin argumentos es básicamente un valor.
Sin embargo, la realidad se interpone en el camino, y con diferentes entradas, puede que no necesite una determinada función, y si esa función es computacionalmente costosa, me gustaría no evaluarla si no es necesaria.
Encontré una solución, usando let func _ = ... y llamándolo con func 1 o lo que sea, pero eso se siente muy poco idiomático y confuso para el lector.

Esto se reduce a una pregunta: En F #, ¿hay una forma adecuada de declarar una función con cero argumentos, sin tenerla evaluada en la declaración?


La expresión habitual es definir la función para tomar un argumento de tipo Unidad ( let functionName () = 42 ). Luego se llamará como functionName () . (El tipo de unidad tiene solo un valor, que es () )