プログラミングHaskell 第1章 導入
この章は準備体操らしい。Haskellの歴史や関数の説明などが書かれている。
関数型プログラミング言語ってどんなもんなんだろう?と恐る恐る読んでみたが、まだ怖いめにはあってない。
練習問題の解答
1
double (double 2) = double (2) + double (2) = (2 + 2) + double (2) = (2 + 2) + (2 + 2) = 4 + 4 = 8
2
sum [x] = sum (x:[]) = x + sum [] = x + 0 = x
3
productの定義
product [] = 1 product (x:xs) = x * product xs
product [2, 3, 4]の計算
product [2, 3, 4] = 2 * product [3, 4] = 2 * 3 * product [4] = 2 * 3 * 4 * product [] = 2 * 3 * 4 * 1 = 24
4
問題の意図が「降順ソート」と「リバース」のどちらか分からなかった。
降順
qsortDesc [] = [] qsortDesc (x:xs) = qsortDesc larger ++ [x] ++ qsortDesc smaller where smaller = [a|a <- xs, a <= x] larger = [a|a <- xs, a > x]
リバース
reverse [] = [] reverse (x:xs) = xs ++ [x]
5
xsの中にxと等しい要素x'があった場合、x'はsmallerにもlargerにも含まれない。 そのため、qsortの結果にx'が含まれなくなる。
qsortの定義の「<=」を「<」に変更した関数をqsort'とすると
qsort' [2, 2, 3, 1, 1] = qsort' [1, 1] ++ [2] ++ qsort' [3] = (qsort' [] ++ [1] ++ qsort' []) ++ [2] ++ qsort' [3] = ([] ++ [1] ++ []) ++ [2] + [3] = [1, 2, 3]
Haskellはじめました。
しれっと更新
過去の記事やブログタイトルを、まるっと無視してHaskellを勉強します。 勉強の過程を書いていくつもりなのですが、再び三日坊主にならいよう頑張ります。
まずは、『プログラミングHaskell』を読んでいきます。
- 作者: Graham Hutton,山本和彦
- 出版社/メーカー: オーム社
- 発売日: 2009/11/11
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 503回
- この商品を含むブログ (117件) を見る
今年の目標
自立と自律
大切ですよね『自立と自律』。私も常日頃から思ってます。
村田製作所 セイサク君の愛される篇 CM - YouTube
The Cubli: a cube that can jump up, balance, and ...
ようするにエンジニアだったら、これくらいの物は作れるようになりましょう。っていう意味ですよね。
あらためて今年の目標
自分でバランスをとって自立するロボットを作ります。
ハードのことは全然分からないけど、ArduinoとかBeagleBoardでモーター制御して、ジャイロ効果の加速度が姿勢制御で回転モーメント的な感じでごにょごにょすれば出来るんでしょ?でもせっかくだからAndroidのADKでやってみようかな?
なんて、新年早々聞きかじった単語を並べて意味不明な事を口走って、無謀な目標を立ててしまった感はありますが、1年間頑張ってみようと思います。
今度つくるアプリ
これ楽しい
Optical illusion #1 (The Spiral) - Life is Good. - YouTube
ぐるぐる回る螺旋を暫く見た後に、景色なんかを見るとぐにゃぐにゃ歪むあれです。
何度やってもちゃんとぐにゃぐにゃするし、お手軽に普段の景色が違って見えるのが楽しいです。私は暇さえあれば、上の動画を見てぐにゃぐにゃしています。
ぐにゃぐにゃを持ち歩きたい
これをアプリ化すれば、いつでもどこでもぐにゃぐにゃ出来きる。電車を待っていても、本を読んでいても、スーパーでお買い物をしていても、そこら中ぐにゃぐにゃです。
ということで、アプリの次回作はこのぐにゃぐにゃアプリにします。
画像を動かす練習
そうは言ってもこれは、画像をぐるぐる回せばいいだけの簡単なお仕事。技術的にはとっても簡単なはずです。
なぜ今更こんな華のないアプリを作ろうと思ったかと言うと、今までお仕事でもプライベートでも、画像を扱った事があまり無かったので、ここらでちゃんとやっておきたいと思ったからです。
使った事は無いですが、画像を動かすには幾つか方法があるはずです。
- GIF
- ViewにAnimationを付ける
- SurfaceView
- OpenGL
今回はこれらの使い方の勉強としてぐにゃぐにゃアプリを作ってみます。