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

无法访问SML双层列表中int*int类型元组的值的技术问题

问题分析与解决

你的代码核心问题是类型不匹配:xs是(int*int)list list(列表的列表),而#2是元组取值操作符,不能直接作用在列表上。要拿到目标元组的第二个值,需要逐层拆解嵌套的列表结构。

修改后的代码

fun fnd(xs:(int*int)list list)=
    if null xs
    then 0
    else
        let val inner_list = hd xs
        in
            if null inner_list
            then 0
            else #2 (hd inner_list)
        end

代码说明

  1. 先判断外层列表是否为空,为空则返回0;
  2. 非空时,用hd xs取出外层列表的第一个内层列表;
  3. 判断内层列表是否为空,为空则返回0;
  4. 非空时,用hd inner_list取出内层列表的第一个元组,再用#2获取该元组的第二个值。

测试输入fnd [[(1,2)]];会返回期望的2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:25:23