ホームへ

関数型プログラミング・ログ FPLOG

はじめての Lisp 関数型プログラミング」より

ここでは、本書や関数型プログラミング、Lisp などについて、日記風ログを突発的に書いています。

  1. 2016/6/5 電脳会議 vol.172 の効果!?
  2. 2016/5/7 イチオシの1冊! - Software Design 5月号から
  3. 2016/5/5 モンドリアン風アイコンを作ってみた
  4. 2016/4/25 表紙がモンドリアンな理由は?
  5. 2016/4/16 大学生の教え子にこの本と4コマ漫画を紹介
  6. 2016/4/2 感謝!色々なお声をありがとうございます
  7. 2016/3/27 ISLisp版のサンプルプログラムを公開
  8. 2016/3/25 Kindle 版も発売されました!
  9. 2016/3/21 amazon の開発技法でベストセラー 1位に!!
  10. 2016/3/20 お詫び: 本書の正誤表
  11. 2016/3/19 関数型女子の日常のネタ帳
  12. 2016/3/18 それぞれの紹介文
  13. 2016/3/18 「はじめてのLisp関数型プログラミング」発売!!
  14. 2016/3/12 カバーはモンドリアン(今日、本書が届きました!)
  15. 2016/3/10 副作用のないプログラムの世界
  16. 2016/3/9 「関数型女子の日常」誕生秘話
  17. 2016/3/9 繰り込み
  18. 2016/3/9 Lispの理由
電脳会議 vol.172 の効果!? (2016/6/5)

(クリックすると拡大します)

技術評論社の小冊子「電脳会議」の vol.172「IoT時代のプログラミングの楽しい学び方」の記事が掲載されました。
おかげさまで5月末ごろから、amazon や 楽天、honto などでその効果が見えてきました。電脳会議を見られて、本書をご購入いただいた皆様、ありがとうございます。 本書を楽しんでいただけましたでしょうか。そしてこのサイトも見てやってください。

ページの先頭

イチオシの1冊! - Software Design 5月号から (2016/5/7)

(クリックすると拡大します)

Software Design 5月号に、「イチオシの1冊!」ということで、本書の電子版が紹介されていました! また書評も掲載されていました。ありがとうございます。

ページの先頭

モンドリアン風アイコンを作ってみた (2016/5/5)

モンドリアン風のアイコンを Excel 方眼紙で作ってみました。・・・どうでしょうか。

ページの先頭

表紙がモンドリアンな理由は? (2016/4/25)
長年の謎であった「なぜ表紙がモンドリアン?」の疑問に一つの解答がありました。 ある方が twitter でつぶやかれていました。

その理由とは・・・

その前に、モンドリアンの作品には「コンポジション」という名前が付いています。

「内容にコンポジションという用語が使われていたからか?」

嗚呼さうだったんでせうか.有り難たうございました。

なお、コンポジションは「has a 関係」で使っています

ページの先頭

大学生の教え子にこの本と4コマ漫画を紹介 (2016/4/16)

大学で「ソフトウェア工学」を非常勤講師として教えています。

そこで自己紹介がてら、大学生の教え子たち、この本を紹介しました。

もちろん、「Lisp が素晴らしい件」と「関数型プログラミングがトレンディな件」なことと

・・・4コマ漫画の件を。

ページの先頭

感謝!色々なお声をありがとうございます (2016/4/2)

本書が書店に並んだり、ネットストアで販売されるようになると、色々とお声を掛けていただいております。お声を掛けていただいた皆様、ありがとうございます。

中には懐かしい方からのお声もあり、本当に嬉しいです。

Twitter やブログなどでも色々とつぶやいていただいた皆様、ありがとうございます。いただいたコメントはもちろん大事にさせていただきます。この増補ページで対応可能なものはここで補完させていただきます。

これからも Twitter や facebook、ブログ、ウェブページなどで色々なコメントをつぶやいてください。ご意見を楽しみにお待ちしております。

ページの先頭

ISLisp版のサンプルプログラムを公開 (2016/3/27)

本書にあるサンプルプログラムを ISLisp でも動作するように、移植しました。ダウンロードページにあります。

但し、オブジェクト指向機能やランダム関数、マクロ展開を使っているプログラムは移植が面倒なので、これらを使っているサンプルプログラムはありませんので、ご了承ください。

これを機会に、本書で紹介している OKI ISLisp もお試しください。

ページの先頭

Kindle 版も発売されました! (2016/3/25)

Amazon で Kindle 版が発売されました。こちらからどうぞ!

Kindle 版は目次リンクや外部ページへのリンク、そして検索機能が便利です。そして何より場所を取りません。

