9
votes

Haskell - Aide à la programmation fonctionnelle

essayer d'avoir une sensation pour Haskell. Suis un programmeur expérimenté avec PHP, Java, VB et de nombreuses autres langues, mais je trouve un haskell légèrement plus difficile à suivre. Quelqu'un peut-il me donner une traduction pour la fonction HASKELL suivante, pour me lancer ... XXX

Un exemple de traduction anglaise est dans les commentaires ci-dessous: xxx

La première ligne est assez simple, lisant: "La fonction Quicksort sur une liste vide donne une liste vide comme résultat" ... Si vous pouvez traduire le reste du haskell en anglais qui seraient très utiles.


5 commentaires

J'ai vraiment aimé travailler avec Haskell au collège - pour une raison quelconque, il a cliqué avec moi. Bons souvenirs...


De belles réponses gars - c'est exactement ce que je cherchais - acclamations!


Une question supplémentaire pour les autres: quelle est la faiblesse majeure avec cet algorithme?


@Kathy: ça ne sait pas en place. Maintenant cela se sent comme l'école :)


@Shaun: Non, c'est juste une inefficacité mineure. Pensez à son comportement face à [1..100].


6 Réponses :


13
votes

Le résultat de QuickSorting La liste vide est la liste vide.

Le résultat de Quicksorte une liste non vide, où nous appelons le premier élément de la liste x et les éléments restants xs est: le résultat de QuickSorting tout le Éléments de XS plus petit que X (*), suivi de X, suivi du résultat de tous les éléments de XS supérieurs à x.

(*) pour élaborer un peu: [y | y <- xs, y peut être lu comme "la liste de tous y où y est en xs et y ". ".


0 commentaires

0
votes

Cela ne répond pas directement à votre question, mais hoogle peut aider votre apprentissage en général, Vous pouvez l'utiliser pour rechercher les bibliothèques d'API standard par nom de fonction ou par signature de type approximative.

Voici des exemples de termes de recherche qu'il prend en charge: xxx


0 commentaires

4
votes

Je n'ai pas fait cela depuis le collège ...

Il est récursif - la première ligne est le cas pour un ensemble vide. P>

quicksort (x:xs) = quicksort [y | y <- xs, y<x ]
  ++ [x]
  ++ quicksort [y | y <- xs, y>=x]


1 commentaires

"Le résultat final est un ensemble ordonné." - Ce n'est pas un ensemble, c'est une liste. Quicksort [1,2,3,1,2,3] retournera [1,1,2,2,3,3] . Notez les entrées en double.



2
votes

C'est une langue déclarative, vous viennent de lire ce que vous voyez. SEPP2K fait un bon exemple ci-dessus.


0 commentaires

2
votes

vérifier http://learnyouahakell.com/recursion#quick-sort Il explique exactement Quel est le Quicksort.


0 commentaires

2
votes

Si votre problème était en connaissance de cause avec les compréhensions de la liste, voici quelques versions alternatives qui sont plus ou moins identiques: xxx


0 commentaires