Haskell “创建我自己的数据类型”;密码;在哈斯克尔

Haskell “创建我自己的数据类型”;密码;在哈斯克尔,haskell,encryption,Haskell,Encryption,我正试图在Haskell中创建自己的数据类型“Cipher”。我意识到有26个!类型可以采用的值(字母表中字符的任意组合,使用一次且仅使用一次) 我是这样开始的: 数据密码=['a'..'z']| 我知道Haskell可以“猜测”组合,但我如何告诉它我希望类型能够接受上述任何值?一个简单的答案可能是 import Data.Char (ord) import Data.List (permutations) newtype Cipher = Cipher String ciphers = ma

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

我是这样开始的:

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


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

一个简单的答案可能是

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

数据密码=A | B | C |。。。然后,您可能需要为其定义读取实例,以便从字符串转换为此数据类型。或newtype Cipher=密码字符。但这可以接受任何字符,并且不限于仅使用您指定的字符。您将对
密码执行什么类型的操作?