[英]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.