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

Haskell函数组合运算符.与空格运算符优先级导致表达式报错疑问

你的理解完全正确。

原因验证

  • Haskell中函数应用(空格)的优先级为最高的10级,函数组合运算符.的优先级为9级,优先级高的运算会先执行。
  • 你编写的表达式reverse . take 3 [1 .. 10]会先执行优先级更高的函数应用逻辑,即先计算take 3 [1..10]得到结果[1,2,3],表达式会被解析为reverse . [1,2,3]。
  • 函数组合运算符.要求左右两侧的操作数都为函数类型,而右侧是列表类型,自然会触发类型不匹配的报错。

正确写法参考

两种常用的修正方式,最终效果都等价于reverse (take 3 [1..10]),运行后得到结果[3,2,1]:

  • 给函数组合部分加括号,明确运算优先级:(reverse . take 3) [1..10]
  • 使用$运算符(优先级0)拆分运算逻辑:reverse $ take 3 [1..10]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:04