0
我正嘗試使用let2nat和nat2let函數創建移位函數。 此移位功能將範圍從0到25的移位因子應用於範圍'a'到'z'的小寫字母。這個範圍以外的字符,如大寫字母和標點符號,應該返回不移位。確保你的功能環繞在字母表的末尾。Haskell錯誤不在範圍內:數據構造函數否則
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'
這就是我得到:不在範圍:數據構造Otherwise`
我的不好。我剛開始學習它。謝謝。 – knrkn 2014-10-22 00:23:57
你應該「接受」這個答案。 – 2014-10-22 03:03:07