Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1449 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [Divers][Scheme] Rediriger le read ...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Divers][Scheme] Rediriger le read ...

n°951087
Chronoklaz​m
Posté le 11-01-2005 à 19:51:27  profilanswer
 

Bonjour, voila j'aimerais "rediriger" le vrai read de scheme vers un objet de la classe text%, ceci non pas par peur devant le boulot que ca represente (quoique) mais surtout au petit cadre tout joli dans lequel read écoute l'entrée standard.
 
Sachant que la fonction read peut s'écrire (read port), ceci m'amméne donc au probleme de la redéfinition/construction d'un port.  
Je veux donc que ce soit précisement mon éditor :)  
 
Or il existe une jolie fonction :  
 
(make-custom-input-port read-string-proc peek-string-proc-or-false close-proc)
 
Malheureseument les choses deviennent moins jolies à partir de là :(
 
Il s'agit maintenant de définir les fonction qui lisent, peekent et ferme le port.
 
Je suppose que read-string-proc est un truc du genre:  
 

Code :
  1. (lambda (p-in)
  2.      (if (equal? p-in 'eof)
  3.          ....
  4.          (send text get-text (send text get-lastline) 'eof)))
  5. // Ceci on écoutant les touches avec on-char


 
Le probleme c'est que je m'imagine mal ce que peuvent faire les autres fonctions ; peek et close. :sweat:  
 
Quelqu'un a une idée ?


Message édité par Chronoklazm le 11-01-2005 à 20:09:18

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
mood
Publicité
Posté le 11-01-2005 à 19:51:27  profilanswer
 

n°951160
Chronoklaz​m
Posté le 11-01-2005 à 21:11:09  profilanswer
 

J'ai vraiment l'impression d'être le seul paumé à faire du Scheme ici :(


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°951302
le_courtoi​s
Posté le 11-01-2005 à 23:38:41  profilanswer
 

Bonjour,  
 Non tu n'est pas le seul, enfin presque, vu que mon niveau programmation se situe au niveau tanche ++ j'essaye d'apprendre scheme "pour le plaisir"(sic). Je ne sais pas si je pourrai t'aider, mais j'avoue ne pas trop comprendre ce que tu veux faire. Peut-tu expliquer de manière plus "imagée" pour moi. En ce qui concerne close, elle sert tout simplement à fermer le port que tu as crée auparavant par la procédure make-custom-input-port. Cela paraît bête comme réponse, je pense que tu le savais déjà. Mais explicite et je vérai si je peux t'aider.

n°951311
pains-aux-​raisins
Fatal error
Posté le 11-01-2005 à 23:45:43  profilanswer
 

Par analogie avec d'autres langages, je dirais que peek se contente de lire le flux en entrée sans le "consommer", contrairement au read qui lit l'entrée en la consommant, c'est à dire la supprime du flux après lecture.
La fonction close à pour but de fermer le flux (comme on doit fermer un fichier)
Après en googlant ca doit le faire mais bon... Scheme n'est pas super utilisé :/

n°951324
pains-aux-​raisins
Fatal error
Posté le 11-01-2005 à 23:58:02  profilanswer
 

je viens de dénicher le lien suivant :
http://scheme.auteuil.inserm.fr/Li [...] @default11
 
A priori, mes intuitions n'étaient pas trop mauvaises.

n°951349
le_courtoi​s
Posté le 12-01-2005 à 00:33:41  profilanswer
 

Merci pour le lien, je l'avais pas celui-là. Au fait quelle implémentation Scheme utilises-tu. Moi, j'ai Dr-Scheme (http://www.drscheme.org/). Ce que j'ai compris, c'est que tu passes par une interface graphique et que tu veux pouvoir lire/traiter les données écrites dans un champ dédié (tu as écrit "classe text%" ). Pourquoi n'essayes-tu pas un

Code :
  1. (send a get-value (from text-field%))

?
 Ou si tu es dans un éditeur tu as une méthode "identique" qui est get-text% dans text% qui implémente editor%. Note : il existe des méthodes qui ferment automatiquement les ports outilisés. Mais dis-nous en plus.

n°951383
Chronoklaz​m
Posté le 12-01-2005 à 01:57:14  profilanswer
 

Ah, là ca fait vraiment plaisir! Moi qui était parti vers de lointaines contrées http://www.codecomments.com/ :)
 
Moi aussi je suis sur DrScheme de chez PLT.
 
Bon en ce qui concerne la fonction close y a pas de problemes je me suis fait du souci pour rien :)
 
Par contre (send text-field get-value (from text-field%))  marche uniquement sur des objets de la classe text-field% pas de la classe text%. Text-field% est beacoup plus restreint que la classe text%.
 
Le probleme avec la methode get-text de la classe text% est que il faut specifier le start et le end cad l'indice de depart et de fin du text qu'on veut prendre ... ce qui n'est pas pratique dans le cas ou on veut en faire une fonction (une lambda a mettre en argument dans le make-custom-port).
J'ai laissé tomber mes tentatives avec cette fonction, mais j'y retournerai dés demain.
 
Une autre solution serait d'ecouter cette entrée standard avec la methode on-char et dés qu'on a entendu une touche "entrée" on renvoi la chaine, qui serai ensuite analysée bein entendu (symbol?, number? ... tout ceci pour la gestion des exceptions) avec la methode get-text. Dans ce cas plus besion de read, car c'est moi qui le fait. Ici le probleme c'est que il faut taper dans des threads je pense.
 
En fait je me suis un ptit peu precipité avec ma volonté de rediriger le vrai read de scheme, car j'ai trouvé sur d'autres forums que dans mon cas ce serai plus rediriger read-line, ce qui est beacoup plus simple.
 
En fait j'ai trouvé un truc tout bete :
 
(get-text-from-user "INPUT DIALOG" "Entrez une valeur" global_frame)
 
C'est trés light, ca me plait pas du tout mais pour l'instant ca marche :) Mais je ne fait que devier le probleme, car mon but étant de simuler une fenetre d'interaction "à la DrScheme". En fait, je suis en train de faire un interpreteur d'un mini-Basic en Scheme j'ai fini toute la partie lex/parse, me manqué plus que l'interpretation de l'instruction [ INPUT "Message", var ] qui demande la valeur à l'utilisateur et la met dans x.
 
Mais le boss final sera plus coriace que ca, il s'agit du coloriage de la syntaxe et là je doute que je puisse trouver des choses du style (please-color-basic-syntax text '(A-liste de mots clés . couleurs)) :D à la maniere du get-text-from-user :)


Message édité par Chronoklazm le 12-01-2005 à 02:03:31

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°951455
le_courtoi​s
Posté le 12-01-2005 à 10:12:42  profilanswer
 

Bonjour,
   ALors là, euh, ben,... Moi qui pensais pouvoir enfin être utile à quelqu'un :sweat: . Cela semble dépasser mes capacités. Par contre si tu n'es pas extrêmement pressé, laisse moi du temps pour potasser, tout cela m'intéresse et je crois avoir lu il y a longtemps des trucs à ce sujet (le temps d'aller à la cave et d'en ressortir vivant). Et après, peut-être poserai-je quelques questions autres. A bientôt et courage.

n°951992
le_courtoi​s
Posté le 12-01-2005 à 21:35:31  profilanswer
 

Re bonjour, voire bonsoir,
 
  Je me suis permis de chercher un peu sur ton problème. Si tu restes dans l'optique de prendre des info dans un text%, voilà qq trucs qui m'ont l'air intéressants. Cependant vu mon niveau, je t'orienterai plutôt vers les docs: pour prendre des info dans text% je pense que tu dois passer par la classe snip% (essaye sur ta console, après avoir lancé ton appli (send text% find-snip 0 'after). Lis la doc sur string-snip%. Autre chose, va voir pour editor-stream-in% dans la doc.
 
   Mais, d'après ce que tu me dis, tu veux faire une interface à la drscheme, donc dans la "fenêtre" du bas, tu veux pouvoir écrire autre chose que ta variable x, une procédure par exemple. Ne voudrais-tu pas, finalement, instancier un prompt? tape dans la doc les mots-clefs suivants: insert-prompt  ; read-eval-print-loop ainsi que graphical-read-eval-print-loop. Pour moi, c'est trop compliqué.
   Au fait, n'hésite pas à me dire si mes commentaires sont du type boulet! Pour finir, as-tu résolu ton pb de frames ajustables?
 
 Nouvelle info :  http://www.open-scheme.com/doc/tutorial/node127.htm ça peut te donner des idées.


Message édité par le_courtois le 14-01-2005 à 00:10:08

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [Divers][Scheme] Rediriger le read ...

 

Sujets relatifs
Question divers pour débutantDisposer d'un read non bloquant
[C] question sur read()[Divers] besoin d'aide : multiprogrammation, multitraitement ETC ...
[Scheme] Redimensionnement de panel dans un frameA quand un topic Lisp/Scheme/Caml ?
[ASP] Database or object is read-only[Divers] Idée de projet informatique (DUT 2ème année)
[Lisp] (Scheme) EXPR->Lamba[Divers] Progress
Plus de sujets relatifs à : [Divers][Scheme] Rediriger le read ...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR