『Find your Ability! for デベロッパ』第5弾 Symfony、CakePHP、Codeigniterと比較解説するWebアプリ開発の新星「FuelPHP」 10/25開催!

PHPのWebフレームワークについて、私が講演します。
ご興味のある方は、ぜひご来場ください!
よろしくお願いします。

  • 開催日時 2012/10/25 19:00 〜 21:00
  • 定員 50人
  • 受付期間 2012/10/10 16:30 〜 2012/10/25 15:00
  • 参加費 無料
  • 場所パソナグループ 本部 1F A,B,Cルーム
  • 住所 東京都千代田区大手町2-6-4
  • 参考URL http://www.pasonatech.co.jp/ca/ability/
  • 主催者 engineer_cafe

『関数プログラミング入門 ―Haskellで学ぶ原理と技法―』発売決定

関数プログラミング入門 ―Haskellで学ぶ原理と技法―』がオーム社より、2012/10/26に発売されるらしいです。

関数プログラミング入門 ―Haskellで学ぶ原理と技法―

関数プログラミング入門 ―Haskellで学ぶ原理と技法―

本書は『Introduction To Functional Programming, 2nd Edition (Prentice Hall Series in Computer Science)』(通称「IFPH」)の翻訳版です。

Introduction To Functional Programming, 2nd Edition (Prentice Hall Series in Computer Science)

Introduction To Functional Programming, 2nd Edition (Prentice Hall Series in Computer Science)

本書の前の版は『関数プログラミング』です。Haskell ではなく Miranda で記述されていて武市先生が翻訳されています。1991年に発売された本ですが、内容的には今でも通じます。しかし、 Miranda で記述されているために読むのを躊躇していた方は『関数プログラミング入門 ―Haskellで学ぶ原理と技法―』の発売を機会に読んでみてはいかがでしょうか。

関数プログラミング

関数プログラミング


関数プログラミング入門 Haskellで学ぶ原理と技法 - Faith and Brave - C++で遊ぼう

Haskell本の中ではこれが一番好きなので、この本を日本語で読むのがすごく楽しみです!

だそうです。

関数型言語に詳しい方にオススメの本を聞くと、よく名前にあがるのが『IFPH』もしくは『関数プログラミング』ですので、関数型言語界隈でも評価の高い本だと思います。

参考リンク

2012年10月新刊予定:関数プログラミング入門 Haskellで学ぶ原理と技法 - オーム社開発部

Haskellで学ぶ関数プログラミングの入門書。
本書はHaskellOCaml、F#、Scalaといった言語の普及により改めて注目される「関数プログラミング」の理論を体系的に学ぶ教科書"Introduction to Functional Programming using Haskell"(Prentice Hall, 1998)の翻訳です。
関数プログラミングにおける評価戦略、データ構造、計算量、型、モナドの仕組みなどについて、Haskellによるシンプルなコードを例に解説しています。

『関数プログラミング入門 Haskellで学ぶ原理と技法』出来! - オーム社開発部

『関数プログラミング入門』

Ohmsha | 商品一覧

主要目次

第1章 基本概念
第2章 単純なデータ型
第3章 数値
第4章 リスト
第5章 リスト処理の例
第6章 木
第7章 効率
第8章 抽象データ型
第9章 無限リスト
第10章 モナド
第11章 構文解析
第12章 自動運算器
付録

昨年の「函数プログラミングの集い」から話題になっていただけに、発売が楽しみですね!

10/2参考リンクなど、一部修正しました。

YAPC::Asia Tokyo 2012 のチケットを購入

HOME | YAPC::Asia Tokyo 2012

世界最大のYAPCがまた今年ももどってきました!YAPCはYet Another Perl Conferenceの略で、Perlに関するカンファレンス・・・いや、お祭りです!Perlだけに限らず、様々な分野のギーク達が集まり技術の話と楽しさに満ちた三日間のお祭りが開かれます。心配する必要はありません、YAPCは誰でも楽しめるカンファレンスです。
Perlギーク達がどんな事を今しているのか、そしてさらに前進するためにどんなことをしているのか、是非皆様も体験しに来て下さい!

YAPC::Asia Tokyo 2012 のチケットを購入しました。2日通し券 (Tシャツ付き)です。
行かれる方はよろしくお願いします。

『小さなチーム、大きな仕事』を購入

以前から読みたかった本だったのですが、新しく完全版が出たので購入しました。
少し読んだのですが、37シグナルズって凄く面白そうで楽しそうな会社ですね。

小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則

小さなチーム、大きな仕事〔完全版〕: 37シグナルズ成功の法則

  • 作者: ジェイソン・フリード,デイヴィッド・ハイネマイヤー・ハンソン,黒沢 健二,松永 肇一,美谷 広海,祐佳 ヤング
  • 出版社/メーカー: 早川書房
  • 発売日: 2012/01/11
  • メディア: 単行本
  • 購入: 21人 クリック: 325回
  • この商品を含むブログ (35件) を見る

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

『プログラミングHaskell』の練習問題を解く、の続きです。

2.6 練習問題

4. この章で紹介したライブラリ関数を使って、空ではないリストの最後の要素を取り出す関数lastを定義せよ。さらに他の定義も考えよ。
last xs = head(reverse xs)
last xs = xs!!(length xs - 1)
5. 同様に、空ではないリストから最後の要素を取り除くライブラリ関数initが、二通りの方法で定義できることを示せ。
init xs = take(length xs - 1)xs
init xs = reverse(tail(reverse xs))

3.11 練習問題

1. 以下の値の型は何か?
['a','b','c']
[Char]

[('a','b','c')]
[(Char,Char,Char)]

[(False,'o'),(True,'1')]
[(Bool,Char)]

([False,True],['o','1'])
([Bool],[Char])

[tail,init,reverse]
[[a] -> [a]]

『プログラミング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]