0

我正在尝试声明一个函数,该函数将让我更改字符列表列表中的数字(我仍在研究之前的数独游戏)。changesudo : char list list -> int * int * char -> char list list 我需要能够调用 changesudo xs (r,s,c) 其中 xs 是 char 列表,r 是列表,s 是位置在 xs 和 c 中是字符。

这就是我所拥有的:

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;

这是一个'a list list -> int * int *'a ->'a list list - 所以我快到了。

我如何解决它?

我用这个函数得到了字符列表列表

4

1 回答 1

1

没有什么可修复的。你得到的类型比你想要的类型更通用,但这不是问题。

该类型'a list list -> int * int * 'a -> 'a list list非常适合更改 a 中的字符char list list。这意味着您也可以使用它来更改int int list.

换句话说:如果你输入一个char list list和一个char * int * int元组,你会得到一个char list list替换给定位置的字符的a,所以它的工作方式与你想要的完全一样。

提醒一句:我不知道这是否是故意的,但您的函数是 1-indexed,即第一个列表中的第一项位于(1,1)not位置(0,0)

于 2010-10-18T14:40:38.090 回答