<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Thank you for your help. I am sure that you are right as to the cause of the problem.&nbsp; However, I do not know what I should do to solve it. The Haskell program is generated by LaTeX macros.&nbsp; It is useless to import System.IO.UTF8. I did it. The system keeps producing the same error.&nbsp; What I need is to configure GHC to accept input from any editor, or text generating tool (like TeX). I suppose it is not very difficult to do it, since all other languages have it. I mean, Haskell is the only language&nbsp; where I cannot type a common word like "façade" without running into trouble.<br><br>I will send you a slightly more complete program, so you can analyse the problem.&nbsp; One has two programs in Tex, and an example.&nbsp; The first file is haskell.gen and it defines the macro \haskell{}<br><br>% Store in file&nbsp; haskell.gen<br>% Last change
 2007-05-23<br><br>\newcount\evalFilecount<br>\evalFilecount=0<br><br>{\gdef\haskellSetup{%<br>&nbsp; \csname newwrite\endcsname\progPort<br>&nbsp; \immediate\openout\progPort H\jobname.hs %<br>&nbsp; \immediate\write\progPort{module H\jobname}%<br>&nbsp; \immediate\write\progPort{where}%<br>&nbsp; \newlinechar=`\^^M%<br>&nbsp; \newlinechar=`\^^M%<br>}%<br>}<br><br>\newcommand{\haskell}{\begingroup<br>&nbsp; \ifx\progPort\UNDEFINED \haskellSetup\fi%<br>&nbsp; \catcode`\^^M=12<br>&nbsp; \haskellGen<br>&nbsp;}<br><br>\newcommand{\haskellGen}[1]{%<br>&nbsp; \immediate\write\progPort{#1}%<br>&nbsp; \endgroup<br>&nbsp; }<br>%end of file haskell.gen<br><br><br>The second file is hask.ell and it defines \eval{}.&nbsp; It is slightly more complex than the previous one. Still, it is very simple.<br><br>% Store in file hask.ell<br>% Last change 2007-05-23<br><br>\newcount\evalFilecount<br>\evalFilecount=0<br><br>{\gdef\evalSetup{%<br>&nbsp; \csname
 newwrite\endcsname\outPort % Port name<br>&nbsp; \immediate\openout\outPort \jobname.hs %<br>&nbsp; \newlinechar=`\^^M%<br>&nbsp; \immediate\write\outPort{import H\jobname}%<br>&nbsp;&nbsp; \newlinechar=`\^^M%<br>&nbsp; \immediate\write\outPort{import IO}%<br>&nbsp;&nbsp; \newlinechar=`\^^M%<br>&nbsp; \immediate\write\outPort{main= do&nbsp; }%<br>&nbsp; \newlinechar=`\^^M%<br>}%<br>}<br><br>\newcommand{\eval}{\begingroup<br>&nbsp; \ifx\outPort\UNDEFINED \evalSetup\fi<br>&nbsp; \global\advance\evalFilecount by 1<br>&nbsp; \edef\evalAuxFile{\jobname-G-H-C\the\evalFilecount}%<br>&nbsp; \immediate\write\outPort<br>&nbsp;&nbsp;&nbsp; {&nbsp; outh &lt;- openFile "\evalAuxFile.ghc" { WriteMode;} }%<br>&nbsp; {\immediate\openin0=\evalAuxFile.ghc<br>&nbsp;&nbsp; \ifeof0 \immediate\closein0<br>&nbsp;&nbsp; \else \input \evalAuxFile.ghc \fi}%<br>&nbsp; \catcode`\^^M=12<br>&nbsp; \evalBody<br>&nbsp;}<br><br>\newcommand{\evalBody}[1]{%<br>&nbsp;
 \immediate\write\outPort{#1}%<br>&nbsp; \immediate\write\outPort{&nbsp;&nbsp; hClose outh;}%<br>&nbsp; \endgroup<br>&nbsp; }<br>%end of file hask.ell<br><br><br>Below, there is an example of how to use the above macros. Store it in file tudin.tex.<br><br>\documentclass[12pt]{article}<br>\usepackage[latin1]{inputenc}<br>\usepackage[brazil]{babel}<br>\usepackage{makeidx}<br>\usepackage{wrapfig}<br>\usepackage{pictexwd}<br><br>\title{Calling Haskell from \LaTeX}<br>\author{Philippos Apolinarius}<br>\date{}<br><br>\begin{document}<br>\maketitle<br><br>\input haskell.gen<br>\input hask.ell % load \eval<br><br>\eval{ hPutStrLn outh "Hello, facade!"<br>}<br><br>\eval{ hPutStrLn outh (show (fat 6))<br>}<br><br>\haskell{<br>&nbsp;fat n | n&lt;1= 1<br>&nbsp;fat n= n*fat(n-1)<br>}<br>\end{document}<br><br>In order to use these examples, do the following:<br><br>1 --- Apply latex to tudin.tex:<br><br>C:\hastex&gt; latex tudin.tex<br><br>2 --- You have generated
 file tudin.hs and Htudin.hs. Execute tudin.hs:<br><br>C:\hastex&gt; runghc tudin.hs<br><br>This action will generate two files: tudin-G-H-C1.ghc, and tudin-G-H-C2.ghc. There is one file for each instance of \eval{}.<br><br>3 --- If you run latex tudin.tex again, it will load these two files, and insert the results of the Haskell programs into the resulting pdf or dvi files.<br><br>C:\hastex&gt; latex tudin.tex<br><br><br><br>&nbsp;My friend has a lot of complex Clean libraries that she uses to generate postscript images of her designs.&nbsp; The trouble is that she needs to compile Clean souce code generated by the two LaTeX macros.&nbsp; SInce Clean needs two files per module (implementation module and definition module), the two LaTeX macros are quite complex.&nbsp; Clean looks a lot like Haskell. Therefore, I believe that she will not have any difficulty in translating the code to Haskell. It is true that input/output is different in Clean and
 Haskell. However, input/output can be centered in the main function.&nbsp; Unhappily she needs to write all those French, Swiss, Italian and Spanish names, like façade,&nbsp; Antoní Gaudi,&nbsp; Xenákes, etc. BTW, if you discover how to use strings in Haskell, one could write Haskell-café, instead of Haskell-cafe.<br><br></td></tr></table><br>
      <hr size=1>Make your browsing faster, safer, and easier with the new Internet Explorer® 8. Optimized for Yahoo! <a href="http://downloads.yahoo.com/ca/internetexplorer/"><b>Get it Now for Free! </b></a>