lynx   »   [go: up one dir, main page]

タグ

関数型に関するn2sのブックマーク (19)

  • 関数の話 - ( ꒪⌓꒪) ゆるよろ日記

    こんにちは、しいたけです。 某所で関数型プログラミングとはリスト処理のことなのか、と燃えているのを見て、関数型プログラミングとは何か、ということを自分なりの考えを述べたいと思いました。春なので。 この資料は2年ほど前にSupershipの社内勉強会で使ったものですが、この中で関数とオブジェクトを対比している箇所があります。 関数もオブジェクトも、変数や関数の引数戻り値として扱える第1級の値であり、状態を持ち(メンバー変数/クロージャ)、組み合わせが可能(delegate, composition/関数合成)、である、と。 ではオブジェクト指向と関数型プログラミングで何が決定的に異なるかというと、設計・実装のアプローチに何を中心に据えるか、ということだと思います。 オブジェクト指向では、クラス・オブジェクトをモデリングし、各種のオブジェクト指向的デザインパターンを用いてオブジェクト同士を組み

    関数の話 - ( ꒪⌓꒪) ゆるよろ日記
  • 「関数型プログラミングって何?」日本語訳 - Okapies' Archive

    この記事は、技術翻訳 Advent Calendar 2016 の15日目です(枠が空いてたので勝手にお邪魔してます)。前回(6日目)は、id:msyksphinz さんの「個人が趣味技術書を翻訳するという意義について」でした。 今回ご紹介するのは、昨年末に公開された Kris Jenkins さん (@krisajenkins) の "What Is Functional Programming?" です。日語訳の公開については著者から承諾済みです。また、London Functional Programmers meetup での同タイトルの講演動画が公開されています。 関数型プログラミングの考え方は、世間ではどうも小難しい話だと思われている節があります。その理由の一つに、議論の抽象度が(比較的)高いことが挙げられるでしょう。例えば、以前このブログで紹介した「なぜ関数プログラミング

    「関数型プログラミングって何?」日本語訳 - Okapies' Archive
  • 可変性の回避 ― Rubyへの関数型プログラミングスタイルの適用 | POSTD

    稿では、関数型プログラミングのコンセプトを実用的な方法でRubyのコードに盛り込む方法について紹介します。これは、私が「関数型プログラミングのスタイル」と呼んでいるものです。 私が言う「実用的」とは、関数型プログラミングのスタイルを取り入れた後もなお、コードの見た目や印象にRubyの特徴が残っていることを意味します。Rubyは、Haskellではありませんし、Haskellであるべきでもありません。考え方としては、この言語の性質を 利用しよう とするものであって、それに反することをするわけではないのです。出来上がったコードは、Rubyユーザにとって簡単に理解できるものであるべきです。うまくいけば、使い慣れているものよりも簡単と感じていただけるはずです。 では、可変性を回避する利点、方法、欠点、そして可変性の回避が適切ではないケースについて見ていきましょう。 なぜ可変性を回避するべきなのか

    可変性の回避 ― Rubyへの関数型プログラミングスタイルの適用 | POSTD
  • 関数の話

    Supershipの社内勉強会で使ったやつ

    関数の話
  • 関数型プログラミングはまず考え方から理解しよう

    ※仕様の細かいツッコミはご勘弁を…。 オブジェクト指向で解く みんな大好きオブジェクト指向では、物単位で考えます。言わずもがなですね。やり方はいろいろあると思いますが、まずお弁当という単位で集めると 唐揚げお弁当クラス 状態 主名 唐揚げ個数 値段 … 振る舞い: つまみい() 値段取得() 唐揚げ個数取得() … のような感じで、弁当に必要な要素と必用な処理をひとまとまりにして扱うというのがオブジェクト指向です。 お弁当スーパークラスを作って継承で唐揚げ弁当クラスを、というように拡張を考えた設計にするというのも汎用性が必要な場合は良いと思います。 では早速コードにしてみましょう。 言語はJavaScriptにしています。 (function(){ window.onload=function(){ ////////////////// // クラスの定義 // ///////////

    関数型プログラミングはまず考え方から理解しよう
  • 「なぜ関数プログラミングは重要か」を要約してみた(その1) - Okapies' Archive

    関数型プログラミング (functional programming) の利点を説く際によく持ち出されるのが、QuickCheck の開発者の一人である John Hughes が 1984 年に著した論文 "Why Functional Programming Matters" だ。「なぜ関数プログラミングは重要か」という題名で日語訳もされているので、読んだことがある人も多いと思う。 要旨としては、冒頭の1章および2章で述べられている「関数型プログラミングが優れているのは、高階関数と遅延評価という、モジュール同士を貼り合わせる強力な『糊』を持っているからだ」という話がほぼ全てで、以降はそれを具体例に基づいて説明する構成になっている。ただ、その具体例として「数値計算アルゴリズム」やら「ゲーム人工知能アルゴリズム」やらの話が延々と続くし、しかもコード例が Haskell の先祖にあたる

    「なぜ関数プログラミングは重要か」を要約してみた(その1) - Okapies' Archive
  • はじめての関数型プログラミング教室

    書いて遊ぼうScalaハンズオン

    はじめての関数型プログラミング教室
  • [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 記事一覧 | gihyo.jp

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

    [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 記事一覧 | gihyo.jp
  • 関数型プログラミング入門 | POSTD

    多くの関数型プログラミングに関する記事が教えてくれるのは、抽象的な関数型のテクニックです。つまり関数合成やパイプライン、高階関数などです。この記事では違います。ここでは、プログラマが毎日書く、命令型で非関数型のコードの例を示し、それを関数型の形式へ書き換えます。 最初のセクションでは、短いデータ変換のループを取り上げ、map関数やreduce関数に書き換えていきます。2つ目のセクションではより長いループを取り上げ、ユニットに分解し、それぞれのユニットを関数型に書き換えます。3つ目のセクションでは、連続した長いデータ変換のループを関数型のパイプラインに分解します。 ここではPythonでの例を取り扱います。というのも多くのプログラマはPythonを読むのは簡単だと思っているからです。多くの例では、mapやreduce、パイプラインなどの多くの言語に共通する機能を例示するため、Python的な

    関数型プログラミング入門 | POSTD
  • 関数型プログラミングとは結局何なのか | 黒曜の吹き溜まり

    この記事はドワンゴ Advent Calendar 2014の14日目です。 ちなみに前日は@erukitiさんでした。 他の方は「こんなもの作ってみた!」系の記事が多いのですが、技術系の話題であれば特に縛りはないようなので、今回はひたすら文章をつらつらと綴っていきたいと思います。 ここ数年、「マルチコア時代の主流は関数型だ」とか「Javaはもう古い! 時代は関数型!」といった記事をよく見かけるようになった気がします。 大学でOCamlを学んできた自分としては嬉しい限りなのですが、なんだか関数型という言葉がバズワード的な使われ方をしている気がして、まるで「現在起こっている全ての問題を解決する銀の矢だ!」といわんばかりの雰囲気を感じるのが気になっています。 最近うちの部署でもにわかに「関数型っぽく書こう」みたいな機運が高まってることもあるので、この機に関数型プログラミングとはなにか、どのよう

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

    前回 の記事では、関数型プログラミングの概念とJava8による実装例を示しました。しかしJava8のリリースは来年まで延期されてしまったため、今すぐ試してみるには少しハードルが高いかもしれません。 そこで今回は、Java7のJVM上で動作する代表的な関数型プログラミング言語、 Scala と Clojure を紹介します。 Scalaとは では、 Scala から紹介しましょう。 ScalaはJVM上で動作するプログラミング言語で、関数型の特徴とオブジェクト指向の特徴を合わせ持った、欲張りな言語です。 JVM上で動作するため、既存の膨大なJavaライブラリをそのまま流用でき、JVMのパフォーマンスチューニングノウハウを最大限活用することができます。またJavaよりも豊富な記述形式を持ちながらもJavaオブジェクトをそのまま扱え、強力な型推論を持った静的型付け言語でもあるため、定型的で冗

  • 関数プログラミングが教えてくれる規律

    IIJ技術者はセミナーや講演会等において、IIJの持つ技術力や独自研究開発、最新の技術動向について広く発信し、インターネットの発展に尽力しています。

    関数プログラミングが教えてくれる規律
  • 無差別に技術をついばむ鳥関数型プログラミングとは何か

    残念ながら関数型プログラミングは一般的に知られていないようなので、関数型プログラミングを簡潔に解説することにしました。少しでも参考になれば幸いです。 関数型プログラミングは宣言型プログラミングの一種です。宣言型プログラミングについては、違う記事で解説したので説明を省きます。一種という事は、他の宣言型プログラミングがあるのかと気になると思います。関数型プログラミング以外の宣言型プログラミングでメジャーなものを挙げると、集合型と論理型があります。参照型はSQL、論理型はPrologが有名です。今回は解説しませんが、面白いので一度体験してみる事をお勧めします。特にSQLは避けては通れない存在でしょう。 題に入ります。関数型プログラミングというぐらいですから、まずは関数について知らねばなりません。「関数」というとあまり強いイメージがないと思います。これは、漢字と翻訳に問題があったのが原因だと思い

  • notes/tenreasons/index.md at master · yukitos/notes

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    notes/tenreasons/index.md at master · yukitos/notes
  • 命令プログラミングから関数プログラミングへ

    15.7.11 HiRoshima.R #4 Lightning Talks @imyuaotiの発表資料です。 ※注意※(2015.7.19追記) Rでは処理速度が遅いという理由で for関数の使用は避けるべきと考えられています。 来は,処理を高速化をしたい場合,以下をうまく活用してください。 ・apply関数 ・foreachパッケージ,pforeachパッケージ 【参考資料】 「勝手に添削:for関数を使った繰り返し処理によるヒストグラムの一括出力 #rstatsj」 http://qiita.com/hoxo_m/items/5127c31f3eafd6be7428 (hoxo_mさんにスライドの内容を添削してもらいました!) 「for を捨てよ、foreach を書こう」 http://www.slideshare.net/hoxo_m/for-foreach 「R で超簡単

    命令プログラミングから関数プログラミングへ
    n2s
    n2s 2013/04/14
    「プログラミングの基礎」→asin:4781911609
  • Rubyによる関数型プログラミング

    古き良き小学校の時代、この行には困惑させられたものだった。 魔術的な x が、加算されたのに等しいままでいる事に。 どういうわけか、プログラミングを始めると、それに構わなくなる。 「やれやれ、それは重大な事柄じゃないし、プログラミングとは現実のビジネス行為なんだから、 数学的な純粋さについてあら探しなんて必要無い (その議論なら、大学にいる狂った髭面野郎どもにさせておけばいい)」と思っていた。 けれども、ただ知らなかっただけで、我々が間違っていて高い代償を支払っていたのは 明らかである。 Wikipedia によれば、「関数型プログラミング(functional programming, FP)とは、 計算を数学的な関数の評価とみなし、 状態や可変データを避けるプログラミングパラダイム」である。 言い換えると、関数型プログラミングは、 副作用が無く変数の値を変化させないコードを推奨する。

  • 関数型プログラミングは本当に難しいのか

    2012年9月初頭、東京・某所で開催された「函数プログラミングの集い 2012」というイベントに参加した。 このイベント、文字通り、「Haskell」や「Scala」「OCaml」「F#」「Erlang」といった関数型プログラミング言語に関するイベントなのだが、その午前中の講演を聞いて、筆者は少々面らった。 関数型プログラミング言語などの研究者である電気通信大学 准教授の中野圭介氏による講演だったのだが、同氏は講演が始まるや否や「これから『爆弾』を投下します」と前置きし、こう述べたのだ。 「『関数型言語』を使ってはいけない」と。 関数型プログラミングに関するイベントで、いきなり「使うな」という発言は、確かに衝撃的である。筆者だけかもしれないが、この発言の後、一瞬、会場が凍り付いたようにも見えた。一体、どういうことか。 実はこの発言、「使うな」という部分に重点があるのではなく、「関数型言語

    関数型プログラミングは本当に難しいのか
  • 正規表現を超える - あどけない話

    まずは、Audrey さんが言った Haskell の殺し文句を思い出して頂きたい。 正規表現ベースのパーサはメンテナンスしにくいのに気づいた? Parsec を使って 15分で Perl6 の完全なパーサを書く方法を勉強しましょう。 15分というのは誇張が入っていると思うが、正規表現が保守しにくく、Haskell の Parsec は強力で保守し易いのは事実だ。その理由を Perl と Haskell のコードを示しながら説明してみたいと思う。 Perl を愛する方に:この記事は Perl を攻撃するために書いたのではない。Perl を選んだのは、正規表現を広めた言語であり、僕がそれなりに Perl のコードを書けるためである。この記事の目的は、正規表現よりも関数型パーサー(Parsec)の方が優れていると示すことだ。 例題 この記事では例題として、IPv4 アドレスを解析する関数を書く

    正規表現を超える - あどけない話
  • IBM JavaScriptを作成するための関数型プログラミングの使用 - Japan

    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 JavaScriptを作成するための関数型プログラミングの使用 - Japan
  • 1
Лучший частный хостинг