我在Haskell中编写了一个函数以返回列表。我想获取函数的返回值并存储在另一个变量中,以备将来使用。我写的代码如下
module Main
where
import System.IO
main =do
let list=doCal
doCal =do
hSetBuffering stdin LineBuffering
putStrLn "Give me a number (or 0 to stop):"
num <- getLine
let number = read num
if number==0
then
return []
else do
rest <-doCal
return (number:rest)
当我尝试运行此程序时,出现错误
Cal.hs:7:9: error:
The last statement in a 'do' block must be an expression
let list = doCal
|
7 | let list=doCal
| ^^^^^^^^^^^^^^
Failed, no modules loaded.
如何将函数的返回值存储到Haskell中的变量?
答案 0 :(得分:9)
与您在rest
中使用doCal
进行操作的方式相同。
main = do
list <- doCal
但是您还需要让main
做一些事情并返回一个值。所以你可以写
main = do
list <- doCal
print list
这将起作用,因为print list
返回()
,这是Haskell中的值(它只是该类型的唯一值)。