对于下面的二次公式,我有多个abutfixed b和c。

我希望编写一个partial application高效执行的函数,即我的函数不会重新计算固定值(因为band c)。
这是我的解决方案
let r b c = let z = b *. b in fun a -> (-.b +. sqrt (z-.4.0*.a*.c))/.(a*.2.0);;
我想这个解决方案可以工作,但我不确定它是否足够有效。我只是做b^2了修复,因为我看到其他部分都带有a.
谁能给我一个更好的解决方案?