Skip to topic
|
Skip to bottom
Jump:
Minfo03
Minfo03 Web
Minfo03 Web Home
Changes
Index
Search
Webs
Accueil
Docs
Enseignants
Linfo
MIPS
Main
Minfo
Minfo03
Minfo04
Minfo05
Minfo06
Minfo07
Private
Projets
Sandbox
TWiki
Create
personal sidebar
Edit
Attach
Printable
Minfo03.IntegrationDrScheme
r1.17 - 31 May 2004 - 18:51 -
SylvainBeucler
topic end
Start of topic |
Skip to actions
---+ Intégration de langages dans DrScheme ---++ Langages existants * PLT Algol60: * _proof of concept_ de *Matthew Flatt*. * Le top-level ne prend que des programmes complets (avec =begin ... end=). * PLT ProfessorJ: * 4 niveaux de langages (3 dans la 206p1, il manque le niveau "full"). * *Coloration syntaxique* dédiée. Pas d'indentation. _Check Syntax_ partiel. _Test Suite_? * Implémentation du langage Java, sans API. Pour les E/S, utiliser le top-level. * Destiné à l'*enseignement* (cf. HtDP). * Choix des niveaux de languages: _ProfessorJ: A Gradual Intro to Java through Language Levels_ par Kathryn E Gray et Matthew Flatt: http://www.cs.utah.edu/%7Ekathyg/oopsla03-edsymp-gray.pdf * PLT Spy (Python-in-Scheme) * Description sur http://plt-spy.sourceforge.net/documentation.html * Code sur le CVS de sf.net/projects/plt-spy * _Check Syntax_ (et _Test Coverage_?) au point * Installer ce module dans collects/python et PLT Scheme depuis les sources dans ~/plt. Puis aller dans python/c et taper =make=. * FatherTime * Inspiré par le travail sur la Programmtion Fonctionnelle *Réactive* de la communauté Haskell * "Scheme plus signals": en fait, il s'agit plutôt d'un ensemble de fonctions utilisables directement dans MzScheme qu'un nouveau langage. * Permet un résultat qui change en fonction du temps. A essayer (cf. ci-dessous) * Ajoute une icone au chargement. * Dromedary * Sous-ensemble de O'Caml * Je n'ai pas trouvé d'adresse officielle, ni de doc! * 3 niveaux de langage * Intégration du _Check Syntax_ ---+++ HelloWorld Par la suite, en lisant le fameux chatel-pivoteau, j'ai trouvée cette sympathique adresse plus complète: http://www.bagley.org/~doug/shootout/bench/hello/ ---+++ Algol60 <verbatim> begin prints(`Hello, World!') end </verbatim> ---+++ ProfessorJ <verbatim> public class HelloWorld { public String toString() { return "Hello World!"; } } </verbatim> puis au top-level: =new HelloWorld().toString()= ---+++ FrTime A essayer: =seconds= Cela affiche le Unix timestamp et ça le met à jour! Avec variante: <verbatim> (define (iota n) (define (iter i acc) (if (< i 0) acc (iter (- i 1) (cons i acc)))) (iter (- n 1) '())) (iota (modulo seconds 10)) </verbatim> Sinon c'est =(require mzschme)(display "Hello, World")(newline)= ou encore ="Hello, World"= D'autres de chez PLT: <verbatim> (map (lambda (x) (zero? (modulo seconds x))) '(2 3 5 7 11 13 17)) (map (lambda (i) (modulo seconds (+ i 1))) '(0 1 2 3 4 5 6 7 8 9)) (require (rename mzscheme quotient quotient)) (map (lambda (x) (modulo (lift #t quotient seconds (expt 2 x)) 2)) '(0 1 2 3 4 5 6 7 )) </verbatim> ---+++ Python: =print "Hello, World!\n"= (bof) ---+++ Dromedary <verbatim> print_endline "Hello, world";; </verbatim> ---++ Attentes pour SpécialK Les principaux outils que proposent DrScheme sont: | *Outil* | *"Implémentabilité"* | | Editeur de texte | *OK* [code à documenter] | | Arrêt de l'exécution avec _Stop_ | *OK* | | Coloration syntaxique | _En cours_ | | Indentation | _En cours_ | | _Check Syntax_ | Faisable | | _Test Coverage_ | ? | | _Test Suite_ | ? | | _Profiler_ | ? | | MrFlow | *Pas utilisable* | | Icone au chargement | *OK* [code à intégrer] | | Recherche dans l'aide spécialisée | Faisable | | Stepper | IMHO très difficile. Cf. Beginning Student | | Hyperliens dans les exceptions | ? | | Inclusion de doc.txt dans la liste | *OK* | | Inclusion dans la liste des logiciels installés | *OK* | | Inclusion de la doc la liste des manuels installés | *OK* | | Mise à jour de la liste de fonctions du fichier courant | ? | ---++ Implémentation Voir aussi la PagePersoJulienCharles. Plusieurs notions sont en jeu: les modules (organisation et description du groupe de code), les _units_ (signature?) et l'API d'extension de DrScheme. La plupart des possibilités d'intégrations mentionnées plus haut sont elle-mêmes des _tools_ DrScheme, ce qui un peu contradictoire. ---+++ Prérequis: une _unit_ pour l'outil Cette unit va permettre de faire le lien avec DrScheme et enregistrer des procédures de lancement au démarrage. Une unit minimale devrait ressembler à ceci: <verbatim> (module tool mzscheme (require (lib "tool.ss" "drscheme") (lib "unitsig.ss")) (provide tool@) (define tool@ (unit/sig drscheme:tool-exports^ (import drscheme:tool^) (define (phase1) (void)) (define (phase2) (void))))) </verbatim> ---+++ Icone au démarrage + Inclusion dans _About_ Utiliser un truc du genre: <verbatim> (define tools '(("tool.ss"))) (define tool-names '("SpécialK")) (define tool-icons '(("Kicone.png" "specialk"))) (define tool-urls '("http://www.specialk-language.org")) </verbatim> dans le info.ss. Après avoir créé une unit =tool= dans =tool.ss=. L'icône apparaît au chargement de DrScheme, dans l'outil de bug report, et dans la boîte de dialogue About où elle est accompagnée du nom de l'outil avec un éventuel hyperlien. ---+++ MrFlow Cet outil est _Coming soon_ depuis un paquet de temps, donc on ne peut pas encore l'utiliser. ---+++ Inclusion de doc.txt dans la liste Tous les doc.txt à la racine d'une collection sont pris en compte et listés dans la page "Installed Manuals" du HelpDesk dans la section Doc.txt. ---+++ Inclusion dans la liste des logiciels installés Le =info.ss= à la racine d'une collection est lu au démarrage et permet de définir le nom et une description de la collection dans la section "Installed Components" du HelpDesk. ---+++ Inclusion de la doc la liste des manuels installés Dans la section _Others_ automatiquement et uniquement. L'inclusions dans _Languages_ est malheureusement codée en dur (collects/help/private/docpos.ss).
to top
End of topic
Skip to action links
|
Back to top
Edit
|
Attach image or document
|
Printable version
|
Raw text
|
More topic actions
Revisions: | r1.17 |
>
|
r1.16
|
>
|
r1.15
|
Total page history
|
Backlinks
You are here:
Minfo03
>
IntegrationDrScheme
to top
Copyright © 1999-2021 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WIKIDeptinfo?
Send feedback