对于以下的除法公式,我有多个a
但fixed
b
和c
。
我希望编写一个有效执行的partial application
函数,即我的函数不会重新计算固定值(因为b
和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
。
任何人都可以给我一个更好的解决方案吗?
答案 0 :(得分:2)
是的,这是处理手头情况的正确方法。 alternate form没有多大帮助(只要获得所需的准确度)。您可能还想将4*c
移出,
let r b c = let z = b *. b and c4 = 4.0 *. c in
fun a -> (-.b +. sqrt (z-.a*.c4))/.(a*.2.0);;