通过将字符串写成列表来检查字符串的相等性[Haskell]

问题描述 投票:0回答:1

练习 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

现在,上面的代码在我加载时不起作用。我猜我们不能直接计算字符串上的函数,为什么?

haskell
1个回答
0
投票

'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
© www.soinside.com 2019 - 2024. All rights reserved.