2017-01-15 4 views
0

Comment puis-je vérifier si 2 éléments sont dans la même liste dans sml? J'ai essayé de changer une fonction de membre mais je ne pouvais pas le faire fonctionner.SML vérifier si 2 éléments sont dans la même liste

val routeList1 = ["Princes Street", "Haymarket", "Craiglockhart", "Musselburgh", "Stoneybank"] 

si vous voulez vérifier si les deux "Princes Street" et "Haymarket" sont en routeList1

Je suis nouveau dans cette langue, de sorte que toute aide serait bien

+0

Si vous savez comment vérifier si une chose est dans une liste, pourquoi est-il difficile de vérifier si deux choses sont? Utilisez simplement l'opérateur booléen 'andalso'. –

Répondre

1

Pour vérifier si "Princes Street" est en routeList1, vous pourriez écrire:

List.exists (fn s => s = "Princes Street") routeList1 

(qui utilise List.exists[see doc] pour vérifier un élément s tel que s = "Princes Street" est true).

Pour vérifier deux chaînes, il suffit de cocher une, puis l'autre:

List.exists (fn s => s = "Princes Street") routeList1 
    andalso List.exists (fn s => s = "Haymarket") routeList1 
1

Vous pourriez appeler une fonction qui vérifie l'appartenance

fun elem x ys = List.exists (fn y => x = y) ys 

Et une fonction qui vérifie l'appartenance à beaucoup de choses

fun allElems xs ys = List.all (fn x => elem x ys) xs 

en supposant que les éléments ne peuvent être comparés que pour l'égalité. Puis

val areThey = allElems ["Princes Street", "Haymarket"] routeList1