プログラミング Haskell 第7章 高階関数 その4
7.6 文字列の変換器の実例からです。
- 文字列を 0 と 1 のリストに変換/逆変換する関数を定義してみる
- 文字コードを2進数で表現して LSB から順に並べたリストにする
- bin2int は foldr を使って書ける
bin2int = foldr (\x y -> x + 2 * y) 0
-
- int2bin は再帰を使って
int2bin 0 = [] int2bin n = n `mod` 2 : int2bin(n `div` 2)
-
- repeat 0 で作った無限リストを繋げて take 8 することで 8ビットに揃える
- 遅延評価があるから無限リストでいい
- repeat 0 で作った無限リストを繋げて take 8 することで 8ビットに揃える
実装の詳細は省きますが、部品となる関数を作って関数合成で組み上げていく感触がなんとなくわかります。
本章あたりから練習問題も少し難しくなってくるので、次は第8章に進む前に練習問題を解いてみたいと思います。