Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 卡在哈斯克尔';s模块';s输出_Haskell_Module_Io - Fatal编程技术网

Haskell 卡在哈斯克尔';s模块';s输出

Haskell 卡在哈斯克尔';s模块';s输出,haskell,module,io,Haskell,Module,Io,我正在制作生成框图的编程代码。我正在尝试将代码拆分为模块(函数)。第一个模块生成框图。其他模块要求输入块的名称并将其保存为字符串(行),但不允许将这些字符串导出到其他模块(我希望将这些字符串导出为变量,并在其他模块中用作块的名称)。有什么问题吗?也许有人已经发现了同样的问题并找到了解决方案?提前谢谢你! 输入.hs代码: module Input (firstName, secondName, thirdName, fourthName) where import Data.Ch

我正在制作生成框图的编程代码。我正在尝试将代码拆分为模块(函数)。第一个模块生成框图。其他模块要求输入块的名称并将其保存为字符串(行),但不允许将这些字符串导出到其他模块(我希望将这些字符串导出为变量,并在其他模块中用作块的名称)。有什么问题吗?也许有人已经发现了同样的问题并找到了解决方案?提前谢谢你! 输入.hs代码:

   module Input (firstName, secondName, thirdName, fourthName) where 

   import Data.Char 

   main = do  
      putStrLn "Iveskite pirmo bloko pavadinima"  
      firstName <- getLine  
      putStrLn "Iveskite antro bloko pavadinima"  
      secondName <- getLine 
      putStrLn "Iveskite trecio bloko pavadinima"  
      thirdName <- getLine 
      putStrLn "Iveskite ketvirto bloko pavadinima"  
      fourthName <- getLine     
模块输入(第一名、第二名、第三名、第四名),其中
导入数据.Char
main=do
putStrLn“Iveskite pirmo bloko pavadinima”
firstName此行:

module Input (firstName, secondName, thirdName, fourthName) where 
意味着您的源文件将在顶层定义
firstName
secondName

您有
firstName
的定义,但它是在函数
main
中定义的,不能在函数外面看到。

此行:

module Input (firstName, secondName, thirdName, fourthName) where 
意味着您的源文件将在顶层定义
firstName
secondName


您有
firstName
的定义,但它是在函数
main
中定义的,不能在函数外面看到。

当您使用
模块输入(firstName、secondName、thirdName、fourthName)从模块中导出名称时,这些名称必须在顶层定义,因此必须是静态绑定的。相反,你可以这样做

module Input (getNames) where

import Data.Char

getNames :: IO (String, String, String, String)
getNames = do
    putStrLn "Iveskite pirmo bloko pavadinima"  
    firstName <- getLine  
    putStrLn "Iveskite antro bloko pavadinima"  
    secondName <- getLine 
    putStrLn "Iveskite trecio bloko pavadinima"  
    thirdName <- getLine 
    putStrLn "Iveskite ketvirto bloko pavadinima"  
    fourthName <- getLine
    return (firstName, secondName, thirdName, fourthName)
模块输入(getNames),其中
导入数据.Char
getNames::IO(字符串,字符串,字符串,字符串)
getNames=do
putStrLn“Iveskite pirmo bloko pavadinima”

firstName当您使用
模块输入(firstName、secondName、thirdName、fourthName)从模块导出名称时,其中
,这些名称必须在顶层定义,因此必须静态绑定。相反,你可以这样做

module Input (getNames) where

import Data.Char

getNames :: IO (String, String, String, String)
getNames = do
    putStrLn "Iveskite pirmo bloko pavadinima"  
    firstName <- getLine  
    putStrLn "Iveskite antro bloko pavadinima"  
    secondName <- getLine 
    putStrLn "Iveskite trecio bloko pavadinima"  
    thirdName <- getLine 
    putStrLn "Iveskite ketvirto bloko pavadinima"  
    fourthName <- getLine
    return (firstName, secondName, thirdName, fourthName)
模块输入(getNames),其中
导入数据.Char
getNames::IO(字符串,字符串,字符串,字符串)
getNames=do
putStrLn“Iveskite pirmo bloko pavadinima”

firstName您不能在Haskell中使用顶级变量不能依赖于程序中运行的某些IO您不能在Haskell中使用顶级变量不能依赖于程序中运行的某些IO