Haskell 我需要一个函数来将任何输入的小写字母(并且只能是一个)更改为字符串列表

Haskell 我需要一个函数来将任何输入的小写字母(并且只能是一个)更改为字符串列表,haskell,Haskell,我需要一个函数来将任何输入的小写字母(并且只能是一个)更改为字符串列表。以下是我到目前为止的情况: letter :: char -> [String] letter a = (["AAA","A A"]) letter b = (["BBB","BBBB"]) 当我输入“b”时,它仍然会给我a的输出,即 letter 'b' ["AAA","A A"] 为什么会这样?您有几个问题。GHC应该给您一个关于字母的重叠定义的警告,这应该提醒您: a和b是模式,而不是字符'a'和'b

我需要一个函数来将任何输入的小写字母(并且只能是一个)更改为字符串列表。以下是我到目前为止的情况:

letter :: char -> [String] 
letter a = (["AAA","A A"])
letter b = (["BBB","BBBB"])
当我输入“b”时,它仍然会给我a的输出,即

  letter 'b'
 ["AAA","A A"]

为什么会这样?

您有几个问题。GHC应该给您一个关于
字母
的重叠定义的警告,这应该提醒您:

a
b
是模式,而不是字符
'a'
'b'

你需要的东西更像:

letter :: Char -> [String] 
letter 'a' = ["AAA","A A"]
letter 'b' = ["BBB","BBBB"]
还有其他选项,如模式保护或case语句,但这里简单的模式匹配似乎最简单


还要注意
Char
上的大写字母。以字母开头的类型必须是大写。

谢谢@karakfa,我注意到就在你发表评论之前的一秒钟。是的,我正在“尝试”使用
up::Char->Char up x=chr((ord x)-32)
将小写改为大写,并将其用作辅助功能以补偿大写。我该如何使用此函数中的up函数来执行此操作?我还遇到了以下错误:
推断类型不够通用***表达式:字母***预期类型:a->[String]***推断类型:Char->[String]