0

我正在尝试在 Haskell 中创建自己的名为“Cipher”的数据类型。我意识到有26个!类型可以采用的值(字母表中的任何字符组合使用一次且仅一次)。

我是这样开始的:

数据密码 = ['a'..'z'] |

我知道 Haskell 可以“猜测”组合,但我如何告诉它我希望该类型能够采用上述任何值?

4

1 回答 1

1

一个简单的答案可能是

import Data.Char (ord)
import Data.List (permutations)
newtype Cipher = Cipher String

ciphers = map Cipher . permutations $ ['a' .. 'z']

-- Lookup a characters value in the cipher
mapChar :: Cipher -> Char -> Char
mapChar ciph c = ciph !! ord c - ord 'a'

encode :: Cipher -> String -> String
encode ciph = map (mapChar ciph)

decode :: Cipher -> String -> String
decode -- Ill let you figure this out
于 2013-10-06T14:38:54.447 回答