You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell如何仅用Prelude实现按给定字典的反向翻译查找功能

Haskell翻译函数实现思路

核心逻辑拆解

你的需求本质是把现有「目标词→同义词列表」的字典结构,转换成「同义词→目标词」的查询映射,再按输入单词查映射取值即可,全程只用Prelude内置函数就能实现,不需要额外导入包。

分步实现方案

  • 第一步:反转字典结构
    用concatMap遍历原字典的每条记录,把每个同义词和对应的目标词绑定成键值对,拼接成新的映射列表:
    reverseDict :: [(String, [String])] -> [(String, String)]
    reverseDict = concatMap \(target, synonyms) -> map (\syn -> (syn, target)) synonyms
    
  • 第二步:实现查询逻辑
    用Prelude内置的lookup函数在反转后的映射里查询输入单词,匹配到就返回对应目标词,没匹配到可以按需求返回原单词或者其他默认值:
    dictionary = [ 
            ("doubleplusgood",["excellent", "fabulous", "fantastic", "best"]),
    ]
    
    translate :: String -> String
    translate word = case lookup word (reverseDict dictionary) of
        Just res -> res
        Nothing -> word -- 未匹配到的默认处理逻辑,可按需调整
    

效果验证

按照你给出的示例,调用translate "excellent"会返回"doubleplusgood",完全符合要求。

内容的提问来源于stack exchange,提问作者amonmi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 02:30:01