タグ

functionalに関するJxckのブックマーク (19)

  • 関数型プログラミングのお勉強リンク - Qiita

    はじめに これは自分用の関数型プログラミングお勉強ノートです。 Atom や CoffeeScript に少し退屈してきたので別のお勉強をすることにした。 関数型プログラミングを学ぶことにした。 時々、Qiita の記事とかは読んでいたが、ガーッと調べてやりだしたのは半月程前の 2016年の6月の初旬から。 しばらく続けてみようと思う。 調べ物がどんどん拡散して行くので整理の意味でここに dump しておく。 自分が使う用。 自分が読んで良かった or 良さそう、なリンクに絞ってある。 リンク集としては既にとても豊富で、簡単に消化し尽くせないので自分用としてはこれで十分だ。 ちゃんと消化していくには相応の時間がかかるだろう。 同じように関数型プログラミングを初歩から学ぼうとしている人の参考になるかもしない。 俺のプログラミング勉強法は、これまでの経験上、以下の様なパターンがある。 今は 1

    関数型プログラミングのお勉強リンク - Qiita
  • JavaScript で Y コンビネーターを理解する - Qiita

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

    JavaScript で Y コンビネーターを理解する - Qiita
    Jxck
    Jxck 2016/05/31
    Y combinator (Z combinator) の計算過程、変換過程の解説
  • 関数型・オブジェクト指向なプログラミングパラダイムについて思うところ - 技術memo

    動機 イメージ論でない言語パラダイムに関する話を書きたかった。*1 まともな意見をインターネット空間に1つでも多く残しておきたかった。*2 要約 オブジェクト指向プログラミングはデータに対する操作をオブジェクト*3として抽象化する。 関数型プログラミングでは関数による抽象化を基とする。 言語設計の問題と概念の問題は、混同すべきではない。 オブジェクト指向プログラミング 題材 Consというデータ構造を考えてみます。 Consは任意のデータのペアから成り、その片方をCar、もう片方をCdrと呼びます。 それはJava風に書けば次のようになるでしょう。 public final class Cons{ private Object car; private Object cdr; public void setCar(Object x){ this.car = x; } public voi

    関数型・オブジェクト指向なプログラミングパラダイムについて思うところ - 技術memo
  • Functional Programming Patterns (NDC London 2014)

    (video of these slides available here http://fsharpforfunandprofit.com/fppatterns/) In object-oriented development, we are all familiar with design patterns such as the Strategy pattern and Decorator pattern, and design principles such as SOLID. The functional programming community has design patterns and principles as well. This talk will provide an overview of some of these, and present some dem

    Functional Programming Patterns (NDC London 2014)
  • 「オブジェクト指向プログラミング」と「関数型プログラミング」のたった一つのシンプルな違い - Qiita

    はじめに 関数型プログラミングとオブジェクト指向の抜き差しならない関係について整理して考えるという記事がkenokabeさんという方が挙げていて、拙著の 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡について言及があったので、補考として挙げておく。 暗黙的状態と明示的状態 これまで、関数を「わかりやすくきれいに書く方法」とオブジェクト指向が「どのようにして生まれてきたか」について話してきた。 新人プログラマに知ってもらいたいメソッドを読みやすく維持するいくつかの原則 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 一見、それぞれ関係ないように思うかもしれないが、実は大きなテーマでつながっている。 『それは「状態」をどのように取り扱い単純化するか。』ということだ。そして、これがいわゆる関数型プログラミングとオブジェクト指

    「オブジェクト指向プログラミング」と「関数型プログラミング」のたった一つのシンプルな違い - Qiita
  • https://qiita.com/kenokabe/items/13ea8d2da6adce1b3b9a

  • 関数型言語を学ぶことは実務でどう役に立ったか - Rejasupoem

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

  • – Tech Pro Shopping

    WE'RE COOMING SOON The page has not yet been created, but we are already working on it, we are working hard to give you the best experience with this

  • マルチコア時代のプログラマは関数脳になろう〜Java8のススメ〜 - Tech-Sketch

    CPUのクロックアップに限界が訪れ、マルチコア化することで処理性能向上を目指す時代になりました。これからのプログラマには、マルチコアで処理性能が向上するプログラム=マルチスレッドで並列処理が可能なプログラムを書く能力が必要になります。今回は「関数型」でプログラムを書くことによって、いとも簡単に並列化ができることを実例を元に解説します。 関数型プログラミングと並列処理 「関数型でプログラムを書くことで簡単に並列化できる」と書きましたが、そもそもここで言う「関数」とは何なのでしょうか? 関数型プログラミングの特徴 関数型プログラミングの「関数」を理解するためには、数学における「関数」を想像するとわかりやすいでしょう。 例えば三角関数を用いた y=cos(x) という式を考えてみます。この式に入力値 x=0 を与えた場合、いつでも必ず結果は y=1 になります。x= π/3 の場合は y =

  • 関数を扱えることはどのようにプログラミング言語の能力をあげるか - きしだのHatena

    Java8で関数が値として扱えるようになりました。 このことが、「関数が渡せると便利だよね」という観点ではなく、プログラミング言語としての能力をどのようにあげるか考えてみます。 圏論からのテクニックが使いやすくなる 集合論はどちらかというと値にたいする理論でしたが、圏論は関数呼び出しに関する理論です。 プログラムには、関数呼び出しを連結させて値を変換していくという側面があります。 そのような関数呼び出しの扱い方を整理するのが圏論で、圏論の考え方を使うことでより安定したプログラムを書くことができます。 モナドなど圏論由来のテクニックを使うには、どうしても関数を値として扱う必要があります。 関数を値として扱うことで、圏論のテクニックが使いやすくなり、安定したプログラムの書きやすさにつながります。 型の証明能力があがる 動的な型付の言語にくらべて、静的な型付の言語はプログラムが間違いにくいといわ

    関数を扱えることはどのようにプログラミング言語の能力をあげるか - きしだのHatena
  • 他の言語を学んで自由になろう

    1 kazu@iij.ad.jp 2 3 Paul Graham 4 Andrew Hunt and David Thomas 5 6 Java 7 Java Java Java 3 8 Haskell Scala Scala 9 10 Java Java Dean Wampler AWT ActionListener public interface ActionListener extends EventListener { public void actionPerformed(ActionEvent e); } 11 AWT ActionListener import java.awt.*; import java.awt.event.*; class ButtonApp { private final Button button = new Button(); public Bu

    Jxck
    Jxck 2013/04/11
    "Java プログラマに関数プログラミングの優れた部分を紹介する"
  • Functional Language.pdf

    Jxck
    Jxck 2013/02/07
    「関数型言語と並列・分散処理」 200 ページ越え。
  • Javascriptで学ぶ Functional Programming

    Lean Functional Programming with Javascript (in Japanese). This slide introduce 1. Anonymous Function 2. Lexical Scope 3. Referential Transparency 4. Higher Order Function 5.Currying 6.Function Composition 実用的でないという意味ではありません。 Read less

    Javascriptで学ぶ Functional Programming
    Jxck
    Jxck 2011/11/21
    JavaScript に関数型の考え方を持ち込んだ場合の考え方。とても参考になる。やはりHaskellは避けては通れないのかな。。
  • 「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)

    「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)

    「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)
  • 関数型言語が普及しない理由 - 偏見プログラマの語り!

    えーとですね...。 関数型言語が普及しない理由:俺が分からないから 2011-11-12 13:04:14 via Tween 関数型言語が普及しない理由:「関数型言語が普及しない理由」という記事をみんなが書くから 2011-11-12 13:04:43 via TweetDeck ようし僕も「関数型言語が普及しない理由」という記事を書こうか。 2011-11-12 13:05:22 via Krile2 期待age RT @PG_kura: ようし僕も「関数型言語が普及しない理由」という記事を書こうか。 2011-11-12 13:07:55 via web 犬ェ... 2011-11-12 13:10:18 via Krile2 というわけで稿を書くわけですが(ヤメテ!そんな冷たい目で僕を見ないで!)、関数型言語*1についてはよく知りませんので、決して真に受ける事無く、オブジェクト

  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 関数型言語で工数削減できる理由、後編 - えちょ記

    で、結局どうなのよ、という話。まあ、いい話も悪い話もあったりするのですが。 値のバグについて追跡が容易 ある変数の値がおかしいとき、一般の言語ではその値の出所(バグコードの場所)を特定することが困難になりがちです。どこで値が再設定されるのか追いきれないからです。しかし再代入不可タイプの関数型言語の場合、その値を設定した箇所は1箇所に特定できます。値がおかしいということは、その式がおかしいのか、その式に含まれている変数の何れかがおかしいのか、どちらかです。 つまり再代入不可である限り、値のバグはコードを追うだけで特定可能です。ステップ実行で追いかけないと見つけられないようなバグにはめったに出くわしません。 並行処理によるスレッドの相互干渉箇所を限定しやすい 「変数の再代入不可」であれば、一旦確定した値の参照は何度でも、たとえ同時に行っても値は同じままです。この特徴はマルチコアにおける並行処理

    関数型言語で工数削減できる理由、後編 - えちょ記
  • 関数型言語で工数削減できる理由、前編 - えちょ記

    「関数型言語は開発効率が良い」とよく言われます。「オブジェクト指向と比べて‥‥」なんてつい比較してしまうがゆえに論争っぽいループが発生したりするのを良く見かけますが、まあそれはおいといて、実際なぜ効率が上がるのか考えてみました。 関数型言語が採用する概念のうち、特に工数削減に貢献する要素を挙げてみます。 パターンマッチ プログラムでは条件に応じて処理を仕分けることが多々ありますが、入り組んだIF文はそれだけでプログラムの意図が分かりにくくなりバグの温床となります。 モダンな関数言語では、条件判断記述を関数の入り口に設置し、条件を満たしたときだけ関数の体を実行するような構文が書けるタイプの文法を採用しています。このような構文は、コンパイル時或いは実行時にIF文が合成され、パラメータにより処理が分岐されます。CやJavaなどのswitch-case構文をものすごく強力にしたもの、と考えればい

    関数型言語で工数削減できる理由、前編 - えちょ記
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 1