Quería escribir un código educativo en Haskell con caracteres Unicode (no latinos) en los identificadores. (De modo que los identificadores se ven bonitos y naturales para los hablantes de un lenguaje natural distinto del inglés que no usa los caracteres latinos en su escritura). Por lo tanto, me propuse encontrar una implementación de Haskell adecuada que permita esto.¿Dónde se especifica si los identificadores Unicode deben permitirse en una implementación de Haskell?
¿Pero dónde se especifica esta característica en la especificación del idioma? ¿Cómo me referiría a esta característica cuando busque una implementación conforme? (¿Y qué implementaciones de Haskell son compatibles con los identificadores Unicode?)
Resultó que una implementación de Haskell aceptó mi código con identificadores Unicode, mientras que otro no lo aceptó. Me gustaría que hubiera una manera de formalizar este requisito de mi código, en una forma de cambio de función de idioma tal vez, de modo que si yo o alguien más intente ejecutar mi código, sería inmediatamente claro si falta su implementación. la característica requerida y, por lo tanto, debería buscar otra. (También podría haber una página wiki para esta característica - "Identificadores Unicode", que enumeraría cuáles de las implementaciones existentes lo admiten, de modo que uno sabría a dónde ir si lo necesita).
(Por cierto, He puesto una etiqueta de "sintaxis" en esta pregunta, pero en realidad percibo que es un problema del nivel de lexing, un nivel más bajo que la sintaxis de un idioma. ¿Hay alguna etiqueta aquí para las características del nivel de lexing de un idioma, en lugar de características de la especificación de sintaxis de un idioma?)
En cuanto al último párrafo: es parte de la sintaxis. Es probable que no sea parte de la gramática, pero la distinción entre tokenización y análisis solo existe en la práctica. Y hay sistemas (por ejemplo, Análisis de expresión de gramáticas) que omiten el paso de tokenización y se adaptan al código fuente real. – delnan
Detalles de mis experimentos: ghc-6.10.4- [alt2] (http://prometheus.altlinux.org/en/5.1/srpms/ghc) (IIRC) no aceptó identificadores Unicode, ghc-6.12.3- alt4 y ghc-7.0.1- [alt1] (http://prometheus.altlinux.org/en/Sisyphus/srpms/ghc) permiten los identificadores Unicode y los abrazos98-20060921- [alt5] (http: //prometheus.altlinux .org/es/5.1/srpms/hugs98) no permite los identificadores Unicode (lo cual es desafortunado, porque pensé que podría ser mejor para la educación que ghc por su mayor simplicidad, es decir, quizás mensajes de error más simples). –
Experimentos más relacionados con identificadores Unicode: Ah, y también di curry-0.9.11 una prueba (porque tal vez quiera mostrar algún código con Curry "extensiones"): este compilador de Münster Curry no permitió identificadores Unicode (IIRC) . –