ボリュームでページ送りができるのが GJ! です。

その後、楽天koboなどでも電子書籍版が発売されました!

ページの先頭

amazon の開発技法でベストセラー 1位になりました!!
 (2016/3/21)

今日、amazon の開発技法でベストセラー 1位になりました!!

Lisp という(ほんの少し)マイナーな言語で、関数型プログラミングに関する本が1位になるなんて、嬉しいです。

クリックすると拡大します

早速、画面をキャプチャしてみました。
読者の皆様、関係者の皆様、本当にありがとうございました。

P.S.
ヨドバシ.com でもプログラミングとネットワーク・通信のカテゴリで、3/23にトップになりましたので、紹介します。書籍全体では73位でした。

クリックすると拡大します

ページの先頭

お詫び: 本書の正誤表 (2016/3/20)

本書に、誤字・脱字・間違いなどがありました。現時点で5ヶ所見つけております。 ご迷惑をおかけしたことを深くお詫び申し上げます。

現時点での正誤表はこちらで仮公開しております。近日中にサポートページで公開させていただきます。

ページの先頭

関数型女子の日常のネタ帳 (2016/3/19)

好評を頂いている(?)「関数型プログラミング本を読んでみた女子の日常(関数型女子の日常)」のネタ帳です。

最初のネタは「関数型プログラム言語は副作用のないプログラムで作られているのか?」です。 関数型プログラミング言語は普段、副作用のないプログラムこそ最高だ!と胸を張っていても(威張っていても)、 その関数型言語は、副作用バリバリの手続き型言語で作られているのが、残念ながら、隠された真実です。

もちろん、このときの免罪符となる言葉は「言語の選択は適材適所で」という言葉です。つまり言語処理系は関数型言語でなく、手続き型言語が向いているということです。

でもこれって、卑怯ですよね。ええ、ここら辺りをネタにして、関数型女子たちに言葉責めしてもらおうと思っています。・・・いつの日かネタがなくなったときに。

ラムダ計算(式)とクロージャの関係」もその後で突っ込んでもらうネタです。これもネタが切れたときに。。。

ページの先頭

それぞれの紹介文 (2016/3/18)

この本の紹介をする機会が増えてきています。しかし Lisp を知っている人向けはいいのですが、そうでないと大変です。 ということで、この本の紹介文を対象者別に書いていきます。

(1) 関数型プログラミングの良さを知っている Java プログラマ向け:

関数型プログラミングはオブジェクト指向プログラミングと背反な関係でなく直交する関係ですので、Javaプログラマでも使えます。 この本では関数型プログラミングを学ぶのに Lisp を使っていますが、Java でも利用できる機能を使っています。 安心して学んでください。

(2) 関数型プログラミングそのものを知らない人向け:

今は色々な機械がネットワークで繋がり「もののインターネット(IoT)」と呼ばれるようになってきています。 このような多数の機械が繋がる中で、他の機械のプログラムに影響を与えることなく、自由に独立にプログラムを作ることが求められています。 この自由に独立してプログラムを作成する方法として、1950年代から登場する「関数型プログラミング」の考えがあります。 これが今の IoT の時代に再び脚光を浴びています。本書ではこの関数型プログラミングの入門書になっています。

ページの先頭

「はじめてのLisp関数型プログラミング」発売!! (2016/3/18)

今日は「はじめてのLisp関数型プログラミング」の発売日です。

もし本屋さんで見かけたら、立ち読みしてくれたら、嬉しいです。ぱらぱらとめくってくれれば、嬉しいです。 そしてもし気にいってくれて、買っていただければ、ものすごく嬉しいです。 そしてそして、読んでいただければ、もっともっと嬉しいです。

「Web版 関数型プログラミング本を読んでみた女子の日常」がどんどん増殖していますので、 魑魅魍魎な世界になる前に、是非、覗いてやってください。

ページの先頭

カバーはモンドリアン(今日、本書が届きました!) (2016/3/12)

今日、本書が届きました。PDF で印刷したものと、実物では感動が違います。臨場感が違います。

この本に携わっていただいた出版社の方々や色々な方々、本当にありがとうございました。

早速、写真を撮ってみました。見開きはついつい、関数型女子のページにしています。


クリックすると拡大します
カバーデザインは、「モンドリアン」です。中のデザインもモンドリアンです。 普遍性を限界まで追求した新造形主義のモンドリアンです。 Lisp の普遍性を限界まで追求した無駄のない構文にぴったりです。それに知性的で、まさに関数型プログラミングにぴったりです。 ・・・後付けの理由ですが。

