En primer lugar, me disculpo por el título pobre: no entiendo lo suficiente F # para describir mejor el problema.Comparación de instancias sindicales discriminadas F # mediante la coincidencia de patrones
consideran este sencillo DU:
type Money =
| USD of decimal
| GBP of decimal
| EUR of decimal
static member (+) (first: Money, second: Money) =
match first, second with
| USD(x), USD(y) -> USD(x + y)
| GBP(x), GBP(y) -> GBP(x + y)
| EUR(x), EUR(y) -> EUR(x + y)
| _ -> failwith "Different currencies"
Estoy representando el dinero en diferentes monedas, y la sobrecarga de la (+) operador, de modo que pueda hacer dinero de forma segura + dinero. Sin embargo, si tengo muchas monedas, la declaración del partido será tediosa de escribir. ¿Hay alguna forma de expresar algo así como:
match first, second with
| _(x), _(y) -> _(x + y)
¿O existe una forma diferente de lograr el mismo resultado? He considerado y descartado unidades de medida debido a las limitaciones descritas here.
¿No deberías estar usando unidades de medida para esto en F #? –
Me encantaría usar unidades de medida, pero debido a que la medida se borra durante el tiempo de ejecución, no me ofrece seguridad cuando leo datos de fuentes externas (consulte la pregunta relacionada). ¡Me encantaría que se demuestre que estoy equivocado! – Akash