我试图从用户输入字符串中取出单个字母,按照一组规则然后给出编码字符串。参数采用字符串,密码也是字符串和整数。我在类型匹配方面遇到了一些错误。这是我的代码
@props: background-color, color;
@val: red;
@val2: green;
.properties {...}
.demo {
border-color: @val2;
.properties(@props, @val)
}
.demo2 {
.properties(@props, @val2)
}
这是Cipher encodeMessage :: [Char]->Cipher->Int -> [Char]
encodeMessage (x:xs) [] _ = (x:xs)
encodeMessage (x:xs) cp n
| n>=0 = [(offsetRight (mod n 26) cp)!!((letterToNum x)-1)] ++ encodeMessage(xs cp n)
| otherwise = [(offsetLeft (26-(mod n 26)) cp)!!((letterToNum x)-1)] ++ encodeMessage(xs cp n)
的结构。
这是错误
type Cipher = [Char]
答案 0 :(得分:2)
encodeMessage(xs cp n)
表示函数xs
已应用于cp
和n
,然后将其结果作为单个参数提供给encodeMessage
。嗯,这显然是垃圾,因为xs
根本不是一个功能!此外,encodeMessage
有三个参数,而不是一个,这就是GHC在那里非常清楚地告诉你的。
你显然想要encodeMessage xs cp n
,BTW等同于以下所有内容:
((encodeMessage xs) cp) n
((encodeMessage xs) cp) (n)
((encodeMessage) xs) (cp) n
...
encodeMessage (xs, cp, n)
...或,more precisely,
uncurry (uncurry encodeMessage) ((xs, cp), n)
但它完全不等同于encodeMessage (xs cp n)
。