それに、モンドリアンのカバーは書籍ではあまり見かけていません。これはいいです!それに黄色が目立っていいかも!

白色がプログラムの再利用を意味し、赤がイミュータブル、青が再帰で、黄色が副作用、灰色が状態で、シルバーが評価戦略を示しています。・・・かな?

ページの先頭

副作用のないプログラムの世界 (2016/3/10)

今日は「副作用のないプログラムの世界」についてです。

本書で一番言いたかったことは、副作用のことです。関数型プログラミングは副作用のないプログラムを作ることです。以上終わり。 と書くだけでも良かったぐらいです(本気ではありませんが)。

高階関数も評価戦略もおまけです。・・・本書では書かなかった過激な発言をしていますが。 だから関数型プログラミングの入門書としては、副作用のことを中心にした方がいいと思って、執筆しました。

しかし、副作用のないときのメリットと副作用のあるときのデメリットを書くだけでは不十分だと思い、副作用のメリットも書きました。 そして副作用をなくすときの苦しみも書きました。どうだったでしょうか。

ところで副作用と書くと薬の副作用のイメージがあって、悪いイメージがあっていいのですが、 英語で「サイドエフェクト」と書くと格好いいイメージが付いてしまう危険性があります。。。

ページの先頭

「関数型女子の日常」誕生秘話 (2016/3/9)

今日は「関数型プログラミング本を読んでみた女子の日常」の会話劇についてです。

会話劇は 竹内郁雄先生の「初めての人のための LISP」にもある Lisp 本の古典芸能になっています。・・・たぶん。

私もその伝統に則り、10年以上前から「やさしい Lisp の作り方」などの Web ページで、会話劇を用いて執筆していました。

その流れから、今回もいつものように会話劇を書いていました。それを後で Web ページで公開しようと画策していました。 ええ、このときは「本書に掲載する気はあまりありませんでした」。

この会話劇を編集の方に送ったところ、気鋭のイラストレータの先生に依頼していただきました。 そしてイラストレータの先生は、キャラクター設定の文章だけで、私のイメージぴったりのリンと、スー、プーひゃんを描いてくれました。

編集の方とイラストレータの先生、本当にグッジョブです。感謝しております。

そこで皆さんは、リンとスー、プーひゃんの名前は、リスプの1文字ずつ使っているということは、気づいてくれていますよね。 気づいて、気づかない振りをしてくれていますよね。

この Web ページでも彼女たちの会話劇は続いていますので、気になる方は、見てあげてください。

追記: 3/10にイラストレータの高野涼香先生から、このページでイラストの使用を許可していただきました。ありがとうございます。

ページの先頭

繰り込み (2016/3/9)

今日は本書で使っている用語です。もちろん、入門書ですから、なるべく一般的な用語を使うように心がけています。

しかし、本書で使っている「状態の繰り込み」というのは(私の発明ではないですが)あまり一般的な用語ではありません。

本書の「状態の繰り込み」とは、状態を引数や値として受け渡すことですが、「引数や値での状態の受け渡し」を何回も使うのはうっとしいと思い、 「状態の組み込み(組み入れ)」とか単に「状態の引数渡し」とかを候補としていました。
しかし、かっこいい言葉(中二病的な言葉!)として、量子力学で言う「繰り込み理論」の「繰り込み」がいいかと思い、そして日本語の意味としても通じるので、本書では「繰り込み」を採用しました。

本書では、このようなかっこいい(?)言葉をこっそりと使っています。本書で言葉遊びを各所で行っていますので、是非、見つけてください。

ページの先頭

Lispの理由 (2016/3/9)

最初のログは、FAQ 風にしてみました。

なぜ、関数型プログラミングを学ぶのに Lisp なのですか?

本書の第2章に書いていた理由はもちろんですが、それ以外にもあります。
Lisp は関数型プログラミングの機能が少な目です。例えば、遅延評価は Scheme にはありますが、Common Lisp にはありません。 モナドの素材になる状態の繰り込みも無限リストもありません。
しかし、クロージャや eval などのプリミティブな機能はありますので、それを使って、遅延評価や無限リストなどは実装できます。
逆に考えれば、クロージャなどによる実装を通して、これらの仕組みを奥深く学ぶことができます。 一方、これらの機能を最初から持っている言語であれば、その仕組みをあまり学ぶことなく、ただ使うだけになってしまいます。 これが関数型プログラミングを学ぶために Lisp を使った理由のひとつです。

もちろん、最大の理由は私が Lisp こそが最高の言語だと思っているからです。。。

ページの先頭

ホームへ


Copyright © 2016 All Rights Reserved by GOMI Hiroshi.