0
我想在Haskell中創建自己的數據類型,稱爲「Cipher」。我意識到有26!類型可以採用的值(字符串中字符的任意組合,只能使用一次)。在Haskell中創建我自己的數據類型「Cipher」
我有這樣開始的:
數據密碼= [ 'A' .. 'Z'] |
我知道Haskell可以「猜測」組合,但我怎麼能告訴它我希望類型能夠採取上述任何值?
我想在Haskell中創建自己的數據類型,稱爲「Cipher」。我意識到有26!類型可以採用的值(字符串中字符的任意組合,只能使用一次)。在Haskell中創建我自己的數據類型「Cipher」
我有這樣開始的:
數據密碼= [ '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 =密碼字符。但是,這可以採取任何字符,並不僅限於使用您指定的那些字符。 – Satvik
你會在'Cipher'上做什麼樣的操作? – jberryman