我想在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)

或更习惯上:
nroot n x = x ** recip n

例:
nroot 4 81.0  -- returns 3.0
**运算符与Java的Math.pow等效,并且fromIntegral必须将n从整数转换为浮点值

10-07 15:14