毎日が86400秒の残り時間

ビル・ゲイツのように計画実行のスピードを上げる

焦らず、しかし休まず、星のように己がまわりを巡れ
(ヨハン・ヴォルフガング・フォン・ゲーテ)

2017-08-24(木) Haskellの学習 #1

Haskellの勉強。サクサク進めよう!

とりあえず、1周目はサンプルコードの写経だけでOK。

 

 

教科書

「すごいHaskellたのしく学ぼう!」

 

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

 

 

1.4 レンジでチン!

(p.13)

レンジは列挙できる要素の組み合わせでリストを作るのに使われます。

調子にのって[1..1000000]をやったら、表示完了までえらい時間がかかったw

 

レンジにはステップを指定することもできます。

最初の要素2つ目の要素をカンマで区切って、上限を指定する

 

ghci> ['a'..'z']
"abcdefghijklmnopqrstuvwxyz"

ghci> ['a','c'..'z']
"acegikmoqsuwy"

ghci> ['b','d'..'z']
"bdfhjlnprtvxz"

 

take 24 [13,26..]

take 10 (cycle [1,2,3])

take 10 (repeat 5)

replicate 3 10

[0.1, 0.3 .. 1]

 

1.5 リスト内包表記

(p.15)

リスト内包表記はリストのフィルタリング、変換、組み合わせを行う方法です。

これは数学における集合の内包的記法の概念に近いものです。

 

http://www.geocities.jp/k27c8_math/math/set_theory/another_how_to_expression_set.htm

  • 条件を書いて集合を表現する記法を内包的記法と言います。

    { x | xは自然数の偶数 かつ x ≦ 1000 }

  • 全ての元を表して集合を表現する記法は外延的記法と呼ばれます。

    { 1, 2, 3 }

 

集合 - Wikipedia

グロタンディーク宇宙 - Wikipedia

到達不能基数 - Wikipedia

 

「<-」という演算子?は「ジェネレータ」というらしい???

 

Haskellチートシート(翻訳) - Qiita - リスト内包表記

リスト内包表記は4つのタイプの要素から成ります。ジェネレータとガードとローカル束縛とターゲットです。

squares = [x * x | x <- [1..]]
x <- [1..]は全てのIntegerの値のリストを生成し、xに一つ一つ入れます。

 

List comprehension - HaskellWiki

[toUpper c | c <- s]

the generator c <- s feeds each character of s in turn to the left-hand expression toUpper c, building a new list.

 

リスト - ウォークスルー Haskell

内包表記

構文 [ 式 | 限定子1, ..., 限定子n ]

ここで,限定子には次の 3 つがあります。

  • ジェネレータ: パターン <- 式 と書く。x <- [1, 2] など。
  • ガード: 条件式を書く。odd x など。
  • 局所宣言: let で始まる宣言を書く。let y = 4 など。

 

 

(14:50)ネットサーフィンのついでに寄り道

 

Yahoo!のトップニュースから。 

headlines.yahoo.co.jp

 

↓リンク記事

dual.nikkei.co.jp

 

少子化、晩婚化が進んでいるけど、大変なんだなーと思った。)

 

(15:20)はてなブックマークトップから。

togetter.com

なんかこれを貼れと言われた気がした→ Jigsaw - Sky High - (Original Promo Video) https://youtu.be/sPXNffnAdp0 ←でも、この曲、女に振られた男の心情なんよね。 

 

www.youtube.com

 

www.youtube.com

 

www.youtube.com

 

www.youtube.com

 

www.youtube.com

 

(16:10)白のバックダンサーがキレッキレ!www 

www.youtube.com

 

チューチュートレインの原型って、コレじゃなかろーかw

(てか、この帽子のデザイン、サンバの衣装とか?www) 

www.youtube.com

 

コメント見ると、ビヨンセよりもこっちのほうがいいんじゃないか?ともw 

www.youtube.com

 

(16:30)Haskellに戻ろう。。。

 

(17:30)夕食を済ませて、作業に復帰。

x <- [1..10] 「xに束縛している」「取り出した値をxが受け取る」

 

(p.16)

述語=条件のこと。内包表記の最後にカンマで区切って書く。

フィルター=述語(条件)を使って、要素を間引くこと。

 

リスト内包表記は、入れ子にできる。

[ [x | x <- xs, even x ] | xs <- xxs]

 

1.6 タプル 

(p.18)

サンプルコードをコピペして、GHCiでガンガン実行!

とりあえず、文法の意味だけは理解できた。

覚えるには至っていないけど、時間短縮のため、1周目はコード写経だけで行こう!

 

(22:00)第1章、読了。

 

お疲れさん>自分!!!