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

SML报operator is not a function错误:第4行代码问题原因咨询

SML代码报错原因及修正

核心错误原因

  • 首先看repeat的类型签名:int -> ('a -> 'a) -> 'a -> 'a,它需要3个按顺序传入的参数:重复次数(整数)、待重复执行的单参数函数、函数执行的初始值。
  • 你第四行代码fun times x y = repeat( x (plus( x y)) x)触发报错的直接原因是:SML中函数调用的优先级最高,代码中x (plus(x y))会被解析为「将int类型的变量x作为函数调用,传入plus(x y)的结果作为参数」,但x是整数不是函数,完全符合报错信息中operator: int的类型不匹配提示。
  • 此外逻辑层面你对乘法的实现思路也有偏差:整数乘法x * y本质是把「加y」这个操作重复执行x次,初始值设为0,和你目前传入的参数逻辑完全不符。

修正后的代码

正确的times函数写法如下:

fun times x y = repeat x (plus y) 0;

你可以测试times 3 4,会得到预期结果12。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:39:02