我能';似乎没有在haskell中设置字符的值?
我正在学习haskell,理解它有点困难。基本上,我有一个程序,可以读入一个字母,如果它是辅音,就把它改成“!”,但是,我似乎无法设置角色的值 这是我到目前为止的代码我能';似乎没有在haskell中设置字符的值?,haskell,char,Haskell,Char,我正在学习haskell,理解它有点困难。基本上,我有一个程序,可以读入一个字母,如果它是辅音,就把它改成“!”,但是,我似乎无法设置角色的值 这是我到目前为止的代码 isConsonant :: Char -> Bool consonant_alphabet = ['b'..'d']++['f'..'h']++['j'..'n']++['p'..'t']++['v'..'z'] ++ ['B'..'D']++['F'..'H']++['J'..'N']++['P'..'T']++['V'
isConsonant :: Char -> Bool
consonant_alphabet = ['b'..'d']++['f'..'h']++['j'..'n']++['p'..'t']++['v'..'z'] ++ ['B'..'D']++['F'..'H']++['J'..'N']++['P'..'T']++['V'..'Z']
isConsonant character = character `elem` consonant_alphabet
repConsonant :: Char -> String
repConsonant c =
if isConsonant c
then "CONVERT IT TO !"
else do "NO CONVERSION REQUIRED"
出于调试目的,我将其作为字符串输出,但我无法理解这一点。。有什么想法吗?我已经试过了
let c = "!"
尝试在ghci中输入辅音“a”
而且,
do
是冗余的。只需使用或“无需转换”
。想想你想要进行的转换,并将其与你想要进行的转换次数分开。repConsonant应该是Char->Char
repConsonant :: Char -> Char
repConsonant c =
if isConsonant c
then '!'
else c
现在repConsonant应该对一个字符执行您想要的操作,您所需要做的就是将它应用于字符串中的每个字符
我似乎无法设置角色的值
是,您只能为名称分配一次值。这是故意的。它应该引导您的程序设计到更小的函数,这些函数将输入转换为输出编程风格。如果需要在函数中构建值,则需要“let-in”或“where”语法
或
双引号用于字符串,单引号用于单个字符。
let addone a = let b = 1 in a + b
let addtwo a = a + b
where b = 2