首页 > 解决方案 > Haskell 不能传递变量

问题描述

我是 Haskell 的初学者,我在路上遇到了一个相当烦人的颠簸。在我目前的阶段,我只是试图将一个列表从我的主要功能传递到另一个并打印它,我不明白为什么它不起作用。

在我的脑海中,我觉得我应该能够:

    main = do
          putStrLn "-----Text Editor-----" 
          putStrLn "Please enter your text"
          leftString <- getLine
          putStrLn $ "\n\n" ++ leftString ++ "|" 

    moveCursorLeft = do
          putStr $ leftString

但这似乎不起作用,因为“leftString”不在范围内。

标签: haskell

解决方案


函数调用是调用者和被调用者之间的握手:调用者必须传递一些参数,而被调用者必须接受它们。正如您所写,moveCursorLeft不接受任何参数。但别担心,这很容易解决:

    moveCursorLeft leftString = do
        putStr $ leftString

您现在可以在 中使用它main,例如

    main = do
        leftString <- getLine
        putStr "\n\n"
        moveCursorLeft leftString
        putStrLn "|"

推荐阅读