我想在Haskell(GHCi,实际上)中取一个数字的立方根.在类似Java的东西中,我只是Math.Pow( x, 1.0/3.0)继续前进,但我没有看到在Haskell中如此轻松地做到这一点的方法.
那么,是否有一些简单的习惯用法来取任意实数的任意根?
AFAIK,没有功能来计算标准库中的第n个根.但是你可以使用Java中相同的pow方法
nroot :: Floating a => Int -> a -> a
nroot n x = x ** (1.0 / fromIntegral n)
Run Code Online (Sandbox Code Playgroud)
或者甚至更惯用:
nroot n x = x ** recip n
Run Code Online (Sandbox Code Playgroud)
例:
nroot 4 81.0 -- returns 3.0
Run Code Online (Sandbox Code Playgroud)
该**操作是Java相当于Math.pow和fromIntegral需要从一个int投N到一个浮点值