使用SML更改char列表中的char

时间:2010-10-18 14:30:24

标签: list types sml

我正在尝试声明一个允许我更改字符列表列表中的数字的函数(我还在处理之前的数独游戏)。 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 - >列表清单 - 所以我几乎就在那里。

我该如何解决?

我使用this function

获取了字符列表

1 个答案:

答案 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)