Haskell-如何将函数的返回值存储到变量?

时间:2018-10-10 06:38:47

标签: haskell

我在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中的变量?

1 个答案:

答案 0 :(得分:9)

与您在rest中使用doCal进行操作的方式相同。

main = do
   list <- doCal

但是您还需要让main做一些事情并返回一个值。所以你可以写

main = do
   list <- doCal
   print list

这将起作用,因为print list返回(),这是Haskell中的值(它只是该类型的唯一值)。