bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

Haskell ドリル7 文字列

1.概略

Haskellでは文字列も文字から作られたリストである。例えば、"bird"という文字列は、'b','i','r','d'という文字から作られたリストで、'b':'i':'r':'d':[ ]あるいは['b','i','r','d']と表すことができる。

文字列がリストであることから、文字列に対しても前回の記事で説明したリストに関連する関数を施すことができる。例えば、head "bird"を行えば、'b'が得られる。

また、文字には大小関係が定義されている。その順序はアルファベットの順に昇順となっている。例えば、'a' < 'v' である。また、文字列の順序も辞書の順番と同じである。

2.例題

問題:文字列"I went to San Franciscoを反転させなさい。

この答えは簡単で、文字列がリストであることからreverseを用いればよい。その結果は次のようになる。

f:id:bitterharvest:20141210082545p:plain

3.問題

それではリストに関連する関数を用いて次の問題を解きなさい。

問題1:文字列"bird"から最初の文字を取り除いた文字列を作りなさい。

問題2:文字列"bird"から最後の文字を取り出しなさい。

問題3:文字列"bird"から最初と最後の文字を取り除いた文字列を作りなさい。

問題4:文字列"dictionary"は文字列"dictation"よりも小さいかを調べなさい。

問題5:文字列"bird"と"fish"の両方に文字'i'が含まれているかを調べなさい。なお、論理積は&&である。

問題6:文字列"bird"と"fish"のいずれかに文字'h'が含まれているかを調べなさい。なお、論理和は||である。

問題7:文字列"bird"と"fish"のいずれにも文字'm'が含まれていないかを調べなさい。なお、否定はnotである。

問題8:文字列"I went to San Francisco.と文字列"The city was very impressive.を間にブランクを入れて結合しなさい。

問題9:文字列"I went to San Francisco.の中に文字'b'が含まれているかを調べなさい。

問題10:文字列"I went to San Francisco.に含まれている文字数(ピリオドも含む)を得なさい。