无法访问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
代码说明
- 先判断外层列表是否为空,为空则返回0;
- 非空时,用
hd xs取出外层列表的第一个内层列表; - 判断内层列表是否为空,为空则返回0;
- 非空时,用
hd inner_list取出内层列表的第一个元组,再用#2获取该元组的第二个值。
测试输入fnd [[(1,2)]];会返回期望的2。
内容的提问来源于stack exchange,提问作者SoRA
相关产品推荐
相关产品推荐

