【问题标题】:SML - Finding an element in the list and changing it's valueSML - 在列表中查找元素并更改其值
【发布时间】:2017-02-03 03:58:44
【问题描述】:

我是 SML 的新手。我正在编写一个函数,它接受 2 个 int 和一个元组列表作为输入:

fun moveBoxL(Xw,Yw,boxes:(int * int)list) =

我的列表(框)的长度可以改变。我想在列表中找到一个元素等于 Xw,Yw 的元组。例如,我想要一个像 box1 这样的元组,它的元素是这样的: box1=(Xw,Yw) 如果有这样的元组,我想改变它的值 => box1(Xw-1,Yw-1) 。 有什么办法吗?

【问题讨论】:

    标签: sml


    【解决方案1】:
    fun moveBox (x, y, boxes) = List.map (fn p => if p = (x,y) then (x-1,y-1) else p) boxes
    

    【讨论】:

    • 谢谢。是否也可以使用 List.map 检查多个条件并更改 2 个元组?例如,找到一个像 box1 的元组,其值为 box1=(Xw,Yw) 和一个像 box2=(Xw,Yw-1) 的元组,并将它们的值更改为 => box1=(Xw+1,Yw-1 ) & box2=(Xw-1,Yw-1) 同时?
    • 当然,只需添加一个else if 条件。
    • 但我希望它们同时发生。我的意思是:如果 List.exists (fn s => s = (X,Y)) 框和 List.exists (fn p => p = (X,Y)) 框然后 .... (然后例如更改和return s=(X-1,Y-1) andalso p=(X-2,Y-2) 我想知道如何使用 List.map 编写此条件以同时更改它们的值?
    猜你喜欢
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 2013-12-18
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多