2017-02-02 14 views
0

私はSMLを初めて使いました。私は、入力として2 int型やタプルのリストを受け入れる機能を書いている:SML - リスト内の要素を見つけてその値を変更する

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

私のリスト(箱)の長さを変更することができます。私は要素がXw、Ywに等しいリスト内のタプルを探したい。たとえば、box1 =(Xw、Yw)のような要素を持つbox1のようなタプルが必要です。もしそのようなタプルがあれば、value => box1(Xw-1、Yw-1)を変更します。 方法はありますか?

答えて

1
fun moveBox (x, y, boxes) = List.map (fn p => if p = (x,y) then (x-1,y-1) else p) boxes 
+0

ありがとうございました。 List.mapを使用して複数の条件をチェックし、2つのタプルを変更することも可能ですか?例えば、値がbox1 =(Xw、Yw)のbox1とbox2 =(Xw、Yw-1)のようなタプルを探し、その値を例えば> = box1 =(Xw + 1、Yw-1)に変更すると、 )&box2 =(Xw-1、Yw-1)? – helen

+0

もちろん、else if条件を追加するだけです。 –

+0

しかし、私はそれらの両方が同時に発生したい。つまり、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を使って同時にこの値を変更するにはどうすればいいですか? – helen