首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在这种情况下如何使用map?

在这种情况下如何使用map?
EN

Stack Overflow用户
提问于 2012-10-28 03:14:37
回答 1查看 100关注 0票数 0

我有创建Data.Map的代码:

代码语言:javascript
复制
import qualified Data.Map as Map

shift_string :: [Char] -> Int -> [Char]
shift_string s num = (drop num s) ++ (take num s)

ascii :: [Char]
ascii = ['a' .. 'z']

shifted_ascii :: Int -> [Char]
shifted_ascii n = shift_string ascii n

trans_table :: Int -> Map.Map Char Char
trans_table n = Map.fromList(zip ascii $ shifted_ascii n)

'trans_table‘函数返回一个字符映射到另一个字符映射的映射。我可以创建一个函数来获取一个Char,并根据此Map返回另一个:

代码语言:javascript
复制
translate_char :: Char -> Int -> Maybe Char
translate_char c n = Map.lookup c $ trans_table n

现在我想“翻译”地图中的每个符号。如下所示:

代码语言:javascript
复制
encode message key = map translate_char message

此代码不起作用,因为translate_function必须只有一个参数。我需要一些像全局变量这样的东西来存储映射,并在我的map-function中查找它的值。但我不知道如何重写代码。

附注:我想我可以在字符串中的每个字符中添加“key”,但我正在寻找通用的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-28 03:26:24

我不知道你的encode函数中的关键字是什么,但你可以使用像这样的东西

代码语言:javascript
复制
translate_char :: Int -> Char -> Maybe Char
translate_char n c = Map.lookup c $ trans_table n

encode :: Int -> String -> String
encode n s = catMaybes $ map (translate_char n) s

这里的n决定了你要旋转的字符数。我改变了参数的顺序以避免使用flip

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13103323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档