2012-11-21 3 views
-2

je ce problème:Les éléments d'une liste à une autre

J'ai une liste laisser dire [2;1;2;1;4;1] et un int, je veux ajouter le nombre entier à une nouvelle liste si elle accours dans la première liste, qui signifie que le résultat devrait être une nouvelle liste avec [1;1;1] si l'entier est 1, je crois que je peux utiliser tail-récursion et j'ai utilisé google et cherché quelque chose de similaire ici à stackoverflow mais je ne peux pas le trouver.

+0

Vous devez montrer ce que vous avez trouvé jusqu'à présent. Idéalement, un exemple de votre tentative de résoudre le problème et pourquoi cette tentative a échoué. Alternativement, vous pouvez lier à des ressources qui ont répondu à des questions similaires et encore une fois pourquoi ils ne fonctionnent pas pour vous. – Guvante

Répondre

1

Je vous suggère de jeter un coup d'œil sur les fonctions intégrées d'ordre supérieur:

[2; 1; 2; 1; 4; 1] |> List.filter (fun e -> e <= 1) 

C'est récursive pour vous déjà!

+0

Eh bien, si je peux éviter les fonctions intégrées, ce serait mieux mais c'est bien, mais je voudrais utiliser ceci: 'dupliquer z liste = liste |> List.filter (fun e -> e <= z)' et faire quelque chose de plus avancé. Je veux une fonction de type int-> int-> bool qui va tester l'argument entier contre tous les éléments de la liste et les éléments qui donnent vrai quand l'opérateur est appliqué devrait être dans la liste de retour. J'ai ce code ' Soit eq xy = x = y 'et' let lt xy = x [2; 2] '' func lt 2 [1; 2; 4; 2; 5] => [4; 5] '. Pas utilisé pour utiliser lt et eq – Ang

1
let findOccurences e = List.filter ((=) e) 
Questions connexes