练习 4 .编写一个函数,它接受一个字符串,如果该字符串返回 True 为“hello”,否则为 False。这可以通过指定每个 列表模式中字符串的元素(例如 'h':'i':[])。 ,第 19 页,使用计算机进行离散数学,Donell、Hall 和 Rex
之前的练习是一个更简单的问题,如下:
Ex 3. 编写一个函数,它接受一个字符,如果满足则返回 True 字符为 'a',否则为 False。
我用代码解决了这个问题:
f :: Char -> Bool
f 'a' = True
f x = False
我想这个问题,应该类似于:
f :: [Char] -> Bool
f 'hello' = True
f x = False
现在,上面的代码在我加载时不起作用。我猜我们不能直接计算字符串上的函数,为什么?
'hello'
没有任何意义,'x'
是一个字符,一个Char
,所以不能包含多个字符。您可以将其写为 "hello"
、['h', 'e', 'l', 'l', 'o']
或 'h' : 'e' : 'l' : 'l' : 'o' : []
,它们都是相同的表达式,因此:
f :: [Char] -> Bool
f "hello" = True
f x = False
f :: [Char] -> Bool
f ['h', 'e', 'l', 'l', 'o'] = True
f x = False
f :: [Char] -> Bool
f ('h' : 'e' : 'l' : 'l' : 'o' : []) = True
f x = False
f :: [Char] -> Bool
f ((:) 'h' ((:) 'e' ((:) 'l' ((:) 'l' ((:) 'o' []))))) = True
f x = False