在Haskell中,获取实数的最直接方法是什么?

Joh*_*nL4 2 haskell

我想在Haskell(GHCi,实际上)中取一个数字的立方根.在类似Java的东西中,我只是Math.Pow( x, 1.0/3.0)继续前进,但我没有看到在Haskell中如此轻松地做到这一点的方法.

那么,是否有一些简单的习惯用法来取任意实数的任意根?

hug*_*omg 6

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到一个浮点值