我在编写2个单独的函数时遇到了一些麻烦。其中一个“isWord s”是接受一个单词并且如果单词的所有字符都是小写则返回“true”,否则返回“false”。以下是一个例子:
isWord "foo" = True; isWord "fo3o" = False
必须使用此定义:
isWord :: String -> Bool
isWord s =
另一个函数“prefixWords str strs”,它接受一个单词和一个单词列表,并将两个单词组合在一个列表中,每个单词之间带有一个“:”。以下显示为例:
prefixWords "word:" ["aa", "a3", "foo"] = ["word:aa", "word:foo"]
必须使用此定义:
prefixWords :: String -> [String] -> [String]
prefixWords str strs =
我非常感谢任何帮助,因为我是Haskell的新手,并且不知道从哪里开始。谢谢!
答案 0 :(得分:1)
由于这显然是家庭作业,我不会给你答案,只是一个大的轻推。
首先,String
只是[Char]
的同义词。
这些功能可能会有所帮助:
(++) :: [a] -> [a] -> [a]
这将连接两个列表或字符串。
import Data.Char
isLower :: Char -> Bool
这将测试Char
是否为小写
all :: (a -> Bool) -> [a] -> Bool
这将测试所有列表元素是否满足谓词。
map :: (a -> b) -> [a] -> [b]
这将函数应用于列表的所有元素。
对于您的函数isWord
,您需要检查字符串元素的all
是否为isLower
。
对于函数prefixWords
,每个元素都与给定的字符串连接。