phi500ac: > I have a friend who is an architect. I asked her why she does not use Haskell, > since she is fond of functional programming. She writes her scripts in Clean, > and needs to compile them before using them to generate postscript diagrams. > In > Haskell, I told her, she could use runghc, and skip the compilation step. She > told me that she would consider switching to Haskell, and skipping the > compilation step, if I could tell her how to write "fa ade" in Haskell. > > C:\ghc\hastex>runghc tudin.hs > > tudin.hs:10:19: > lexical error in string/character literal (UTF-8 decoding error) > > After browsing the Internet, I noticed that a many of people are having the > same problem. Could someone tell me what is wrong with my friend's program? > > import System.IO > > main= do > outh <- openFile "garb.tsm" WriteMode > hPutStrLn outh "A fa ade is the exterior of a building" > hClose outh > > I would appreciate a "normal" solution, that is, I would like to type the text > in any editor, or generate it with LaTeX macros, and compile it using ghc. >
Use the utf8-string package to output utf8 to files. Something like: import qualified System.IO.UTF8 as U import System.IO main = do let s = "A façade is the exterior of a building" writeFile "garb.tsm" s t <- readFile "garb.tsm" print (s == t) Which we can check keeps the characters: $ runhaskell A.hs True Note that GHC 6.12 supports arbitrary encodings on Handles, making this even easier, http://ghcmutterings.wordpress.com/2009/09/30/heads-up-what-you-need-to-know-about-unicode-io-in-ghc-6-12-1/ _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe