2017-02-14 11 views
-4

Ich suche nach dem dritten Element in einem Haskell-Tupel. Das Tupel ist vom Typ (String, String, Int) und ich möchte den Int. Ich habe versucht, meine eigene in einer Weise zu schaffen Ich habe online gesehen, vor allem:Zugriff auf drittes Element im Triple-Tupel

get3rd (_,_,x) = x 

* ich auch habe versucht, eine Art Erklärung mit: (String, String, Int) -> Int und durch eine benutzerdefinierte Erstellung Geben Sie das Tupel ein und verwenden Sie es.

Das funktioniert, wenn die Tuple I Eingabe besteht aus ganzen Zahlen, aber sobald ich die Strings in ich bekomme diesen Fehler: Daten Konstruktor nicht im Geltungsbereich: Mary :: String * Mary ist eine beliebige Zeichenfolge, ich bekomme ein Fehler für beide eingegebenen Zeichenfolgen. Jede Hilfe wäre großartig, um das zu lösen!

+2

bekommen Das funktioniert, also liegt der Fehler wahrscheinlich in Code, den Sie uns nicht gezeigt haben. Was ist 'Maria'? – E4z9

+7

Haben Sie '(Mary, Mary, 1)' statt '(" Mary "," Mary ", 1) eingegeben? – E4z9

+0

Yepp, versucht sowohl – MandyLB

Antwort

1

Wenn Sie es oft nicht tun müssen, um dieses

let (_,_,x) = someTuple 
in doSomething x 

oder diese

doSomething x 
where (_,_,x) = someTuple 

ist so ziemlich gleichwertig zu dieser

get3rd (_,_,x) = x 
... 
doSomething (get3rd someTuple) 

aber wenn Sie sich mit etwas wie verschachtelten Tupeln befassen, könnte es chaotisch

+1

Richtig, aber ich bezweifle, dass jemandem auf der Ebene dieser Frage klar ist, was du meinst. – leftaroundabout

Verwandte Themen