[Haskell-cafe] A 3-line program that does not work
dons at galois.com
Sat Oct 24 16:43:06 EDT 2009
> 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
> 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
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
Note that GHC 6.12 supports arbitrary encodings on Handles, making
this even easier,
More information about the Haskell-Cafe