如何在haskell中使用特殊(保留)字符?

时间:2017-11-30 10:54:24

标签: haskell functional-programming

我是haskell.am的新手,尝试为给定的纯文本加密实现加密。下面是我的示例代码

encryptChar :: Int -> Char -> Char
encryptChar shift c
             | canEncrypt c = chr(ord c + wrapshift)
             | isUpper c = c
            where wrapshift = let shift' = shift `mod` 26 
                              in if (wraparound shift' c)
                                 then shift'-26
                                 else shift'
encryptChar _ '0' = '*'
encryptChar _ '1' = '\''
encryptChar _ '2' = '~'
encryptChar _ '3' = '!'
encryptChar _ '4' = '@'
encryptChar _ '5' = '#'
encryptChar _ '6' = '$'
encryptChar _ '7' = '%'
encryptChar _ '8' = '^'
encryptChar _ '9' = '&'
encryptChar _ '?' = ' '
encryptChar _ c = c

当我的字符包含一个数字时,必须使用特殊符号进行加密,例如在上面的代码中,当我的字符包含1时,它必须替换为我发现它的\ haskell中的保留字符。但是如何使用这些字符加密?

2 个答案:

答案 0 :(得分:7)

简短回答:使用 <div class="active"> some text </div>

大多数编程语言使用escape sequences [wiki]来表示特殊字符,并使用反斜杠作为转义序列的开头。

反斜杠字符则表示为转义反斜杠,因此 '\\'

就像维基百科文章中的表格所说:

'\\'

答案 1 :(得分:4)

Prelude> putStrLn $ "You can generate a backslash like this: \\ (escape sequence) or like this: \x5c (Unicode identifier sequence) or like this: " ++ [toEnum 92] ++ " (Unicode code point)."
You can generate a backslash like this: \ (escape sequence) or like this: \ (Unicode identifier sequence) or like this: \ (Unicode code point).