タグ

FunctionalProgrammingに関するscrewboundのブックマーク (123)

  • Reactive Porn - steps to phantasien

    Rebuild.fm に出させてもらいました。ありがたいことです。 さっそく録音を聞き直す。自分の声を聞くのは辛い・・・のはさておき、 リアクティブプログラミングの話は我ながら主張がよくわからない。 反省のため何が言いたかったのかを考え直したい。 たぶん趣旨は二つあった: A. RxJava や RxAndroid はなかなかいいやつだ。 B. リアクティブプログラミングは一つのはっきりした概念ではない。 A については試してもらえばわかるはず。ReactiveX のサイトからぽつぽつ資料を読めば済む。ここでは B を補足してみる。 X 指向は Y みたいなもの リアクティブプログラミングとは何だろう。どうもつかみどころがない。私は腑に落ちるまでけっこう時間がかかった。 このわかりにくさには大きく二つ理由があると思う。一つはプログラミングの概念をコードなしに説明する一般的な難しさ。オブジェ

  • 書籍編集局ブログ|Ohmsha

    2月15日(木)に開催された「Developers Summit 2018(デブサミ)」(主催:翔泳社)にて「ITエンジニアに読んでほしい! 技術書・ビジネス書大賞2018」のプレゼン大会と投票が行われ、大関真之先生の著書『機械学習入門 ボルツマン機械学習から深層学習まで』がみごと技術書部門の大賞の栄冠に輝きました! プレゼン大会では大関先生自ら書に関する熱い熱い思いを披露していただました。このプレゼンによって「読んでみたい!」「数式が苦手だけどこのなら読める!」と惹きつけられるオーディエンスが続出!みごと大賞に選ばれることとなりました。ブラボー! 書は、おとぎ話の白雪姫に登場するお妃様と鏡の関係をなぞらえ、その問答により「機械学習とは何か」「何ができるのか」を楽しいストーリーと可愛らしくしかも的確なイラスト、そして数式をまったく用いることなく解説している画期的な内容です。 登場する

    書籍編集局ブログ|Ohmsha
  • USトップ大学でも関数型プログラミングが余り教えられていない現実 | POSTD

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

    USトップ大学でも関数型プログラミングが余り教えられていない現実 | POSTD
  • 数理科学的バグ撲滅方法論のすすめ 第4回 関数型言語とオブジェクト指向,およびOCamlの"O"について

    関数型言語とオブジェクト指向は相容れない,という説をよく聞く。たしかに「オブジェクトは状態を持つ」「関数型プログラミングでは,できるだけ破壊的代入を行わない」とすれば,二つの概念は矛盾しているようにも思われる。また,技術的観点以外にも,「とかくシンプルさを好む多くの関数型言語プログラマが,何かと物事を複雑にする(と思われている)オブジェクト指向を嫌っている」という面があるかもしれない。 しかし,個人の好き嫌いはさておき,実際問題として,関数型言語とオブジェクト指向は大いに関係がある。むしろ,基礎理論については,ほとんど同じコミュニティの人たちが取り組んでいる,と言ってもいい。例えば,以下のような研究が,1980年代から現在に至るまで行われている。 関数型言語のモデルであるλ計算という体系において,オブジェクトを表現する研究(参考リンクなど) λ計算にならい,(プロトタイプベースの)オブジェ

    数理科学的バグ撲滅方法論のすすめ 第4回 関数型言語とオブジェクト指向,およびOCamlの"O"について
  • Scala の implicit parameter は型クラスの一種とはどういうことなのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    なんか型クラスとか言うと型の怖いひとたちが怖い話をワイワイしてるイメージがありますよね。わたしはあります。「で、それって何がうれしいのよ」とか、そういう話はあまりされていないような印象がありますね(あくまで印象です)。その上 "Scala の implicit parameter は型クラスの一種" とか言われると「暗黙的な引数がなんで型クラスの一種なんや!!!意味がわからん!!!!」となります。わたしはなりました。 というわけでそのへんについて勉強したので書きます。 そもそも型クラスってなんや Haskellとかにあるやつですね。アドホック多相を実現するもの、らしいです。すごい、いきなり意味がわからない。 というわけで、まずは「アドホック多相ってなんなの」という話からして行きます。 さて、まずは「多相」から行きましょう。この文脈で言う多相とは、簡単に言えば「引数にいろんな型を取れる」とい

    Scala の implicit parameter は型クラスの一種とはどういうことなのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • Is it possible to implement every piece of software using functional programming (FP)? If I wanted to write a software for an actual libr...

  • 【翻訳】あなたが求めていたリアクティブプログラミング入門 - ninjinkun's diary

    original: The introduction to Reactive Programming you've been missing (by @andrestaltz) (translated by @ninjinkun, reviewed by @ma0e) あなたはリアクティブプログラミングと呼ばれる新しい方法が気になっている。 勉強するのは大変で、良い教材がないのでさらに難しい。私が勉強を始めたときは、まずチュートリアルを探した。見つけたのは一握りの実践的なガイドだけ、しかもそれらは表面をなぞっているだけで、リアクティブプログラミングのアーキテクチャ全体像を構築しようとしてはいなかった。ある関数を理解するのに、ライブラリのドキュメントは役に立たないことがある。 これを見て欲しい。 Rx.Observable.prototype.flatMapLatest(selector,

    【翻訳】あなたが求めていたリアクティブプログラミング入門 - ninjinkun's diary
  • モナド教

    前提知識:モナド モナドを理解せずともモナド教を信ずることは出来ますが,理解していればより深く納得できるでしょう. 操作 :: 型 -> 型 は,"型"から"型"へ写す"操作"の存在を表します. モナドの文脈 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 を持つ操作は,一般

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

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

  • オブジェクト指向だけじゃない開発宣言 - uehaj's blog

    Manifesto for Not Only Object-Oriented Development、オブジェクト指向だけじゃない開発宣言、というのが出てましたのでごにょと訳してみました*1。 オブジェクト指向だけじゃない開発宣言 私たちは、ソフトウェア開発の実践 あるいは実践を手助けをする活動を通じて、 よりよい開発方法を見つけだそうとしている。 この活動を通して、私たちは以下の価値に至った。 クラスよりも、関数と型を、 可変性よりも、純粋性を、 継承よりも、コンポジションを、 メソッドディスパッチよりも、高階関数を、 nullよりも、Optionを、 価値とする。すなわち、左記のことがらに価値があることを認めながらも(但しnullは除くが)、私たちは右記のことがらにより価値をおく。 内容は、「今どきのオブジェクト指向開発宣言」と名乗ってもあんまり違和感ないっす。 ただし、null、おめ

    オブジェクト指向だけじゃない開発宣言 - uehaj's blog
  • 関数型言語を使ったドメイン駆動設計

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    関数型言語を使ったドメイン駆動設計
  • オブジェクト指向設計の原則と関数型プログラミング

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    オブジェクト指向設計の原則と関数型プログラミング
  • 「関数型Ruby」という病(6) - 関数合成と文脈、Proc#liftとProc#>=、そしてモナ - ( ꒪⌓꒪) ゆるよろ日記

    前回から一年以上が経過しているけど、最近lambda_driver.gemに機能を追加したので、そのことについて書こうと思う。 Rubyで、モナ……っぽい関数合成を実装した話だ。 Rubyで関数合成とかしたいので lambda_driver.gem というのを作った - ( ꒪⌓꒪) ゆるよろ日記 関数合成 関数合成については以前に書いたので、こちらを見て欲しい。 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記 おさらいをしておくと、関数合成とは、 関数gと関数fから、g(f(x))という関数hを新たに作り出すことだ。 (g ∘ f)(x) = g(f(x)) 関数gと関数fの合成関数g ∘ fに引数xを渡した結果は、関数gにf(x)の結果を渡したものと等しい。つまり、このような操作である。 f = lambda{|x| x + 1

    「関数型Ruby」という病(6) - 関数合成と文脈、Proc#liftとProc#>=、そしてモナ - ( ꒪⌓꒪) ゆるよろ日記
  • Island Life - 関数型料理

    About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ

    Island Life - 関数型料理
  • GitHub - kazu-yamamoto/recursion-drill: Drill to study recursive programming in Haskell

    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

    GitHub - kazu-yamamoto/recursion-drill: Drill to study recursive programming in Haskell
  • JavaScriptで学ぶ関数型プログラミング

    書はJavaScriptを使って関数型プログラミングを学ぶ書籍です。関数型言語としてJavaScriptを理解し、使用することにより、コードがより洗練され、美しく、そして読みやすいものになることを目的としています。JavaScriptビルトインのデータ型を上手に利用するための基知識やJavaScriptにおける関数の持つ特性など、関数型プログラミングの技術とその考え方について解説します。また実際のJavaScriptコーディングに関数型プログラミングのエッセンスを加えるポイントをサンプルを使って丁寧に説明します。関数型プログラミングに精通した著者が書き下ろした書はテクニックを増やし、コーディングのイマジネーションを広げたいエンジニア必携の一冊です。 Jeremy Ashkenasによるまえがき Steve Vinoskiによるまえがき 訳者まえがき はじめに 1章 関数型JavaSc

    JavaScriptで学ぶ関数型プログラミング
  • プログラミング言語Frege(フレーゲ)を紹介します - uehaj's blog

    これはマイナー言語 Advent Calendar 2013の21日目の記事です。 Frege(フレーゲ*1 )を紹介します。 Fregeは、Java VM上で動作するHaskell風の言語です。以下のような特徴を持っています。 純関数型言語 非正格評価(いわゆる遅延評価) Hindley-Milner型推論に基づく静的型言語 これらの特徴は、Haskellと共通するものであり、構文も基的なところについてはHaskellとだいたい同じか似ているかもしくはサブセットです。標準関数やデータ型やモジュールについても、Haskell 2010からたくさん引っぱってきているそうです。 しかしながら、Fregeはその目標において、Haskellとの完全な互換性を達成しようとはしていません。実際かなり違っています。特にJava VM上で有用であることに重点が置かれており、プリミティブ型はJavaのもの

  • 絶対に理解出来ないモナドチュートリアル - konn-san.com

    世の中には、恐しい数のモナドチュートリアルがあって、それぞれモナドは象だとか、いや接ぎ木だ とか、プログラマブル・コンテナだとか、プログラム可能なセミコロンだとか、色々な説明がなされている。「モナド チュートリアル」で検索すれば、他にも色々に絵解きされた有象無象のモナドが大量に引っ掛かる。そうそう、モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?なんてのもあったな。 この記事の目的は別に、こうした既存のモナドチュートリアルを「間違ってる!」とか「わかるわけねーよ!」といって貶そうという訳ではない。実際、既に幾多書かれているチュートリアルの中でも、僕の云いたいことと殆んど同じようなことが書かれているものは沢山ある。 では、上の膨大なリストの末尾にまた一つ「わかりやすい比喩」を付け足そうというのか?というとそういう訳でもない。そうそう、モナドは比喩ではないというチュートリアル

  • 注目を集めるリアクティブプログラミング

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    注目を集めるリアクティブプログラミング
  • 関数を扱えるだけでは、モナドを表現するには不十分過ぎる - xuwei-k's blog

    つまりなぜかいきなり高階型の話です。 これ 関数を扱えることはどのようにプログラミング言語の能力をあげるか に対する便乗というかツッコミとして。 つい先日もある人がこんなこと https://twitter.com/koropicot/status/365014333413011457 を言っていて*1、「ですよねー」と勝手に納得していたりしましたが。 つまりScalazでよくみるような高階型 trait Monad[F[_]] extends Applicative[F] { implicit val listMonad = new Monad[List]{ がないと、モナドとして抽象化や共通化ができない、という話です。*2 高階型についてはたとえばこれ (もりそば)Scalaによる高階型変数 - Higher-kind Generics とか読んでください。 関数がオブジェクトとして扱

    関数を扱えるだけでは、モナドを表現するには不十分過ぎる - xuwei-k's blog