『プログラミングHaskell』の練習問題を解く

スタートHaskell第1回の予習です。
『プログラミングHaskell』の練習問題を解いています。
2章の半ばまでの練習問題です。

1.7 練習問題

1. double (double 2) の結果を算出する他の計算方法を考えよ。
double (double 2)
    ={ 内側のdoubleを適用 }
double (2 + 2)
    ={ doubleを適用 }
(2+2)+(2+2)
    ={ 最初の+を適用 }
4+(2+2)
    ={ 次の+を適用 }
4+4
    ={ +を適用 }
8

もしくは

double (double 2)
    = { 外側のdoubleを適用 }
(double 2)+(double 2)
    = { 次のdoubleを適用 }
(double 2)+(2 + 2)
    = { 次の+を適用 }
(double 2)+4
    = { double を適用 }
(2+2)+4
    = { 最初の+を適用 }
4+4
    = { +を適用 }
8
2. x の値にかかわらず sum[x] = x であることを示せ。
sum[x]
    = { sumを適用 }
x + sum[]
    = { sumを適用 }
x + 0
    = { +を適用 }
x
3. 数値のリストに対し要素の積を計算する関数productを定義せよ。
puroduct[] = 1
puroduct(x:xs) = x * product xs
そして、その定義を使って product[2,3,4]=24 となることを示せ。
product[2,3,4]
    = { puroductを適用 }
2 * (product[3,4])
    = { puroductを適用 }
2 * (3 * product[4])
    = { puroductを適用 }
2 * (3 * (4 * product[]))
    = { puroductを適用 }
2 * (3 * (4 * 1))
    = { *を適用 }
24
4. リストを逆順に整列するように関数qsortの定義を変えるにはどうすればよいか?
qsort[] = []
qsort(x:xs) = qsort larger ++ [x] ++ qsort smaller
                where
                    smaller = [a|a<-xs,a<=x]
                    larger = [b|b<-xs,b>x]
5. qsortの定義で、<=を<に置き換えるとどのような影響があるか?

ヒント:例として[2,2,3,1,1]を考えてみよ。

qsort[] = []
qsort(x:xs) = qsort smaller ++ [x] ++ qsort larger
                where
                    smaller = [a|a<-xs,a<x]
                    larger = [b|b<-xs,b>x]

qsort[2,2,3,1,1]
    ={ qsortを適用 }
qsort[1,1] ++ [2] ++ qsort[3]
    ={ qsortを適用 }
(qsort[] ++ [1] ++ qsort[]) ++ [2] ++ (qsort[] ++ [3] ++ qsort[])
    ={ qsortを適用 }
([] ++ [1] ++ []) ++ [2] ++ (qsort[] ++ [3] ++ qsort[])
    ={ qsortを適用 }
[1] ++ [2] ++ [3]
    ={ qsortを適用 }
[1,2,3]

2.6 練習問題

1. 次の式に括弧を付けよ。
(2^3)*4
(2*3)+(4*5)
2+(3*(4^5))
2. この章の例題をHugsを用いて実行せよ。

(後で実行する)

3. 以下のプログラムにはエラーが3つある。エラーを修正し、Hugsで正しく動くか確かめよ。

以下、修正したプログラム。

n = a `div` length xs
    where
        a = 10
        xs = [1,2,3,4,5]

Learn You a jQuery for Great Good!

今日からjQueryの練習も兼ねて、jQueryのソースをブログに書いていこうと思います。

jQuery.map() | jQuery API Documentation

最初はmapです。他の言語によくあるmapと同じです。
1.6からはarrayOrObjectを引数に指定できるようになりました。

以下、使用例。(サンプルを少し改造しただけです。)

