我正在訓練haskell,我想知道我哪里出錯了。
錯誤是臭名昭著的“變數不在范圍內”
背景關系是確定一個句子是否是一個 pangram。pangram(希臘語:παν γρ?μμα,pan gramma,“每個字母”)是使用字母表中的每個字母至少一次的句子。
例如:
敏捷的棕色狐貍跳過了懶狗。
這是代碼:
module Pangram (isPangram) where
isFalse n = n == False
transformText :: String -> [Bool]
transformText text = [letter elem alphabet | letter <-text] where alphabet = "abcdefghijklmnopqrstuvwxyz"
isPangram :: String -> Bool
isPangram [] = False
isPangram text = case test of
Just _ -> False
Nothing -> True
where test = find isFalse (transformText text)
uj5u.com熱心網友回復:
應該與零件where系結case,所以:
isPangram :: String -> Bool
isPangram [] = False
isPangram text = case test of
Just _ -> False
Nothing -> True
where test = find isFalse (transformText text)
但是,您可以簡化這一點。isFalse相當于not :: Bool。
您的程式也不會測驗是否使用了每個字母,它會檢查字串中的每個專案是否都是字母。
您可以將測驗替換為:
isPangram :: String -> Bool
isPangram text = all (`elem` text) ['a' .. 'z']
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/428360.html
上一篇:必須手動打開量化型別類證據?
