我正在尝试声明一个允许我更改字符列表列表中的数字的函数(我还在处理之前的数独游戏)。 changeudo:char list list - > int * int * char - > char列表 我需要能够调用changesudo xs(r,s,c),其中xs是char列表,r是列表,s是xs中的位置,c是char。
这就是我所拥有的:
fun changesudo xs (r,s,c) =
let
val g = hd (List.take (List.drop
(xs , (r-1)) , 1));
val h = (List.take(g , s-1)) @ [c]
@ List.drop(g , s);
in
(List.take (xs , (r-1)) @ [h] @ List.drop(xs , r))
end;
这是一个'列表 - > int * int *'a - >列表清单 - 所以我几乎就在那里。
我该如何解决?
获取了字符列表答案 0 :(得分:1)
没有什么可以解决的。你得到的类型比你想要的类型更通用,但这不是问题。
类型'a list list -> int * int * 'a -> 'a list list
非常适合更改char list list
中的字符。这意味着您还可以使用它来更改int int list
中的整数。
换句话说:如果你输入一个char list list
和一个char * int * int
元组,你会得到char list list
替换给定位置的字符,所以它可以正常工作就像你想要的那样。
提醒一句:我不知道它是否有意,但你的函数是1索引的,即第一个列表中的第一个项目位于(1,1)
而不是(0,0)
。