我正在尝试使用let2nat和nat2let函数创建一个shift函数。 该移位功能将范围为0到25的移位因子应用于范围“a”到“z”的小写字母。超出此范围的字符(例如大写字母和标点符号)应该是未移位的。确保你的函数在字母表的末尾包裹。
module Kaan where
import Data.Char
let2nat :: Char -> Int
let2nat x = (ord x) - 97
nat2let :: Int -> Char
m = ['a'..'z']
nat2let x = m !! x
shift :: Int -> Char -> Char
shift x y
| (x + let2nat y <= 25) && (x + let2nat y >= 0) = nat2let x + let2nat y
| (x + let2nat y) > 25 = nat2let (x+let2nat y) `mod` 25
| Otherwise = y
main = do
print $ let2nat 'h'
这就是我得到的:不在范围内:数据构造函数否则`
答案 0 :(得分:5)
绑定名为otherwise
,小写o
。 otherwise
被定义为与前奏中的True
相同。
顺便说一句,以大写字符开头的任何(在值级别)都是数据构造函数,而不是otherwise
之类的普通绑定。