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

如何修复Standard ML代码中出现的未绑定类型'a'错误?

问题分析与解决

你遇到的错误是因为Standard ML(SML)中类型变量必须以撇号(')开头,你代码里的a和b会被编译器当作未定义的具体类型,而非多态类型变量,所以报"Unbound type 'a'"错误。

修正后的代码

fun seconds (pairs : ('a * 'b) list) : 'a list =
  let
    fun first (pair : 'a * 'b) : 'a = fst pair
  in
    map first pairs
  end;

val pairs = [("m", false), ("w", false), ("n", true)];
val result = seconds pairs;

关键修改点

  • 所有类型变量前添加撇号:把a改为'a,b改为'b,让编译器识别为多态类型参数,支持任意类型的配对列表。
  • 额外提示:你的函数实际返回的是配对的第一个元素列表,函数名seconds有点名不符实,改成firsts会更直观,不过这只是命名规范问题,不影响功能。

运行结果

修正后执行代码,result会得到["m", "w", "n"],符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:22:32