|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 |
|
Expert Confirmé Sénior
![]() ![]() |
Et quel serait l'intérêt exactement ? Si tu veux tu peux écrire ton interface avec les parenthèses que tu veux, et ces différents placements de parenthèses ne changent absolument rien du point de vue pratique, le seul endroit où tu les vois c'est dans l'interpréteur (très nul) d'OCaml.
-- Jedaï |
|
|
00
|
|
|
#22 |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Tu as raison, d'ailleurs la vraie bonne idée pour OCamlWin ça serait déjà qu'il arrête de planter à tout bout de champ, alors là je dirais
|
|
00
|
|
|
#23 | ||
![]() ![]() Inscription : juin 2006 Messages : 6 935 ![]() |
Je sais que c'est bidon, mais c'était pour répondre à quelqu'un...
Code :
__________________
Je ne répondrai à aucune question technique en privé |
||
|
|
00
|
|
|
#24 |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Et pourquoi tu lui as pas répondu:
Code :
let getMaxC l maxi = List.fold_left max maxi l;;
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
|
00
|
|
|
#25 | |
![]() ![]() Inscription : juin 2006 Messages : 6 935 ![]() |
Citation:
)
__________________
Je ne répondrai à aucune question technique en privé |
|
|
|
00
|
|
|
#26 | ||
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Un petit module qui contient quelque fonctions élémentaires parfois utiles comme paramètre d'une fonctionnelle:
Code :
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
||
|
00
|
|
|
#27 | ||
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Un autre module qui contient des fonctions sur les listes, sauf mention contraire toutes les fonctions sont récursives terminales.
Code :
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
||
|
00
|
|
|
#28 | ||||||||
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Le Tutoriel de millie présente les graphes et leur parcours en OCaml.
Le chapitre 33 de mon tutoriel présente également un algorithme de parcours pour les graphes dirigés avec racine. La version de millie est complètement fonctionnelle, alors que la mienne utilise un marquage des sommets déjà traversés. Je donne ici une version 100% fonctionnelle de mon code. Dans cette nouvelle version la notion de flèche devient explicite avec le type arrow : Code :
Une flèche white conduit à un noeud jamais traversé. Une flèche black conduit à un noeud déjà traversé. Il n'y a plus ni d'horloge ni de champ mutable. Les fonctions du chapitre 33 deviennent alors: Code :
![]() La fonction qui construit l'automate de cette figure devient: Code :
Code :
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
||||||||
|
00
|
|
|
#29 |
|
Invité(e)
![]() Messages : n/a ![]() |
J'avoue avoir des doutes sur ce code... Comment est ce que tu peux "colorier" un sommet en coloriant les fleches qui arrivent dessus puisque tu n'as aucun moyen de trouver les antecedants? Et en plus tu ne "changes" à aucune moment la moindre couleur. La fonction length par exemple boucle sur un sommet ayant une simple fleche blanche vers lui même.
J'ai loupé un truc ? |
00
|
|
|
#30 |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Les flèches ne sont pas coloriées (à la traversée), elles sont colorées (à la création).
"lui-même" c'est un noeud déjà traversé, donc flèche noire vers "lui-même".
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
|
00
|
|
|
#31 |
|
Invité(e)
![]() Messages : n/a ![]() |
Mais euh... comment est ce qu'on décide à la création quel noeud est déjà traversé ? Et pourquoi "lui-même" serait "déjà traversé" ? Et à la rigueur, tu fais pareil avec deux noeuds, chacun pointant vers l'autre
|
00
|
|
|
#32 | ||
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Code :
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
||
|
00
|
|
|
#33 |
|
Invité(e)
![]() Messages : n/a ![]() |
Je ne comprends vraiment pas le principe de précolorier un graphe avant de le parcourir... En fonctionel pure, je comprendrais de conserver l'ensemble des sommets déjà parcouru, mais attribuer des couleurs "avant" pour que le parcours se passe "bien", ça sert à quoi ?
|
00
|
|
|
#34 |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
C'est fonctionnel pur ou du moins je crois que ça l'est.
D'autre part ça conserve l'ensemble des sommets déjà parcourus, mais je peux faire fausse route, c'est écrit accoudé au comptoir, c'est pas comme si c'était du code tiré d'une application réelle.
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
|
00
|
|
|
#35 |
|
Invité(e)
![]() Messages : n/a ![]() |
C'est effectivement fonctionnel pur puisqu'il n'y a ni référence ni champ mutable. Mais à part ça... Il n'est pas vraiment normal d'avoir à définir le graphe à l'avance spécifiquement pour que le parcours "se passe bien" ! Et surtout, ça ne passe pas à l'échelle, et ce n'est pas adapté à des graphes générés automatiquements.
Je pense qu'une bonne façon de faire est de passer l'ensemble des sommets déjà rencontrés en argument (par exemple en donnant un identifiant unique à chaque sommet et en mettant les identifiants déjà rencontré dans un Map.Make(Int)) |
00
|
|
|
#36 |
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Lex est un module dédié à l'analyse lexicale/syntaxique récursive descendante.
Comme il serait trop long ici d'en détailler l'usage de façon réaliste, je vous renvoie à la partie VII de mon tutoriel. Les avantages du module Lex :
Les inconvénients du module Lex :
L'archive jointe ci-desous contient:
TP5 est un analyseur récursive descendant pour une syntaxe très proche de Turbo Pascal 5. Les principales différences avec Turbo Pascal 5 sont:
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
|
00
|
|
|
#37 | ||
|
Membre à l'essai
![]() |
Problème simple, illustrant l'utilisation des fonctions standard d'entrées et sorties.
Code :
|
||
|
|
00
|
|
|
#38 | ||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 961 ![]() |
Classe pour gérer les intervalles
Pour les personnes ayant besoin de faire un peu d'analyse de code, voici une classe prête à l'emploi pour manipuler des intervalles sur des domaines tels que |R Code :
|
||
|
|
00
|
|
|
#39 | ||
![]() ![]() Damien GuichardInscription : juin 2007 Messages : 1 512 ![]() |
Juste pour te faire honte et afin que personne ne prenne exemple sur toi:
Code :
__________________
Du même auteur: le cours OCaml, le dernier article publié, le projet, le blog dvp et le jeu vidéo. Avant de poser une question je lis les règles du forum. |
||
|
00
|
|
|
#40 | |||
![]() ![]() ![]() Nicolas ValléeIngénieur d'études Inscription : décembre 2005 Messages : 9 961 ![]() |
Citation:
?il y a deux représentations alors qu'il s'agit du cas "standard" ; mais il est vrai que ta version est bien plus compacte j'ai quand même mis pas mal de temps pour choisir mon type... qui est certes simple, mais que je n'arrivais pas à rendre plus contraignant en effet, on a plusieurs représentations pour l'ensemble vide (comme le tien), et ça ne me plait pas trop |
|||
|
|
00
|
Copyright © 2000-2013 - www.developpez.com