※注意 現在のElmは、これを書いた時とはかなり別物になっています。そのためElmを学ぶにはこの資料は適切ではありません。Functional Reactive Programmingの習得には参考になると思います。 ===== ElmはHaskellと同じく純粋関数型言語のひとつで、ブラウザ上で動くアプリケーションの作成に特化しています。目に見えるものがすぐに作れるなど、関数型プログラミングやFRP(Functional Reactive Programming)の入門によい面がいくつかあります。JavaScriptなど型のない手続き型言語に慣れた人向けに関数型プログラミングのイメージを掴んでもらうことを目的にしています。Read less
純粋関数型言語の性質 純粋関数型言語の性質として以下のものを参考に補足しました。 不変 (immutable) 副作用なし (no side effect) 参照透過性 (referential transparency) 置換モデル (substitution model) モナドと圏論の位置付け 圏論の入門書を幾つかチェックしましたが、モナドについてはほとんど記載がなく、モナドは圏論の基本概念ではないらしいということが分かりました。 また、"圏論の中に(基本構成要素として?)モナドがあるのは違和感がある"というコメントもいただき、技術マップの中で圏論やモナドをどのように位置付けるかが懸案事項になっていました。 その後、色々と調べてみて分かったのですが、圏論については、種々存在する数学や情報科学の各分野を統一的に記述するための「普遍言語」と考えるのが適切のようです。 代数的構造だけでなく
関数型LT大会で「実社会の問題を解決する関数型言語」というタイトルで発表しました。 というのも、会社で「すごいHaskellたのしく学ぼう!」の輪読会をしていて、最初こそ10人以上の人が参加していたのだけど、章が進むごとにどんどん人が離脱していって、主催者としてはなんとか完走したいという思いがあったので、調べたのですが、 ヒアリングから、この二つの線がクロスしたときに、人は離脱するという知見が得られました。 ということで、Haskellに対して実用性を見出したいと思いながら半年を過ごしたのですが、実用的 = 仕事で使うということであれば、今の現場でHaskellに移行するのは現実的ではありません。 でも、Haskellには関数型言語のエッセンスが詰まっていて学びが多かったと思っていて、直接的には使っていないけど、概念として役立つことがあると思ったので、それを伝えるために今回文章に起こしまし
なんだか話題になってるから書く。 やっと初心者を脱して中級者になりかけてるプログラミング学習者が関数型言語に何を感じているかを書こうと思う。 1 圏論とかいらないんじゃないの?Haskellが短いコードでプログラムを書けるというのは分かる。 forループをmapやfoldで抽象化する利点も分かる。 それでやりたい処理のほぼ全てがまかなえるということも実感している。 副作用のない小さな関数を合成して大きな関数を作る利点も分かる。 再利用性も上がるし、どこからどう影響を受けているかが簡単に分かるからバグも出にくい。 ただ、Haskellの基礎になってる圏論が何の役に立つのかは、まったく分からない。 むしろ邪魔なんじゃないかと思う。 ファンクターやモナドの概念が圏論で扱われているのは分かるけど、圏論なんて名前だけ知ってればコードを書くのに不都合はないだろう。 圏論が必要なのは、Haskellを設
近年、関数型プログラミングの重要性はいろんなところで叫ばれています。 Javaの最新バージョンに関数型プログラミングに関する新機能が加わりました。 Rubyも昨今、関数型プログラミングへのサポートが手厚くなってきています。 プログラミングの教科書の大手、オライリー社から、Javascriptで関数型プログラミングを行うための解説書が発行されました。 関数型プログラミングへの注目度は高まってきています。 おそらく、みなさんは既にオブジェクト指向が何か、を知っています。 でも関数型プログラミングとは何か、胸を張って語れる人は、周りに見当たらないかと思います。 実際、オブジェクト指向によってプログラミングする方法は、わかりやすい解説があちこちにある一方で、 関数型プログラミングとは何か、何が良いのか、ということについての、よいまとめは見つけることはできませんでした。 この記事を読む方の中で、「関
dWのサイトにはインデックスがないので、とりあえず時系列でまとめる。 (まとめコメントは随時追加予定) (2024/7/14 追記) 寄稿者は「プロダクティブ・プログラマー」他の著者であるNeil Ford。この連載はのちに書籍になっている。 なお、dWへのリンクはWayback Machineのアーカイブに差し替えた。 関数型の観点で考える 関数型の考え方: 関数型の観点で考える、第 1 回 (2011/7/1) 関数型の考え方: 関数型の観点で考える、第 2 回 (2011/7/1) 関数型の考え方: 関数型の観点で考える、第 3 回 (2011/7/29) 第1回では、純粋関数、高階関数、第一級関数といったあたり。 第2回では、クロージャ―とコレクションメソッド(≒リスト処理高階関数)。 第3回では、部分適用、カリー化、再帰。 サンプルコードは、Java以外に Functional
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く