Haskell错误不在范围内:数据构造函数否则

时间:2014-10-22 00:16:45

标签: haskell

我正在尝试使用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'

这就是我得到的:不在范围内:数据构造函数否则`

1 个答案:

答案 0 :(得分:5)

绑定名为otherwise,小写ootherwise被定义为与前奏中的True相同。

顺便说一句,以大写字符开头的任何(在值级别)都是数据构造函数,而不是otherwise之类的普通绑定。