| Anonymous | Login | Signup for a new account | 2013-06-20 11:29 CEST | ![]() |
| Main | My View | View Issues | Change Log | Roadmap |
| View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | |||||||
| ID | Project | Category | View Status | Date Submitted | Last Update | |||
| 0000147 | OCaml | OCaml general | public | 2000-06-23 11:55 | 2000-06-23 17:09 | |||
| Reporter | administrator | |||||||
| Assigned To | ||||||||
| Priority | normal | Severity | minor | Reproducibility | always | |||
| Status | closed | Resolution | fixed | |||||
| Platform | OS | OS Version | ||||||
| Product Version | ||||||||
| Target Version | Fixed in Version | |||||||
| Summary | 0000147: espace insécable sous MacOS | |||||||
| Description | Bonjour, je m'adresse ici à ceux qui ont réalisé le portage de Caml-light comme d'Objective Caml sous MacOS, et que je remercie vivement de l'avoir fait. Par ailleurs, il ne s'agit pas d'un bug à proprement parler, mais plutôt d'un comportement de l'interpréteur et du compilateur qui pourrait, je pense, être amélioré. En tapant une valeur de type liste tout-à-fait banale sous Objective Caml 3.00 (MacOS) let e = [ 1 ; 2 ; 3 ; 4 ] ;; J'ai obtenu le message d'erreur: This expression is not a function, it cannot be applied Et je me suis arraché quelques touffes de cheveux sur le crâne avant de découvrir ce qui n'allait pas dans cette déclaration, qui présentait à l'écran toutes les apparences d'une déclaration correcte, comme vous pouvez l'observer ci-dessus. Dans le jeu de caractères standard des polices Mac, figure un caractère spécial nommé "espace insécable" de code ASCII décimal 202 (je cois) que l'on obtient au clavier en tapant alt-espace. Comme, lorsqu'on tape rapidement du code dans un langage de programmation, la touche alt est fréquemment utilisée (pour faire les crochets, accolades, barres verticales, etc...), il n'est pas rare qu'un relâchement tardif de cette touche provoque l'apparition d'un caractère "espace insécable" dans le code, surtout quand on a la (bonne ?) habitude d'aérer celui-ci par de nombreux "blancs". Sous l'interpréteur Caml-light, le mal n'est pas grand, en effet, le caractère est refusé comme "caractère illégal". C'est un peu fastidieux de faire les remplacements lorsqu'on lit un long fichier, mais on ne perd pas trop de temps. Sous Objective Caml, selon la position de ce caractère, on obtient des messages très savoureux. J'ai essayé let e = [ 1 ] ;; espace insécable entre let et e: Unbound value let e (ce qui est normal, évidemment, puisque cela ne fait qu'un seul nom, mais cela ne se voit pas !) espace insécable entre e et =: définition acceptée, mais si on demande après la valeur liée à e (sans espace insécable, évidemment, on ne l'a pas fait exprès), on obtient : Unbound value e (ce qui est normal,une fois qu'on a compris que l'espace insécable fait partie du nom de la valeur, mais, pour le comprendre,...) espace insécable entre = et [ : Unbound constructor (???) espace insécable entre [ et 1 : Unbound constructor 1 (???) espace insécable entre 1 et ]: This expression is not a function, it cannot be applied (le meilleur... mais où voit-il donc une syntaxe d'appel de fonction ?) espace insécable entre ] et ;; même message que ci-dessus, mais la zone sélectionnée n'est pas la même. Depuis que j'ai compris cela, je ne compile plus un fichier avant d'avoir fait "remplacer partout alt-espace par espace" mais il y a quand même là, à mon avis, un vrai problème, dont la solution semble (semble seulement, peut-être, aux yeux du profane) facile à mettre en oeuvre: intégrer tout bêtement le caractère en question parmi les séparateurs, aussi bien en Caml-light qu'en Objective Caml, ce qui contribuerait à peu près certainement à la conservation d'une chevelure normalement abondante (on fait ce qu'on peut!) chez un nombre non négligeable de programmeurs Caml. Meilleurs encouragements pour la poursuite du développement de ce merveilleux langage, y compris sur Mac M. Bour | |||||||
| Tags | No tags attached. | |||||||
| Attached Files | ||||||||
Notes |
|
|
(0000409) administrator (administrator) 2000-06-23 17:09 |
> From: Michel Bour <bour@cybercable.fr> > Bonjour, Bonjour > Dans le jeu de caractères standard des polices Mac, figure un caractère > spécial nommé "espace insécable" de code ASCII décimal 202 (je cois) que > l'on obtient au clavier en tapant alt-espace. Comme, lorsqu'on tape > rapidement du code dans un langage de programmation, la touche alt est > fréquemment utilisée (pour faire les crochets, accolades, barres > verticales, etc...), il n'est pas rare qu'un relâchement tardif de cette > touche provoque l'apparition d'un caractère "espace insécable" dans le > code, surtout quand on a la (bonne ?) habitude d'aérer celui-ci par de > nombreux "blancs". En effet, d'ailleurs ca m'arrive regulierement. La bonne solution serait une fonte qui affiche ce caractere sous une forme visible, mais je n'en ai pas trouve... > solution semble (semble seulement, peut-être, aux yeux du profane) > facile à mettre en oeuvre: intégrer tout bêtement le caractère en > question parmi les séparateurs, aussi bien en Caml-light qu'en Objective > Caml, Le probleme est que le code a modifier est commun a tous les portages, et que O'Caml a pris le parti d'utiliser le jeu de caracteres ISO8859-1, qui n'est pas compatible avec celui de MacOS. Donc je me suis rabattu une solution intermediaire qui consiste a interdire les caracteres non-ASCII dans le portage MacOS de O'Caml. Avantages: 1. C'est compatible avec la doc, qui dit bien que les caracteres accentues ne sont pas forcement supportes par toutes les implementations. 2. Ca ne necessite pas de modification lourde du compilateur. 3. Ca rend les messages d'erreur beaucoup moins mysterieux. Inconvenient: Les sources O'Caml avec des accents dans les identificateurs ne compilent plus sous MacOS. -- Damien |
Issue History |
|||
| Date Modified | Username | Field | Change |
| 2005-11-18 10:13 | administrator | New Issue | |
| Copyright © 2000 - 2011 MantisBT Group |