Haskell入門 7.1
- 作者: 本間雅洋,類地孝介,逢坂時響
- 出版社/メーカー: 技術評論社
- 発売日: 2017/09/27
- メディア: 大型本
- この商品を含むブログを見る
2章や3章をやってみて、正直ひとつひとつの要素を「ふーん」と読んでいってもいまいちわからなかったので、ここはひとつ、先まで飛ばしていってとりあえずコードを書き始めてからもどって来ようと思いました。
7.1 標準ライブラリ
Preludeモジュールは暗黙的にインポートされるので、Preludeモジュールの関数=組み込み関数とも言える。
Data.Bits
はビット演算のための関数を提供。
モジュールのimportはimport Data.Bits
のように行う。やらないと(当たり前だけど)中の関数は使えない。試しに、インポート前後の比較をしてみた。
*Main Lib> b = 0x05 :: Word -- 0x05 : 0000 0101 *Main Lib> testBit b 0 <interactive>:2:1: error: Variable not in scope: testBit :: Word -> Integer -> t *Main Lib> import Data.Bits *Main Lib Data.Bits> testBit b 0 True
Data.Char
は文字に関する関数を提供するモジュール
Data.List
は[a]
型に関する関数が定義されたモジュール。Listに関するほとんどの関数はPreludeモジュールに入っている。Data.List
のほうに入っているのは、例えば
- group
- oartition
- nub
- interspere
など。
これ、ProjectEulerやってるころにHaskell使ってたらもっとスムーズだった気がしてきた。。
group
を使った例
*Main Lib Data.Bits Data.Char> import Data.List *Main Lib Data.Bits Data.Char Data.List> group [3, 3, 5, 3, 3, 3, 1, 1] [[3,3],[5],[3,3,3],[1,1]]
3をまとめるわけではないみたい。
intercalate
を使った例
*Main Lib Data.Bits Data.Char Data.List> intercalate [] [[1,2,3],[2,3],[4,5]] [1,2,3,2,3,4,5] *Main Lib Data.Bits Data.Char Data.List> intercalate ", " ["abc", "de", "fghi"] "abc, de, fghi"
第一引数で区切って第二引数の中身を結合するようで、上に出したような、リストのリストからリストにするとか、文字列のリストから文字列にするときに便利みたい。
inPrefixOf
などを使ったときの例で、
*Main Lib Data.Bits Data.Char Data.List> "hoge" `isPrefixOf` "hogehoge" True
と本にはあった。 Haskellでは"`"をつけると関数を中置にできるようで。自分は使わない気がするけど面白い。
Data.Array
は
イミュータブルな配列を提供します。Data.Arrayによる配列はリストとは違い、添字によって各要素へ高速にアクセスできます。
今回の勉強時間:1時間 累計勉強時間:21時間58分