Re: [Haskell-cafe] FFI binding -- different behaviour under compilation and interpretation.
There is a Cabal package for this already: http://hackage.haskell.org/package/setlocale A call to `setLocale LC_ALL (Just "")` in `main` fixes things. -- Jason Dusek 2009/11/13 Daniel Fischer : > Am Samstag 14 November 2009 00:00:36 schrieb Jason Dusek: >> I'm binding to `wcwidth` to determine the column widths of >> various Unicode characters. I noticed a lot of -- in fact all >> -- Chinese characters were being given widths of `-1` when of >> course they should have width `2`. This only showed up when I >> compiled my program though -- within GHCi, it never happened. > > It seems that ghci calls setlocale(LC_ALL,"") or similar, while the compiled > code doesn't. > I've no idea why that would be, but > > da...@linux-mkk1:~/Haskell/CafeTesting> cat locl.h > void sloc(); > da...@linux-mkk1:~/Haskell/CafeTesting> cat locl.c > #include > #include "locl.h" > > void sloc(){ > setlocale(LC_ALL,""); > } > > > main = do > setloc > (sequence_ . fmap (UTF8.putStrLn . uncurry fmt)) widths > where... > > foreign import ccall unsafe "locl.h sloc" setloc :: IO () > > fixes it. > > > ___ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] FFI binding -- different behaviour under compilation and interpretation.
Thank you very much! -- Jason Dusek ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] FFI binding -- different behaviour under compilation and interpretation.
Am Samstag 14 November 2009 00:00:36 schrieb Jason Dusek: > I'm binding to `wcwidth` to determine the column widths of > various Unicode characters. I noticed a lot of -- in fact all > -- Chinese characters were being given widths of `-1` when of > course they should have width `2`. This only showed up when I > compiled my program though -- within GHCi, it never happened. It seems that ghci calls setlocale(LC_ALL,"") or similar, while the compiled code doesn't. I've no idea why that would be, but da...@linux-mkk1:~/Haskell/CafeTesting> cat locl.h void sloc(); da...@linux-mkk1:~/Haskell/CafeTesting> cat locl.c #include #include "locl.h" void sloc(){ setlocale(LC_ALL,""); } main = do setloc (sequence_ . fmap (UTF8.putStrLn . uncurry fmt)) widths where... foreign import ccall unsafe "locl.h sloc" setloc :: IO () fixes it. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe