我已经编程了一个非常基本的递归功能,但是当我尝试使用它时,哈斯克尔给了我一个错误。
这是代码:
import Data.Char
import Test.QuickCheck
potencia :: Integer -> Integer -> Integer
potencia x 0 = 1
potencia x n = x*(potencia x (n-1))
这是错误:
<interactive>:27:1-8: error:
Variable not in scope: potencia :: Integer -> Integer -> t
如果我删除了库的导入,它不再给我错误,但我需要以后再带来错误。我使用的是Haskell平台的最新版本。
我看到您在交互式外壳中定义了您的功能。Haskell的大多数REPL读取和评估指令逐条排列,因此,当您键入potencia :: Integer -> Integer -> Integer
时,它将被解释此刻,因此编译器抱怨Potnencia缺乏实现。您应该:
- 将其定义在外部文件中,然后使用
:l
(推荐)加载 - 类型
:set +m
并使用let
语句来定义有关凹痕的变量 - 用
:{
和:}
包围定义 - 将整个定义和声明放在一行中,用
;
将每个部分分开