Le système de templates de C++ est un langage fonctionnel (et turing-complet). :)
Common Lisp possède un système de macros puissants, il est peut-être possible de faire ça aussi, à la compilation.
Type: Messages; Utilisateur: LLB
Le système de templates de C++ est un langage fonctionnel (et turing-complet). :)
Common Lisp possède un système de macros puissants, il est peut-être possible de faire ça aussi, à la compilation.
C'est malin !
Utilise alors :
C-x h M-x untabify
avant de poster ton code source.
Pour ma part, quand je me fiche de la taille du fichier, je préfère avoir :
(setq-default indent-tabs-mode...
Voilà, je viens de traduire "bêtement" ton itérateur en F#. J'ai même pas essayé de comprendre le fonctionnement, je regarderai ça plus tard.
En effet, il est plus efficace que les autres que j'ai...
Oui, merci !
Il n'y a pas de takeWhile dans la lib, je l'ai recodée. Et l'erreur, c'était juste dans la comparaison (j'ai pas dû poster la bonne version tout à l'heure).
let rec takeWhile f =...
Depuis un mois, il y a un installeur .msi (je suppose qu'on ne peut pas l'utiliser sous Linux). Avant, il y avait un fichier zip avec tout dedans : sources, Makefile, README et même install-mono.sh....
Et la traduction directe en F# :
let rec sums =
let get x n =
if x = n then [[]]
else List.filter ((>) x << List.head) <| Seq.nth (n - x) sums
let init n = [for x in 1 .. n ->>...
Oui, mais regarde mon code plus haut. Il faut que a et foo soient mutuellement récursifs : a a besoin de foo pour l'init, et les valeurs stockées dans foo dépendent de a. Apparemment, on ne peut pas...
En pratique, ce n'est pas un préprocesseur dans F# (il n'y en a hélas pas encore), c'est plutôt géré dans le parseur. Pour les différences avec Caml, il y en a un certain nombre dans mon code (alors...
Tout à fait.
Et juste pour exemple, j'ai traduit le code de Jedai en F# : (fichier complet et exécutable)
#light
let sums n =
let rec a = Array2.init (n+1) (n+1) populate
and populate...
Gogonite > j'ai testé ton code, mais ça marche pas vraiment (ou y a un truc que j'ai pas compris ?).
$ ocaml sum.ml 3
[ 2 1 1 ]
[ 1 1 ]
Si certains veulent tester ma version F#, il faut...
Solution en F# :
let sums n =
let rec sumrec = function
| 0, _ -> [[]]
| n, m -> [for i in 1 .. min n m ->> [for j in sumrec((n - i), i) -> i :: j]]
sumrec(n, n)
Exemple d'appel :
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.