2012-11-27 2 views
0

J'ai cette fonction qui prend une liste et contrôlées après pour les doublons, si des résultats sont trouvés, ils sont ajoutés à une nouvelle liste comme ceci:Doublons dans une liste à une nouvelle liste

let foo1 z list = list |> List.filter (fun e -> e <= z) 

cela donne foo1 1 [2; 3; 4; 1; 5; 1; 6; 1] => [1; 1; 1] le problème est que je ne veux utiliser aucune des fonctions intégrées dans f #

+1

Est-ce un devoir? Qu'avez-vous essayé jusqu'à présent? – bytebuster

+0

@bytebuster J'ai fait la fonction dans la question, ce n'est pas un devoir J'essaie de comprendre comment fonctionne la fonction intégrée et j'ai besoin d'un bon exemple pour celle-ci – user1838768

+0

Etes-vous conscient que toutes les bibliothèques du compilateur F # sont open source et sur github à https://github.com/fsharp/fsharp –

Répondre

3

Vous J'ai déjà posé plusieurs questions de base sur le traitement de la liste. Je vous recommande donc de lire d'abord quelques introductions et de l'essayer vous-même.

L'utilisation des fonctions intégrées est la bonne façon de résoudre le problème dans la pratique. Si vous voulez apprendre F # et comprendre la récursivité, lisez d'abord ce qui précède. Ensuite, vous devriez être en mesure d'écrire quelque chose comme:

let rec duplicates z = function 
    // If the list is empty, return empty list of duplicates 
    | [] -> [] 
    // If it starts with 'z' then return one duplicate and recursively process the rest 
    | x::xs when x = z -> x::(duplicates x xs) 
    // If it starts with something else, then skip the first element and process the rest 
    | x::xs -> duplicates z xs 

Il y a beaucoup d'introductions F # qui expliquent comment filter et des fonctions similaires sont mises en œuvre. Le F# wikibook covers this topic et vous le trouverez dans la plupart des livres F # (voir a list on fsharp.org) et la section Working lists sur www.tryfsharp.org couvre également cela.

+0

merci pour les conseils de lecture, je sais définitivement quoi faire cet après-midi. – user1838768

Questions connexes