タグ

ProgrammingとHaskellに関するNyohoのブックマーク (11)

  • Ladder of Functional Programming 〜関数型プログラミングのレベル分け〜 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? LambdaConfがツイートにて関数型プログラミングのレベル分けを発表していました。今後LambdaConfから発信される発表にはこのレベルが表記され, 自分のレベルにあったコンテンツが探しやすくなるようです。このレベル分けはプログラマの優劣を付けるようなものではなく, 広く深い関数型プログラミングの世界で自分が今どのレベルにいるのかを適切に理解し次にどこに向かうべきなのかを知るのにたいへん役に立つものだと思います。 表を眺めてみると関数型プログラミングというよりかはHaskellのレベル分けのような印象も受けますが、広く知られるべき

    Ladder of Functional Programming 〜関数型プログラミングのレベル分け〜 - Qiita
  • [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 記事一覧 | gihyo.jp

    第1章関数プログラミングは難しくない! ―初めて学ぶ人にも⁠⁠、挫折した人にもきちんとわかる 山和彦 2015-03-02

    [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 記事一覧 | gihyo.jp
  • 第1章 関数プログラミングは難しくない!―初めて学ぶ人にも、挫折した人にもきちんとわかる | gihyo.jp

    [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 第1章関数プログラミングは難しくない! ―初めて学ぶ人にも⁠⁠、挫折した人にもきちんとわかる マルチコア環境が身近になった影響からか、勉強熱心なプログラマの間で関数型言語が話題になっているようです。関数型言語が奨励する関数プログラミングでは、これまで命令型言語で習得した、命令プログラミングの再代入を使う技法があまり通用しません。そのため、「⁠関数型言語は難しい」と言って途中で投げ出してしまう人も多いようです。 この特集では、関数プログラミングの習得を一度諦めてしまった人や、これから始める人のために、関数プログラミングのポイントをできるだけわかりやすく説明します。 筆者がわかるようになるまで 実は筆者も長い間、関数プログラミングを習得できませんでした。筆者は、長年Emacs Lispを使って、Mewというメールリーダーを開

    第1章 関数プログラミングは難しくない!―初めて学ぶ人にも、挫折した人にもきちんとわかる | gihyo.jp
  • Haskellでの合成可能なオブジェクトの構成とその応用

    Haskellでの合成可能なオブジェクトの構成とその応用 木下郁章, 山和彦, 2015 Haskellで状態を管理する際は、 一般的に代数データ型や型クラスが用いられるが、 データが拡張できないか、動的な性質を持たない。 そのためHaskellは、 複雑な状態を扱う問題領域には適していないと考えられてきた。 一方で、一般的なオブジェクト指向言語では、 オブジェクトを提供することでこの問題領域で成功を収めている。 論文では、Haskellの言語仕様を変更することなしに、 オブジェクト指向言語から着想を得たオブジェクトを実現する。 論文で提案するオブジェクトは圏を構成し、合成を用いて継承を表現できる。 また、終了する運命にあるオブジェクトやストリーミングなどに応用でき、 複雑な状態を扱うゲームの実装にも使われている。 論文をダウンロード(PDF) PPL 2015 発表スライド ここに

    Nyoho
    Nyoho 2015/02/23
    このところよくふみさんが山本さんとやりとりされていた成果が論文になったんだ! 面白そう。
  • 関数型言語のウソとホント - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 追記 こんな記事を読むより、まともな関数型プログラミング言語を使ってまともに関数型プログラミングを学ぶほうが、関数型プログラミングについてよほど正確な理解を得られます。少しでも関数型プログラミングに興味のある人は、まずは真面目なHaskellの教科書やすごいHを読んだり、やさしいHaskell入門を読んだりしながら、実際に関数型プログラミングのコードを書いてみることをお勧めします。 繰り返しますが、この記事はあんまり読む必要はないです。関数型プログラミングを理解するには実際に自分でコードを書いてみるのが一番です。関数型プログラミングあ

    関数型言語のウソとホント - Qiita
  • 内包表記について、すごい合同勉強会で話した | そんなこと覚えてない

    すごい合同勉強会2014 in 広島でセッションしたので内容を公開しておく。 今回は「私がモナドの内包表記という名前を知った時の感覚を伝えよう」というのが目的でした。 さりげなく「私がモナドに感じている効能を伝える」というのもしているのですが、そこは当にさりげなく。 内包表記。その意味を知らずに5年前ぐらいにpythonで利用していて、forやif文字通りにうけとっており、その動作を正しく理解できてないときがありました。 現在とその間にHaskellを学び、その5年前の自分に内包表記を伝えるにはという観点で話を進めました。 まず、リストの内包表記ですが、リストを生成を簡単にしてくれる機能です。 内包表記は、どうやら数学の集合の記法である内包的記法に由来するそうで、「関数プログラミング入門 ―Haskellで学ぶ原理と技法―」か何かで読んだ記憶があります。 その対になる記法として外延的記法

    Nyoho
    Nyoho 2014/11/04
    普通の集合の書き方、みんな好きそうでよかったよかった。
  • USトップ大学でも関数型プログラミングが余り教えられていない現実 | POSTD

    数カ月前、私たちは一部の言語が他の言語に比べて受け入れられやすい理由を調べた SocioPLT リサーチプログラムについて 投稿 しました。その 調査 の一環として、2000年から2010年の期間内にSourceForgeのプロジェクトで使用された言語を調べて頻度別にランク分けしたのですが、この結果で興味深かったのは、上位20の言語の中に関数型言語が1つもなかったということです。 教育機関のプログラミング言語研究者は関数型言語を好む傾向にあるため、この事実を残念なことと思うでしょう。しかしながら、このような事態に陥った原因の一部は、私たち学術研究者自身にあるのかもしれません。関数型言語が“現実の世界”で受け入れられるためには、大学などの機関がそれを教えなければならないからです。この投稿を通じて、そうした教育プログラムを持つ大学がほとんどないことが分かるでしょう。プログラミングの教育課程にお

    USトップ大学でも関数型プログラミングが余り教えられていない現実 | POSTD
  • 関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド

    Googleで適当に検索すると とズラリと出てくる。 オブジェクト指向 v.s. 関数型プログラミング 関数型とオブジェクト指向という一見相反するプログラミングパラダイムの併用について理解した プログラマが知るべき97のこと/関数型プログラミングを学ぶことの重要性 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 関数型プログラミングとオブジェクト指向の抜き差しならない関係について整理して考える とそれなりに参考になりそうな情報はあるものの、無駄に複雑化されたオブジェクト指向をストローマンにするような記事ばかり(それだけ今までのオブジェクト指向にみんなうんざりさせられているのだろう)で、そろそろきちんと自分自身「関数型プログラミングとオブジェクト指向の切り離され方」についてはっきりさせておきたい、と考え、概念整理した結論を書きます。 まず端的な結論 結論を

    関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド
  • モナド教

    前提知識:モナド モナドを理解せずともモナド教を信ずることは出来ますが,理解していればより深く納得できるでしょう. 操作 :: 型 -> 型 は,"型"から"型"へ写す"操作"の存在を表します. モナドの文脈 m が必要とする2つの操作: return :: a -> m a で,値を保ちつつ文脈 m の中に入れ込むことが出来ます. (=<<) :: (a -> m b) -> (m a -> m b) で,「値を文脈に入った別の値へ写す操作」を「文脈に入った値を同じ文脈に入った別の値へ写す操作」に変換します. id :: a -> a は値をそのまま返す操作です. id を =<< で変換して得られる操作 join :: m (m a) -> m a で,二重に文脈に入った値を一重の文脈に入った値に戻すことが出来ます. 文脈の値から生の値を取り出す型 m a -> a を持つ操作は,一般

    Nyoho
    Nyoho 2014/08/14
    最後の寄進が欲しいものリストでワラタ
  • RubyにHaskellよりも強力なパターンマッチを実装した - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    RubyにHaskellよりも強力なパターンマッチを実装した - Qiita
  • 関数型言語を学ぶことは実務でどう役に立ったか - Rejasupoem

    関数型LT大会で「実社会の問題を解決する関数型言語」というタイトルで発表しました。 というのも、会社で「すごいHaskellたのしく学ぼう!」の輪読会をしていて、最初こそ10人以上の人が参加していたのだけど、章が進むごとにどんどん人が離脱していって、主催者としてはなんとか完走したいという思いがあったので、調べたのですが、 ヒアリングから、この二つの線がクロスしたときに、人は離脱するという知見が得られました。 ということで、Haskellに対して実用性を見出したいと思いながら半年を過ごしたのですが、実用的 = 仕事で使うということであれば、今の現場でHaskellに移行するのは現実的ではありません。 でも、Haskellには関数型言語のエッセンスが詰まっていて学びが多かったと思っていて、直接的には使っていないけど、概念として役立つことがあると思ったので、それを伝えるために今回文章に起こしまし

  • 1