すごいHaskell 読書メモ #3

2015年10月22日木曜日

前回: すごいHaskell 読書メモ #2
前回はデータ構造の序盤ということでリストの話と内包表記の話などでした。

タプル

今回はタプルです。タプル自体は他の言語でも馴染み深いものです。

メモ

  • タプルのリストを作る際に異なるシグニチャのものを混ぜてはいけないというのが新鮮に感じた
    • 前回やったリストのポリシーを考えると「リストは特定の型の要素の列」ということなのだから当然だった
  • 2要素のタプルはペアとも呼ばれ、3要素のタプルはトリプルとも呼ばれる
    • ペアに対して先の要素と後の要素を取り出すfstsndという関数は頻出らしい
      • 名前的には覚えやすい
    • トリプルから同様に値を取り出すものについてはちょっと後で出てくるとのこと。
  • リストはサイズの違うもの同士で比較できるのに対し、タプルは同サイズ同士でしか比較できない
  • zip便利だなぁ
    • ふたつのリストから組にして値を取り出してペアのリストにするというオペレーション結構よく使いそう

演習問題

直角三角形の問題は、
ghci> [(x,y, sqrt(x^2 + y^2)) | x <- [1..10], y <- [1..10], sqrt(x * x + y * y) + x + y == 24]
[(6.0,8.0,10.0),(8.0,6.0,10.0)]
と強引に解きました。解法を見たら泣けるほどきれいにフィルタリングで条件を詰めていっていてそれっぽかった。
c <- [1..10], b <- [1..c]などの値の持つ性質を反映したリストを作るというのは結構大事なポイントになるんだろうな。
多少手が動くようになってきたところで今回は終わり。次回は第2章「型を信じろ!」の話です。

0 件のコメント:

コメントを投稿