我是SML的新手。我正在编写一个函数,它接受2个int(x,y)和一个元组列表(命名框)作为输入。我的清单长度可以改变。我想在列表中找到2个元组,其元素取决于x和y。例如,我想检查是否有像box1 =(x,y)这样的元组和另一个像box2 =(x-2,y-3)这样的元组,如果它们都在列表中可用,那么它们的值应该改变并同时返回。我知道如何找到一个元组并使用List.map更改它的值。但是如何更新多个元组?
fun move(x,y,boxes:(int * int)list) =
if List.exists (fn s => s = (x,y)) boxes andalso
List.exists (fn p => p = (x-1,y-2)) boxes
then ... (then for example how to change their value to box1=(x-1,y-2)
and box2=(x-3,y-4) at the same time and update them in the list)
答案 0 :(得分:3)
List.map (fn p =>
if p = (x, y) then (x-1, y-2)
else if p = (x-2, y-3) then (x-3, y-4)
else p
) boxes