2016-04-09 6 views
0

Ich möchte eine Liste, die Spezifikation ist: (String * Int) Liste und die Tupel können bearbeitet werden. Angenommen,Bearbeiten von Tupeln in einer Liste von SML

val gamma = [("a",20),("b",30),("c",40)] :(string*int) list 

Nun, wie kann ich den Wert 30 im Tupel ändern ("b",30) zu, sagen wir mal, 70.

Antwort

2

Sie benötigen ein neues Tupel der Liste map über und bauen:

let 
    fun change key value (k, v) = 
    if k = key 
    then (k, value) 
    else (k, v) 

    val list = [("a",20),("b",30),("c",40)] 
in 
    List.map (change "b" 70) list 
end 
+0

Vielen Dank! Es ist genau das, was gebraucht wurde. –

+0

Ich möchte eine Kartenart der Datenstruktur mit einer Liste mit folgenden Spezifikationen erstellen: (string * int) Liste, wo das erste Element der Schlüssel und das zweite Element der Wert ist. Zunächst möchte ich beim Erstellen dieser Map einen Schlüssel ohne Wert angeben. Wie kann ich in diesem Fall Null-Wert übergeben? Zum Beispiel benötige ich so etwas beim Initialisieren: val gamma = [("a", _), ("b", _), ("c", _)]: (string * int) list. –

+0

Ich habe versucht, "_" und "NONE" zu setzen, aber sie haben nicht funktioniert. –