<!DOCTYPE html>
<html>
<head>
  <style>
  div { color:blue; }
  p { color:green; margin:0; }
  span { color:red; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <div id="old"></div>
  <p></p>
  <span></span>
  <div id="new"></div>
<script>
// version added 1.0
  var arr = ["a", "b", "c", "d", "e"];
  $("div#old").text(arr.join(","));

  arr = jQuery.map(arr, function(n, i){
    return (n.toUpperCase() + i);
  });
  $("p").text(arr.join(","));

  arr = jQuery.map(arr, function (a) {
    return a + a;
  });
  $("span").text(arr.join(","));

// version added : 1.6
  var dimensions = { width: 10, height: 15, length: 20};
  dimensions = $.map(dimensions, function(value, index){
    return value *2;
  });
  $("div#new").text(dimensions.join(","));
</script>
</body>
</html>

jQuery git pull + git log

jquery

コミット無し。

jquery-ui

Widget: Update demo to work with 1.6 · e55e1fb · jquery/jquery-ui · GitHub

commit e55e1fb5bf95412a3a5c
widget のデモ。className から "class" に変更。

Accordion tests: Cleanup. · 7134033 · jquery/jquery-ui · GitHub

commit 71340333659577644594
コーディングスタイルの修正。

Spinner: Cleanup, use ._bind() and ._hoverable(). · 6981cab · jquery/jquery-ui · GitHub

commit 6981cab9c40a7b93d675
._bind() と ._hoverable()の変更。

Spinner: Invoke _markupOptions() before _draw(). · c1da941 · jquery/jquery-ui · GitHub

commit c1da941f9f664e3dabe1
_markupOptions() の後に _draw()を異動させた。

Spinner: Don't stop propgation of mousedown. Added TODOs. · 4d2ac1a · jquery/jquery-ui · GitHub

commit 4d2ac1abca64ec19407f
spinner の mousedown の return の値の変更。コメントの変更。

Spinner: Keep the focus on the text field even when using the buttons. · 64cdaa8 · jquery/jquery-ui · GitHub

commit 64cdaa82e6736c4b06f6
テキストフィールドのフォーカスを保つための変更。

Spinner tests: Cleanup. · 160a301 · jquery/jquery-ui · GitHub

commit 160a301d96c09403b87e
Spinner のテストファイルの修正。

Spinner: Define defaults for callbacks. · b10c4cd · jquery/jquery-ui · GitHub

commit b10c4cdab5faf88c8f64
Spinner のコールバックの値にnullを追加。テストファイルも修正。

Merge branch 'spinner-getCreateOptions' · e9cdd57 · jquery/jquery-ui · GitHub

commit e9cdd576f4327f947b00
ブランチのマージ。

LtG T-shirt 注文しました。

LtG T-shirt アンケート結果 & 注文受付

LtG T-shirt 注文しました。
私は白地に黒模様でsuccを注文しました。
copyと迷ったのですが、結局、succの方がかわいいのでsuccを選びました。

ちなみに、注文は8/7までなので、すでに終了しています。

jQuery git pull + git log

コミットの量が多すぎ!今回はjqueryのみ。

jquery

Merge pull request #447 from rwldrn/9914 · d7681a1 · jquery/jquery · GitHub

テストフィアル修正。空テストを削除。

Merge pull request #419 from rwldrn/9630 · 6a3395a · jquery/jquery · GitHub

commit 6a3395afcdb958a25f9a
.hasClass()の修正。.contents().hasClass()のテストの修正。

Merge pull request #434 from Bubbi/bug_7071 · 84936f1 · jquery/jquery · GitHub

commit 84936f1e64f57009c838
property on VML IEの問題の修正。

Merge pull request #431 from DenisKnauf/master · 2e298d9 · jquery/jquery · GitHub

commit 2e298d92dbba3f9984a7
ajaxの修正。serializeArrayのfilterに使われている部分にdatetime-localを追加。

Merge pull request #432 from rwldrn/9794 · 59936dc · jquery/jquery · GitHub

commit 59936dc04d4dd2731874
data の
// Check for both converted-to-camel and non-converted data property names
// If a data property was specified
の追加。

Merge pull request #412 from rwldrn/9587 · b5a16ea · jquery/jquery · GitHub

commit b5a16ead1ae2b7449c44
jQuery.clone()の修正とテストファイルの修正。

Merge pull request #416 from gnarf37/ticket_6652 · 8d5c874 · jquery/jquery · GitHub

commit 8d5c874227a65434a694
css の 半透明の処理の追加。テストファイルの追加。

Merge pull request #367 from gnarf37/index-optimize · 3cfb134 · jquery/jquery · GitHub

commit 3cfb134ab41d204a7197
.index()の引数が無かった場合の処理の修正。テストファイルの修正。

Now using getAttributeNode in all attribute cases in IE6/7, which normal... · 8c2cb49 · jquery/jquery · GitHub

commit 8c2cb49917fc1082abac
formHook から nodeHook への名前変更。テストファイルの修正。

Remove unnecessary regex · 700c16b · jquery/jquery · GitHub

commit 700c16b0859a8c982869
rinvalidCharの正規表現が無用だったので、削除。

Add back the background: none setting to avoid any possible crashes in I... · 5c4a9cc · jquery/jquery · GitHub

commit 5c4a9cc001fcd803efa6
IE関連の修正。backgroundにnoneと入れない表示が崩れる問題の修正。

Adds failing tests for #9413 · 7daf44b · jquery/jquery · GitHub

commit 7daf44b5ab1b5fbae9f8
フィルタリング・テストの追加。

Fixes assertion counts and dom element fixture issue · 13647e9 · jquery/jquery · GitHub

commit 13647e94e0141757a17c
ストファイルのコーディングスタイルの修正。

Adds failing tests · 22028e4 · jquery/jquery · GitHub

commit 22028e403f6ae68b5985
ストファイルの修正。

Improves support for arbitrary numbers in data keys. Fixes #9318 · e7af6a2 · jquery/jquery · GitHub

commit e7af6a296b75b8583175
dataのkeysが、キャメルケースの"-"の後の文字がアルファベットのみだったのが、数字でも大丈夫なように修正された。

Merge pull request #455 from rwldrn/9413 · 37254ba · jquery/jquery · GitHub

commit 37254bab91b6e0067160
Merge pull data.jsの修正。

Merge pull request #456 from rwldrn/9318 · b22c904 · jquery/jquery · GitHub

commit b22c9046529852c7ce56
Merge pull request #456 from rwldrn/9318

"Learn You a Haskell for Great Good!"の日本語訳が出版される!?

Learn You a Haskell for Great Good! の日本語訳が出版されるそうです。(某Haskellerの情報より)
私は原書のPDFを購入したのですが、日本語訳がでたら、そちらも購入しようと思います。
"Learn You a Haskell for Great Good!" はwebで無料で読めるのですが、私はiPadで読む用にPDFを購入しました。

Learn You a Haskell for Great Good!: A Beginner's Guide

Learn You a Haskell for Great Good!: A Beginner's Guide

いつ出版予定とか、何か情報ないっすかねぇ?

jQuery git pull + git log

今日のニュースは jquery-mobileが"Releasing 1.0b2."になった事です。
Releasing 1.0b2.
jquery-mobileのコミットが多すぎるので、途中までです。