Haskell中整数的位数

Haskell中整数的位数,haskell,Haskell,经典问题,但这次在哈斯克尔。我试着用C的方式来做,但是我一直得到这个错误 Variable not in scope: numDigits :: Integer -> t 这是我写的代码 numDigits :: Integer -> Integer numDigits n = toInteger (round (logBase 10 (fromIntegral n)) + 1) 我做错什么了吗?或者记录,仅供参考,我投票关闭,因为您输入了错误或未能向我们提供实际失败的代码。所讨

经典问题,但这次在哈斯克尔。我试着用C的方式来做,但是我一直得到这个错误

Variable not in scope: numDigits :: Integer -> t
这是我写的代码

numDigits :: Integer -> Integer
numDigits n = toInteger (round (logBase 10 (fromIntegral n)) + 1)

我做错什么了吗?或者记录,仅供参考,我投票关闭,因为您输入了错误或未能向我们提供实际失败的代码。所讨论的代码是有效的,但是您应该指定如何加载它以及如何调用它

用于演示:

% cat so.hs
numDigits :: Integer -> Integer
numDigits n = toInteger (round (logBase 10 (fromIntegral n)) + 1)
% ghci so.hs
GHCi, version 8.0.1: http://www.haskell.org/ghc/  :? for help
Loaded GHCi configuration from /Users/tommd/.ghci
[1 of 1] Compiling Main             ( so.hs, interpreted )
Ok, modules loaded: Main.
*Main> numDigits 1948
4

toInteger
的签名是什么?不记得了。另外,为什么不将其定义为
length呢。show
?toInteger因为log Base 10返回一个Double我想?你是在REPL中还是在源文件中这样做?但是你是在试图在终端中用GHCI编写此代码吗?它实际上是说
Integer->t
,还是在我的机器上输入了
9999
,这是一个打字错误,算法是劣质的,但问题是如何在repl中加载和测试代码。