簡體   English   中英

Haskell - 變量不在 scope 錯誤 - 初學者

[英]Haskell - variable not in scope error - beginner

我是 haskell 的新手,無法弄清楚我的代碼有什么問題。 我不斷從 scope 錯誤中得到一個變量。

這是我使用:load加載到 GHCi 中的代碼

validLength :: String -> Bool
validLength xs | length xs == 26 = True
               | otherwise = False

然后我輸入validLength aa ,它應該返回false,但我得到一個錯誤。

*Main> validLength aa

<interactive>:1:13: error: Variable not in scope: aa :: String

標識符不是字符串。 (這對於 Haskell 來說並不特殊,在大多數其他語言中也是如此。)因此,當您將aa作為參數時,GHC 將其解釋為某個變量的名稱 但是,好吧,沒有那個名字的變量,至少在 scope 中沒有,因此是錯誤的。

如果您實際上要傳遞由兩個a字符組成的字符串,那么您應該使用字符串文字 字符串文字只是雙引號中的字符串(同樣,這與許多其他編程語言中的方式相同)。

*Main> validLength "aa"
False

只需在您的代碼中添加一點內容,不要害怕返回一個表達式或 function 來返回 Boolean 值:

:t (==)
(==) :: Eq a => a -> a -> Bool

所以,

3==4 -> False
length [1,2,3] == 26 -> False

所以你的代碼可能很簡單:

validLength :: String -> Bool
validLength xs = length xs == 26 

或者:

validLength :: String -> Bool
validLength =  (== 26) .  length 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM