ハスケルでのエスケープの仕組みを理解しようとしています。 250が文字である\ハスケル文字 '¥250'の解釈方法
head "\250\218"
戻り '\250'
だから、Haskellは考えています。ここで何が起こっているのですか?
ハスケルでのエスケープの仕組みを理解しようとしています。 250が文字である\ハスケル文字 '¥250'の解釈方法
head "\250\218"
戻り '\250'
だから、Haskellは考えています。ここで何が起こっているのですか?
'\250'
は、Unicode文字のコードポイント(小数点以下の桁数)が250であれば、この場合LATIN SMALL LETTER U WITH ACUTE(ú)です。
文字列"\250\218"
は、それぞれが1文字を表す2つの数値エスケープで構成され、文字コードは10進数で与えられます。 head
を適用すると、最初のものが返され、'\250'
と印刷されます。 Data.Char.ord
をこれに適用すると、数値コード250(10進数)が表示されます。あなたはData.Char.chr
を使って同様の文字を作ることができます。
以下に示すように、これらのコードで文字を印刷すると、Unicodeに従ってアクセント記号付きの文字になります。詳細については
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
Prelude> head "\250\218"
'\250'
Prelude> Data.Char.ord (head "\250\218")
250
Prelude> Data.Char.chr 251
'\251'
Prelude> putStrLn "\250\218"
úÚ
Prelude>
:GHCiのを使用して
http://book.realworldhaskell.org/read/characters-strings-and-escaping-rules.html#id689632
Haskellのエスケープは、他のプログラミング言語からひどく異なっていません。 '' \ 123 "はUnicodeコードポイント123(10進数)の表現です。 '" \ x3f "はコードポイント0x3f(16進数)です。等々。何があなたを混乱させるのですか? – chi
\ 250を4文字として扱いましたが、\ ACKを文字として扱ったようなテストコードが出たので、UnicodeがASCIIエスケープとは違って扱われたかどうかはわかりませんでした。 – brander