[Haskell-cafe] A 3-line program that does not work
Don Stewart
dons at galois.com
Sat Oct 24 16:43:06 EDT 2009
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/
More information about the Haskell-Cafe
mailing list