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

Haskell模式匹配实践:基于自定义Assignment类型实现lookupA查询函数

Haskell 模式匹配实现 Assignment 查找函数

实现代码

lookupA :: Assignment -> String -> Integer
lookupA EmptyA _ = 0 
lookupA (Assign key val rest) s
  | key == s = val
  | otherwise = lookupA rest s

逻辑说明

  • 你定义的Assignment是递归结构的键值对链表,Assign构造器的三个参数分别对应当前节点的键、值、后续节点
  • 这里用到的模式匹配核心逻辑是:直接在函数参数位置拆分数据构造器,不需要额外写取值函数就能直接提取节点内的所有字段,我们把非空的输入直接匹配为(Assign key val rest),就能直接拿到当前键key、当前值val、后续链表rest三个变量
  • 匹配到Assign节点后走两个判断分支:
    • 若当前键和待查找的字符串相等,直接返回当前节点存储的值
    • 若不相等,递归调用lookupA查询后续链表即可
  • 如果遍历到末尾的EmptyA空节点,就会命中第一个分支返回默认值0

你给出的示例lookupA myAssn "y"运行时会跳过前两个键为x的节点,命中第三个键为y的节点返回3,完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:54:03