Comment detail
文字列の反転(括弧の対応を保存) (Nested Flatten)ghcで日本語を正しく扱うには,いまのところ入出力の際に UTF8 <-> 内部コード
という変換をする必要があります.この変換を行うモジュールは以前自前で書いた
ことがあるのですが,今は Hackage DB に登録されています.
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/utf8-string-0.2
インストール手順は以下のとおりです.
$ wget http://hackage.haskell.org/packages/archive/utf8-string/0.2/utf8-string-0.2.tar.gz
$ tar xf utf8-string-0.2.tar.gz
$ cd utf8-string-0.2
$ runhaskell Setup.lhs configure
$ runhaskell Setup.lhs build
$ sudo runhaskell Setup.lhs install
これで Codec.Binary.UTF8.String と System.IO.UTF8 モジュールが使えるように
なります.
$ ghc-pkg -l | grep utf8
とやるとこのパッケージがインストールされたかどうか確認できます.
ghci には直接 UTF8 の文字列リテラルを入力できない(orz)ので,ソースコードに
定数として仕込んでおく必要があります.ソースコードのエンコーディングを
UTF8 にして
sample0 = "文字列(もじれつ)の反転(はんてん)"
sample1 = "対応[の{とれている(さまざまな)括弧}の(例)]です。"
sample2 = "これ(は(対応のとれてない)括弧がある例です。"
sample3 = "これ(も{対応の)とれていない}括弧の例です。"
というのをソースコード(3511.hs)にいれておきますそうしておいて,
- ghci を起動.
- System.IO.UTF8 を追加.
- 出力用 wrapper を追加.
- wrapper をつかって結果を表示
$ ghci -v0 3511.hs
*Main> :m + System.IO.UTF8
*Main System.IO.UTF8> let wrapper = (System.IO.UTF8.putStrLn .)
*Main System.IO.UTF8> wrapper reverseString2 sample0
(んてんは)転反の(つれじも)列字文
*Main System.IO.UTF8> wrapper reverseString2 sample1
。すで[(例)の{弧括(なまざまさ)るいてれと}の]応対
*Main System.IO.UTF8> wrapper reverseString2 sample2
。すで例るあが弧括(いなてれとの応対)は(れこ
*Main System.IO.UTF8> wrapper reverseString2 sample3
。すで例の弧括}いないてれと)の応対{も(れこ
ああ面倒 ^^;





shiro
#3511()
[
Haskell
]
Rating0/0=0.00
Haskell練習中。 あまり美しくないなあ。 ghciで日本語はどう使うのかなあ。 実行例 *Main> reverseString2 "mojiretsu(MOJIRETSU) no hanten(HANTEN)." ".(NETNAH)netnah on (USTERIJOM)usterijom" *Main> reverseString2 "taiou[no{toreteiru(samazamana)kakko}no(rei)]desu." ".used[(ier)on{okkak(anamazamas)urieterot}on]uoiat" *Main> reverseString2 "kore(ha(taiounotoreteinai)kakkonoarureidesu." ".usedieruraonokkak(ianieterotonuoiat)ah(erok" *Main> reverseString2 "kore(mo{taiouno)toreteinai}kakkonoreidesu." ".usedieronokkak}ianieterot)onuoiat{om(erok"Rating0/0=0.00-0+
1 reply [ reply ]