タグ

2019年4月30日のブックマーク (7件)

  • JavaScript で関数型プログラミングをするの? - Qiita

    脳みそダンプ #01. 不変性 JavaScriptでは ある程度不変性を意識して書ける。具体的には Array や String の slice, concat, map, filter、 ...(スプレッドシンタクス)、Object.assign、あとJSON.stringify & JSON.parse(筋悪?)。ただ、どうしても冗長な書き方になるうえ、うっかりするとすぐにシャロ―コピーになってしまう。JavaScript で不変性を志向した書き方をするのは難しいといわざるを得ない。 解決策の方向性は二つある。生のArray, Objectのまま頑張る Ramda.js 方式と、類似の新たなデータ構造で頑張る Immutable.js 方式。Ramda 方式では、ライブラリとして、Array, Object に対するディープコピー機能を提供するだけでなく、レンズ機能を提供する。Ram

    JavaScript で関数型プログラミングをするの? - Qiita
    jsstudy
    jsstudy 2019/04/30
    #01.不変性 JavaScriptで不変性を志向した書き方をするのは難しい 解決策の方向性は二つある。Ramda.js方式とImmutable.js方式。Ramda 方式ではArray,Objectに対するディープコピー機能を提供するだけでなく、レンズ機能を提供する
  • Distributed Lens Architecture | Matrix AI

    jsstudy
    jsstudy 2019/04/30
    The name Lens comes from Benjamin Pierce's work on bidirectional transformations. The link gives a better, more detailed and rigorous explanation of lenses. http://www.cis.upenn.edu/~bcpierce/papers/lenses-etapsslides.pdf
  • https://kimiyuki.net/blog/2014/12/14/how-to-use-lens-a/

    jsstudy
    jsstudy 2019/04/30
    LensはGetterかつSetterであるものの中で最も制約が弱いもの、なにか上限のようなものだと分かる。つまりview,set,overなどはGetter,Setterのmethodだったということです。
  • Lensことはじめ - あどけない話

    見ろ! Haskell が OOPL のようだ! さてさて、ようやく重い腰を上げて、Lens を勉強し始めましたよ。Haksell for allを見て勉強すればいいのかなと思ったんですが、解説しているパッケージが data-lens なので古いですね。 今、使うべきなのは、lens というパッケージらしいです。解説は、この README を読むのが一番だそうです。この README と Haskell for all をにらめっこしながら、Lens の getter と setter の機能を使ってみます。 背景 Haskell の代数データ型にはフィールドラベルが定義できて、これがいわゆる getter と setter の役割を果たします。Haskell for all から例を引用してみましょう。 data Point = Point { x :: Double , y :: Do

    Lensことはじめ - あどけない話
    jsstudy
    jsstudy 2019/04/30
    Haskell の代数データ型にはフィールドラベルが定義できて、これがいわゆる getter と setter の役割を果たします。Lens を使う場合、フィールドラベルを "_" ではじめて makeLenses という呪文を唱えればいいようです。
  • lens

    This package comes "Batteries Included" with many useful lenses for the types commonly used from the Haskell Platform, and with tools for automatically generating lenses and isomorphisms for user-supplied data types. The combinators in Control.Lens provide a highly generic toolbox for composing families of getters, folds, isomorphisms, traversals, setters and lenses and their indexed variants. An

    jsstudy
    jsstudy 2019/04/30
    The combinators in Control.Lens provide a highly generic toolbox for composing families of getters, folds, isomorphisms, traversals, setters and lenses and their indexed variants.
  • JavaScriptで関数型プログラミング!Ramda.jsのはじめかた

    記事は、Yaphi Berhanu、Vildan Softic、Jani Hartikainen、Dan Princeが査読を担当しています。最高のコンテンツに仕上げるために尽力してくれたSitePointの査読担当者のみなさんに感謝します。 JavaScriptおもしろいのは、関数型言語としての側面です。JavaScriptの世界では関数は当初から第一級オブジェクトとして扱われてきました。それにより、さまざまな方法でエレガントで表現に富むコードを書くことができます。 しかし、単に関数型プログラミングの能力を持っているからといって、自動的に関数型プログラミングになるわけではありません。Ramda.jsは、JavaScriptを使って関数型プログラミングを始めるサポートをしてくれる人気のライブラリー です(GitHubで4000のスターを獲得しています)。 はじめに Ramda.jsを最

    JavaScriptで関数型プログラミング!Ramda.jsのはじめかた
    jsstudy
    jsstudy 2019/04/30
    lens関数は、オブジェクトまたは配列の特定のプロパティまたはインデックスからデータを取得したり変換することができます。getterやsetterではなく、対象のプロパティに「焦点をあてる」レンズのような関数を作れます。
  • 超強力な関数型プログラミング用ライブラリ Ramda.js を学ぼう #2 - lens でオブジェクト操作も思いのまま | Recruit Tech Blog

    超強力な関数型プログラミング用ライブラリ Ramda.js を学ぼう #2 - lens でオブジェクト操作も思いのまま wakamsha lens とは? 端的に言うと、 getter や setter を関数型プログラミング的に抽象化したものです。対象となるオブジェクトや配列の特定のプロパティやインデックスからデータを取得したり変換することが出来ます。と、これだけ聞くと何の凄さも伝わってきませんが、ネストの激しい複雑なデータ構造に対して不変性を保ちつつアクセスできるというのが一番の特徴として挙げられます。 元々は Haskell に lens というパッケージがあり、これを Ramda.js の API として実装したものだと思っていただければ OK です。 参考: lens: Lenses, Folds and Traversals 諸説ありますが、対象のプロパティに対し『レンズのよ

    超強力な関数型プログラミング用ライブラリ Ramda.js を学ぼう #2 - lens でオブジェクト操作も思いのまま | Recruit Tech Blog
    jsstudy
    jsstudy 2019/04/30
    lensとは?getterやsetterを関数型プログラミング的に抽象化したもの。ネストの激しい複雑なデータ構造に対して不変性を保ちつつアクセスできるというのが一番の特徴として挙げられます。HaskellのlensをRamda.jsのAPIとして実装