如何修复缩进?Haskell:输入`';
所以我得到了一个错误:如何修复缩进?Haskell:输入`';,haskell,Haskell,所以我得到了一个错误: error: parse error on input `|' | x == 'a' = True 守则本身是: module SubstitutionCiphers where import AssignmentHelp.Cipher validateCipher :: Cipher -> Boolean validateCipher "" = False validateCipher (x:xs) | x == 'a' = Tru
error:
parse error on input `|'
| x == 'a' = True
守则本身是:
module SubstitutionCiphers where
import AssignmentHelp.Cipher
validateCipher :: Cipher -> Boolean
validateCipher "" = False
validateCipher (x:xs)
| x == 'a' = True
| otherwise = validateCipher xs
我试着以各种不同的方式交替压痕,但似乎没有任何效果。我想这仍然是一个缩进问题,但我不知道如何解决它。您不应该缩进签名下面的部分。只需这样写:
validateCipher :: Cipher -> Bool
validateCipher "" = False
validateCipher (x:xs)
| x == 'a' = True
| otherwise = validateCipher xs
或者,您可以通过以下方式进行检查:
validateCipher :: Cipher -> Bool
validateCipher = elem 'a'
当您缩进定义的第一行时,解析器(在此上下文中)认为您在继续上一行,就好像您编写了
validateCipher :: Cipher -> Bool validateCipher "" = False -- etc
这一点通过一个更简单的定义变得显而易见
validateCipher :: String -> Bool
validateCipher _ = True
因为解析器能够接受这一点。但是,类型签名的结果位置无效
<interactive>:11:1: error:
Illegal type signature: ‘String -> Bool validateCipher _’
Type signatures are only allowed in patterns with ScopedTypeVariables
请不要在签名下缩进零件。
validateCipher :: Cipher -> Bool
validateCipher "" = False
validateCipher (x:xs)
| x == 'a' = True
| otherwise = validateCipher xs