2017-01-31 4 views
1

ハスケルでのエスケープの仕組みを理解しようとしています。 250が文字である\ハスケル文字 '¥250'の解釈方法

head "\250\218" 戻り '\250'

だから、Haskellは考えています。ここで何が起こっているのですか?

+0

Haskellのエスケープは、他のプログラミング言語からひどく異なっていません。 '' \ 123 "はUnicodeコードポイント123(10進数)の表現です。 '" \ x3f "はコードポイント0x3f(16進数)です。等々。何があなたを混乱させるのですか? – chi

+0

\ 250を4文字として扱いましたが、\ ACKを文字として扱ったようなテストコードが出たので、UnicodeがASCIIエスケープとは違って扱われたかどうかはわかりませんでした。 – brander

答えて

6

'\250'は、Unicode文字のコードポイント(小数点以下の桁数)が250であれば、この場合LATIN SMALL LETTER U WITH ACUTE(ú)です。

8

文字列"\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

関連する問題