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

如何修改Haskell自定义drop1函数 实现仅首次检查输入参数合法性

实现方案

核心思路是将递归逻辑抽离到内部辅助函数中,仅在外层主函数完成首次入参校验,递归过程不再重复执行校验逻辑。

修改后的完整代码如下:

drop1 n xs 
  | n < 0 = error "Use positive numbers"
  | otherwise = go n xs
  where
    go _ [] = error "Empty list"
    go 0 xs = xs
    go n xs = go (n-1) (tail1 xs)

逻辑说明

  • 外层drop1仅在首次调用时执行一次n < 0的合法性校验,校验不通过直接抛出异常
  • 校验通过后调用内部函数go执行递归删除逻辑,go函数不需要再重复校验n的合法性,有效降低了不必要的性能开销
  • 原有空列表报错、递归终止逻辑、核心删除逻辑完全保留,和原有实现功能完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:06:04