| 
 
	
	
		問題を適切な大きさに分解するスケーラブルな手法 
	
 
	
		| 
		
			ファンクション+アクション=プログラム
			
				 【関数型プログラミングのススメ】 
			
		
		 | 
	 
 
	
		
			
				 
			
		 | 
		
			
			
				
					
						
							金谷 一朗 著 
						
						
							2011年 9月17日発売  
						
						
							A5判 
						
						
							216ページ
						
						
						
						
						
						
						
						
							定価 ¥2,090(本体 ¥1,900)
						
					
				 | 
			 
			
				| 
					
						
						
						   ISBN978-4-7775-1630-8 C3004 ¥1900E
						
					
				 | 
			 
			
				  | 
			 
				
				
					
						 こんにち、プログラマーが解くべき問題は、指数関数的に大きくなってきている。一方、人間の脳は、その速度では進化しない。
  つまり、問題をスケーラブルに分解する方法(中ぐらいの問題を小さな問題に分解するのと同じ手法で、大きな問題を中ぐらいの問題に分解できる方法)が必要になってくる。
 
  本書では、「関数型プログラミング」の解説を行なう。数学者たちが長年培ってきた方法が、「関数型プログラミング」なのである。「関数型プログラミング」は特定のプログラミング言語に基づく思考法ではないから、本書でもさまざまな言語を用いる。中には親しみ深い言語もあるだろうし、初めて見る言語もあるかもしれない。しかし、その背後にある数学は、一貫している。本書を通して「関数型プログラミング」という精神に触れてもらいたい。
 
					
				 | 
			 
			
			
			 
		 | 
	 
 
 
| ■ 主な内容 ■ | 
 
	| 
		
 
 はじめに 
 
 
 
  |  [1.1] 本書で述べること | 
   [1.2] 本書で述べないこと | 
  
 
  |  [1.3] 本書の構成 | 
    | 
  
 
 
 
   | 
    第2章
    | 
   
    「関数型プログラミング」ひとめぐり【C・Scheme・Haskell】
    | 
  
 
 
  |  [2.1] 「関数型プログラミング」への道 | 
   [2.2] 単純な例 | 
  
 
  |  [2.3] なぜ「関数型プログラミング」がいいのか?(参照透過性) | 
   [2.4] 「関数型プログラミング」を強くサポートする言語 | 
  
 
  |  [2.5] 型システム | 
    | 
  
 
 
 
   | 
    第3章
    | 
   
    「ラムダ記法」と計算の本質【JavaScript・Python・Ruby】
    | 
  
 
 
  |  [3.1] ラムダ記法 | 
   [3.2] 「プログラミング」における「ラムダ式」 | 
  
 
  |  [3.3] 計算の本質(チャーチ数) | 
   [3.4] カリー化 | 
  
 
  |  [3.5] クロージャ | 
    | 
  
 
 
 
   | 
    第4章
    | 
   
    リスト【AWK・Make・シェルスクリプト】
    | 
  
 
 
  |  [4.1] リストとタプル | 
   [4.2] リストを使った問題 | 
  
 
  |  [4.3] リストを使った問題の実装 | 
   [4.4] 実装の汎用化 | 
  
 
  |  [4.5] リストの中身 | 
    | 
  
 
 
 
   | 
    第5章
    | 
   
    「条件分岐」と「ループ」【Haskell・Python・Scheme】
    | 
  
 
 
  |  [5.1] 条件分岐 | 
   [5.2] ループ | 
  
 
  |  [5.3] イテレータ | 
   [5.4] フィルタ | 
  
 
  |  [5.5] マップと畳み込み | 
    | 
  
 
 
 
  |  [6.1] ツリー構造 | 
   [6.2] ツリーを使った問題 | 
  
 
  |  [6.3] 「ツリー」を使った問題の実装 | 
   [6.4] リスト内包表記 | 
  
 
  |  [6.5] 再び「畳み込み」と「マップ」 | 
    | 
  
 
 
 
  |  [7.1] Haskell言語 | 
   [7.2] 「純粋関数型」である意味 | 
  
 
  |  [7.3] パーサ(1) | 
   [7.4] パーサ(2) | 
  
 
  |  [7.5] パーサ(3) | 
    | 
  
 
 
 
  |  [8.1] I/Oと関数型プログラミング | 
   [8.2] アクション | 
  
 
  |  [8.3] モナド | 
   [8.4] 三たび単語を数える | 
  
 
  |  [8.5] 「文脈」としての「モナド」 | 
    | 
  
 
 
 
   | 
    第9章
    | 
   
    関数型プログラミングを使わない方がよい場合
    | 
  
 
 
  |  [9.1] イベント駆動【Objective-C】 | 
   [9.2] 継続【Scheme】 | 
  
 
  |  [9.3] マクロ【Common LISP】 | 
   [9.4] 例外【Java】 | 
  
 
  |  [9.5] 「自己書き換え」と「リフレクション」【C・JavaScript】 | 
    | 
  
 
 
 
  |  [10.1] 関数名を使わない再帰 | 
   [10.2] Zコンビネータ | 
  
 
  |  [10.3] Yコンビネータ | 
    | 
  
 
 
 
  |  [11.1] チューリング機械(BrainfuckとUnlambda) | 
   [11.2] 「C言語」と「ラムダ式」 | 
  
 
  |  [11.3] 「C++」の「関数オブジェクト」 | 
   [11.4] コールバック?ご冗談を。 | 
  
 
  |  [11.5] プログラミングの最後の砦 | 
    | 
  
 
 
 
 おわりに 
 参考文献 
 索引 
  
※ 内容が一部異なる場合があります。発売日は、東京の発売日であり、地域によっては1〜2日程度遅れることがあります。あらかじめご了承ください。 
	 | 
 
 
 | 
  | 
  
 |