Software Design plusシリーズはじめてのLisp関数型プログラミング
――ラムダ計算からリファクタリングまで一気にわかる
――ラムダ計算からリファクタリングまで一気にわかる
2016年3月18日紙版発売
2016年3月18日電子版発売
五味弘 著
B5変形判/272ページ
定価2,838円(本体2,580円+税10%)
ISBN 978-4-7741-8035-9
書籍の概要
この本の概要
Lisp・関数型プログラミングのメリットとは何か――副作用のないプログラミングがまず挙げられます。これでバグが圧倒的に少なくなります。さらにはコードの再利用がしやすいこと,並列処理が得意であるということも。それだけではありません。動的な型付けも特徴ですし,ラムダ計算もクロージャも,さらにはオブジェクト指向までできます。数十年の時を越えて現代にも通用する普遍的なアイデアがLispにはあります。本書はさまざまなLispプログラム(ハノイの塔,エイトクイーン,オンライン書店など)を解説し,さらにリファクタリングまでいっきに学びます。本書で関数型プログラミングのエッセンスを得ることができます。
こんな方におすすめ
- プログラマ(オブジェクト指向プログラマ,昔からのLispプログラマ)など
著者の一言
本書では関数型プログラミングを学ぶために,関数型プログラミングとは何か,なぜ今それを勧めるのか,なぜそれが難しいと思われているのかから始めました。そして副作用のないプログラムこそ関数型プログラミングの本質であると最初に言いました。副作用のないプログラムにするために破壊的な代入文を使うなとか,再帰プログラミングしろ,変更不可なデータ構造を使えなどを言ってきました。しかし本質はそこではありません。副作用のないプログラムが本質で,再帰プログラミングなどは手段です。
そして関数型プログラミングの便利な機能として,高階関数や評価戦略を紹介し,そこで面倒で小難しいことが書いてあったかもしれません。このため,関数型プログラミングは難しいと思われたかもしれませんが,そんなことはありません。難しくありません。もし難しいと感じても,そんなことは気にせず,気軽に少しずつわかるところから関数型プログラミングを楽しんでください。これが本書を執筆した想いになります。
もし関数型プログラミングの道に迷ったら,第3章と第5章をもう一度読んでください。関数型プログラミングの概略を誰かに伝えるときは1章を中心に第3章や第5章のプログラムを散りばめることをお勧めします。これできっと関数型プログラミングを布教できます。
「再帰プログラミングはおいしい」そして「副作用は今まで何気なしに使ってきたけれど,実は不思議なものだった」ということを実感してください。でも「繰り返し文による制御も悪くない」,「代入文による副作用は強力な武器だ」という手続き型の考えも大事です。この2つの相反する考えを自分の中で,うまく折り合いを付けてください。これが重要です。関数型プログラミングに傾倒して,他を見なくなることもだめです。逆に関数型プログラミングを無視することでもありません。両方をバランス良く,その中庸が一番の肝心です。
そして関数型プログラミングを楽しんでいってください。このときにLispを一番にお勧めします。きっとLispで関数型プログラミングが楽しく学べることでしょう。エディタでプログラムを編集することも,コンパイルすることも,全部のコードを書くことなく,Lispのトップレベルで1秒以内で動かすことができます。統合開発環境を起動している間に,Lispの関数を3個以上評価することがきっとできます。他の関数型言語よりも気楽に楽しく学べるでしょう。
Lispでしっかりと関数型プログラミングがわかれば,他の関数型言語もきっと楽しく関数型プログラミングの世界へ導いてくれることでしょう。この意味でLispは他の言語の橋渡しになります。本書では第2章でこのLispの超入門を紹介してきました。第2章では関数型プログラミングで必要になる関数を中心に紹介してきました。しかしCommon Lispなどの一般的なLispには非常に多くのシステム関数が用意されています。Lispをもっと学びたい方はLispの入門書を見てください。Lispの面白さがもっと実感できることでしょう。ただし,Lispは純粋な関数型言語ではありません。オブジェクト指向プログラミングでもあり,手続き型プログラミングでもあります。Lisp処理系によっては論理型プログラミングの機能も持っています。そこでLispでこれらの便利で豊富な機能面に嵌まり込まずに,関数型プログラミングを忘れないようにしてください。
関数型脳は作るには,Lispで遊んでみることが一番です。ただしこのときに副作用のあるプログラムを作ってはいけません。オブジェクト脳や手続き型脳になってしまいます。再帰プログラミングは脳の運動にもなります。関数型脳になれば,手続き型の考えから,新鮮な考えができるようになります。
最後にもう一度言います。楽しみながら,関数型プログラミングをしていきましょう。関数型プログラミングの世界はあなたを待っています。
補足
ソースコードのダウンロードもありますので、気軽にLispプログラミングをためしてみてください。この書籍に関連する記事があります!
- IoT時代のプログラミングの楽しい学び方
- 今はIoT(Internet of Things;モノのインターネット)の時代です。ソフトウェアシステムはいろいろなセンサやアクチュエータ,ITシステムと動的に繋がり,常に拡大しています。
本書のサンプル
本書の一部ページを,PDFで確認することができます。
- サンプルPDFファイル(545KB)
本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。
この本に関連する書籍
-
Haskell入門 関数型プログラミング言語の基礎と実践
基礎文法から実践的なアプリケーション開発までしっかりわかるHaskellの入門書です。型,関数,モナド,並列並行などHaskellの重要な考え方と実際にアプリケーション開...
-
関数プログラミング実践入門 ──簡潔で,正しいコードを書くために
長い歴史のある関数プログラミング。 メジャーな命令型言語の最近のバージョンでは,関数プログラミングの要素を取り入れた機能が入ってきました。 使っている言語の...
-
実践F# 関数型プログラミング入門
.NETで使われているジェネリックやラムダ式は,関数型言語では早くから提供されていた機能であり,.NET向けに実装されたものといえます。関数型言語は、古くから存在す...
-
プログラミング in OCaml 〜関数型プログラミングの基礎からGUI構築まで〜
OCamlは,フランスのINRIAで開発された関数型言語です。実行速度も速く,バグも作りにくい言語構造となっているため,一番実用的な関数言語といわれています。 本書は...