タグ

JavaScriptとFPに関するjsstudyのブックマーク (57)

  • anypicks.jp - anypicks リソースおよび情報

    anypicks.jp は、anypicksに関する情報用の最新かつ最適なソースです。一般的興味の問題に関連するトピックもここから検索できます。お探しの内容が見つかることを願っています!

    anypicks.jp - anypicks リソースおよび情報
    jsstudy
    jsstudy 2019/05/08
    手続型(命令型)だけでなく、関数型(宣言型)でも書きやすい言語が学習教材として良いかも。今どきの言語ならマルチパラダイム対応で関数型でも書けます。
  • Thinking in Ramda: Getting Started

  • JavaScript で体感する関数型プログラミング | PLAID engineer blog

    プレイドのエンジニア兼ハンターの @algas です。 Ramda.js の関数を例にして JavaScript による関数型プログラミングの考え方を紹介します。 記事では Ramda.js 自体を紹介するのではなく、より深い関数型プログラミングの考え方を学ぶきっかけを作れることを意図しています。 想定読者Node.js でアプリケーションを実装したことがある関数型プログラミングに興味があるJavaScript でなぜ関数型プログラミングが必要なのかJavaScript のモジュールの多くは Mutable で副作用の影響を受けやすい実装になっています。 副作用の影響を受けやすければ、そのモジュールを複数の場所で利用するのが難しくなります。 さらに関数などのインターフェースが適切でなかったり、意図したとおりに機能しなければ再利用するのが難しく冗長なコードが増えてしまうことになります。 冗

    JavaScript で体感する関数型プログラミング | PLAID engineer blog
    jsstudy
    jsstudy 2019/05/06
    Ramda.js の関数を例にして JavaScript による関数型プログラミングの考え方を紹介 Ramda.js を使うとどのように便利なのかについては、Thinking in Ramda のブログに良くまとめられています。
  • Ramda.jsのLensとは? - JavaScript勉強会

    JavaScript関数型プログラミング」を読んでいたら、意味がよく分からない用語が出てきたのでメモ。 jsstudy.hatenablog.com レンズ (p.48) レンズ(Lenses)と呼ばれる関数型のアプローチ レンズは、オブジェクトの変更を普遍的に一括管理する最良の選択肢です。 (純粋な)関数参照とも呼ばれるレンズは、状態を持つデータ型の属性を不変的にアクセスし操作できる関数型プログラミングのソリューションです。 レンズの内部的な動作はコピーオンライトに似ており、状態の管理と複製を適切に処理できる内部ストレージコンポーネントを利用しています。 しかし、レンズを自分で実装する必要はありません。 関数型JavaScriptライブラリRamdaの実装を利用できます。 JavaScriptでデータを可変ではなく不変で扱いたい場合、Ramda.jsという関数型ライブラリーのLensと

    Ramda.jsのLensとは? - JavaScript勉強会
    jsstudy
    jsstudy 2019/05/01
    JavaScriptで関数型プログラミングを行う場合、データを不変(immutable)にして扱いたい。その1つの方法として、Ramda.jsのLensという機能を使うと便利。Lensは元々Haskellのパッケージからアイデアから取ってきたものらしい。
  • 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に対するディープコピー機能を提供するだけでなく、レンズ機能を提供する
  • ASCII.jp - Web Professional(ウェブ・プロフェッショナル)|デザインからマーケティングまで、Webを仕事にする人の情報サイト

    WebPro KUSANAGI Security Editionが進化! 新機能「SafeUpgrade」でダウンタイムゼロのnginxアップデートを実現 KUSANAGI Security Editionが新機能「KUSANAGI SafeUpgrade」を導入し、nginxのメジャーバージョンアップを無停⽌で実施可能にする。 0 0 WebPro 高速CMS基盤「KUSANAGI Security Edition」がMicrosoft Azureに登場|自動アップデートで安全性を確保 プライム・ストラテジーが、新しいセキュリティ基盤「KUSANAGI Security Edition」をMicrosoft Azureで提供開始。セキュリティ向上と運用効率... 0 0 WebPro KUSANAGI 9、新たにOracle CloudにAlmaLinux OS 9を採用し、2032年ま

    ASCII.jp - Web Professional(ウェブ・プロフェッショナル)|デザインからマーケティングまで、Webを仕事にする人の情報サイト
    jsstudy
    jsstudy 2019/04/30
    lens関数は、オブジェクトまたは配列の特定のプロパティまたはインデックスからデータを取得したり変換することができます。getterやsetterではなく、対象のプロパティに「焦点をあてる」レンズのような関数を作れます。
  • 超強力な関数型プログラミング用ライブラリ Ramda.js を学ぼう #2 - lens でオブジェクト操作も思いのまま | リクルート テックブログ

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

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

    30分でわかるJavaScriptプログラマのためのモナド入門 岡部 健 / Ken Okabe <kentutorialbook@gmail.com> Table of Contents 1. モナドが難しい? 1.1. モナドを理解するのが難しい理由 2. JavaScriptプログラマのためのモナド入門 2.1. 対象とする読者 2.2. 稿のアプローチ 3. なぜモナドか? 3.1. jQuery 3.2. MonadicReact 3.3. Promise 3.4. Fluture 3.5. まとめ 4. モナド(Monad)とは何か? 4.1. Array.map 4.2. Array.mapと関数型プログラミングの限界 4.3. Array.flat の登場 4.4. unit の定義 4.5. unit と Array.flat の対称性 4.6. モナド(Monad)

    技術ブログ: 30分でわかるJavaScriptプログラマのためのモナド入門
    jsstudy
    jsstudy 2019/03/27
    GitHubに転載 はてなブックマーク - 30分でわかるJavaScriptプログラマのためのモナド入門 http://b.hatena.ne.jp/entry/s/kentutorialbook.github.io/30minLearningJavaScriptMonad/ 内容を批判する人は正解もセットで示すべき(マクドナルド理論)
  • 30分でわかるJavaScriptプログラマのためのモナド入門

    「30分でわかる」のは、だいたい、 4. モナド(Monad)とは何か? の読了までを想定しています。 また速い人なら、30分で全部一気に読み通せる分量でもあると思います。 30分以上かかっても一気読みしてしまうことが推奨されますし、一気読みできるように、前に戻って知識の再確認をしなくて済むように、最大限留意して構成を設計した上で執筆されています。 数学と用語問題。モナドの理論的基盤として圏論があるのは事実。理論的基盤がしっかりしているのはプログラミングという数学的作業において歓迎すべきことではある一方で、他方そのため一般的なプログラマにとってはまず用語に馴染みがない。歴史的に、圏論ベースのモナドを理論から関数型プログラミングに応用されていく過程では、実際、先駆者の間でさえ紆余曲折があったのだが、学習者へは馴染みのない用語を伴って、いきなり高度な数学的概念全開で天下り的に提示されてしまうこ

    jsstudy
    jsstudy 2019/03/27
    Blogspotから作成 はてなブックマーク - 技術ブログ: 30分でわかるJavaScriptプログラマのためのモナド入門 http://b.hatena.ne.jp/entry/kentechdoc.blogspot.com/2018/12/30javascript_4.html 内容を批判する人は正解も示すべき(マクドナルド理論)
  • 岡部 健 (Ken Okabe)

    情報技術者・開発者・Geek.

    岡部 健 (Ken Okabe)
  • 私と型システムとポエム

    最近巷では俄に型システムについての言及が増え、型システムポエマーが増えてる気がするので自分もその時流に乗りたい。 完全にポエムだけどなんかあったら随時指摘ください。直します。 TL;DR 言いたいことはまとめると次 型システムは程度問題なのでちょうどいいところを探すべき 型は万能でも強さが正義でもない(だから未だに研究されてる) よく知りもしないくせに計算機科学を侮辱するのはやめろ 予防線 あくまでポエムですので中身はないです 私は型理論専攻で学位はとったものの研究者ではないのであまり信用しすぎないように 型システムの過去 型システムは大まかに次のような利点があるとされてきた(個人的主観) 「異常」なプログラムを検出する仕組み 静的解析による分かりやすいエラーメッセージ 型そのもののドキュメント性 IDEでのcompletionに貢献 最適化に貢献 (数学に正しく裏打ちされたsemanti

    jsstudy
    jsstudy 2018/12/05
    Bucklescriptもそうですが、Facebookの Reason とか、最近はフロントエンドでOCamlが熱いようです。
  • JavaScriptにSchemeを実装する - Qiita

    この記事は完成していません 更にコードに誤りがあったりして修正されていなかったりするので、一度整理されるまで落とすかもしれません この記事の内容 プログラマが美しい言語を求めて最終的にたどり着く言語、LISP。 プログラミング言語を作るということは、難しいと思われがちですが、実際のところ読み取った文字列を解釈するプログラムを作成するだけで独自の言語を作ることができます。 ただし、プログラミング言語として利便性を実用レベルまで持っていくのは通常、容易ではありません。しかし、Schemeであれば比較的実装が簡単かつ高度な言語を作ることができます。 Schemeはシンプルさとパワフルさの両方を兼ね備えたLISP方言の言語であり、ミニマルな仕様から世界で最も実装される言語です。今回はそんなSchemeをJavaScriptに実装します! 最終的な目標は、ブラウザにCUIを表示して対話形式でSche

    JavaScriptにSchemeを実装する - Qiita
    jsstudy
    jsstudy 2018/11/09
    JSは素でも関数型プログラミングができるね
  • 東京ラビットハウス

    皆様ごきげんよう。東京ラビットハウスのえるきちと言います。Modern JavaScriptというモダン (現代的) な JavaScriptを書くための知見を一通りまとめたガチな技術書典2で頒布しました。とても密度の濃いイベントでとても良かったです。来てくれた方、買っていってくれた方、運営の方、声を掛けてくれた方、参加者のみなさま、どうもありがとうございました。 感想・制作秘話・当日の様子などをまとめました。あなたもぜひ技術書典3でサークル参加してみてください。絶対に楽しいです。 最後に告知事項があります。 制作秘話 東京ラビットハウスでは過去にElectronを初回の技術書典に委託で参加しました。冬コミも同様です。今回の技術書典2は単独のサークルとしての初参加になります。 制作のモチベーション じつは申し込み時点に予定していたのは、チートで楽々エンジニアリングみたいな感じのでし

    jsstudy
    jsstudy 2018/10/03
    "現状でJavaScriptの情報を調べたとき、未だに高確率でvarを使ってる事例を見かけてしまいますが var は、今の時代には letやconstに置き換えるべきです。" → (参照透過性の明示として)関数型で書くならconst一択?
  • リアクティブシステムが注目を集める理由 | メニーコア時代のパラダイム リアクティブシステムを知ろう | Think IT(シンクイット)

    Linuxカーネルにローカル権限昇格脆弱性「Dirty Frag」 ─ PoC公開、各ディストリビューションが対応進める 5月9日 22:51

    リアクティブシステムが注目を集める理由 | メニーコア時代のパラダイム リアクティブシステムを知ろう | Think IT(シンクイット)
  • リアクティブプログラミングとは何だったのか - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? ※この記事はずいぶん内容がわかりづらかったようで、さまざまな反応を頂きました。追記が複数ありますので、併せてご覧ください。 TL;DR Version: リアクティブプログラミングに挑戦しようとした。がっかりした。 はじめに 私のこの記事は「【翻訳】あなたが求めていたリアクティブプログラミング入門」に触発されて?書かれたもので、そちらの元ネタの記事に先に目を通しておいたほうが理解がしやすいと思います。そちらの記事は当に解説がわかりやすく、そして何よりとても説明が具体的なので、リアクティブプログラミングについて知りたいかたには大変おすす

    リアクティブプログラミングとは何だったのか - Qiita
  • リアクティブプログラミングへの理解がイマイチだったのでまとめてみた - UUUMエンジニアブログ

    こんにちは、タナカです。 ここ数年で、リアクティブプログラミングというキーワードをよく目にするようになりました。 僕も記事を読んだり、FRPのライブラリをいろいろ試したりはしているのですが、リアクティブプログラミング自体への理解がイマイチな状態でした。 日は勉強会で発表するといういい機会がありましたので、今回リアクティブプログラミングについてまとめてみました。(内容等に間違えがあればご指摘いただけると助かります・・・。) リアクティブプログラミングについて wikipediaでは以下のように説明されています。 値の変更を伝播させるデータフロー指向のプログラミングパラダイム 値の関係性を記述してプログラミングする これらについて実際の例を使って説明していきたいと思います。 リアクティブプログラミングの例 リアクティブプログラミングを説明するのにExcelの例がよく利用されます。 こちらの例

    リアクティブプログラミングへの理解がイマイチだったのでまとめてみた - UUUMエンジニアブログ
  • Reason(ML) で簡単な Android アプリを作ってみた - あと味

    Reason は JSX をサポートしているので、React 関連バインディングが充実している。 bs-react-native という React Native のバインディングもあって、これを使って簡単な Android アプリを作ってみた。 github.com 作ったアプリは入力した英語の文章に含まれる各単語が、Ogden's Basic English の制限語彙の単語であるかどうかをバリデーションして、制限語彙外の単語が赤くハイライトされるもの。 Basic English とは、850単語ですべての事象を英語で説明できることを目的としたシステムで、英語が主言語ではない外国の人(日人など)が、英語が主言語な人、またはそうでない人たちと、英語を介してコミュニケーションを取れるようにするために生まれたシステム。ただ、類似のシステムと比べて、Basic English は流行らずに

    Reason(ML) で簡単な Android アプリを作ってみた - あと味
    jsstudy
    jsstudy 2018/09/02
    "今のところは Elm の方が記事等を目にする機会が多いけど、バックに Bloomberg と Facebook がいるという点も安心感があるので、自分は Reason に投資していこうと思う。"
  • Reason 使った感想 on Windows - Qiita

    Reason 面白そうだったので、ちょっと触った感想を残す。 まとまってなかったり、情報が古かったりする可能性もあるので注意下さい。 1. BuckleScript Reason を知る前に、まずは BuckleScript を知る必要があった。 What & Why - Intro - BuckleScript Concepts Overview - Intro - BuckleScript BuckleScript は、OCaml Compiler の為の新しい Backend ( 中間形式からコードを生成する部分 ) で、OCaml ( or Reason ) を受け取って、Javascript を生成する。 OCaml と Javascript のスムーズな統合 を志向しており、相互運用性を高めるためのアイデアが各所に散りばめられている。 Readable な Javascript

    Reason 使った感想 on Windows - Qiita
  • https://bucklescript.github.io/ja/

    jsstudy
    jsstudy 2018/09/02
    Facebookで開発されているAltJS。OCaml→JS Write safer and simpler code in OCaml & Reason, compile to JavaScript.
  • Reason · Reason lets you write simple, fast and quality type safe code while leveraging both the JavaScript & OCaml ecosystems.

    Hello! This particular page hash has moved to . Please update the URLs to reflect it. Thanks! type schoolPerson = | Teacher | Director | Student(string); let greeting = person => switch (person) { | Teacher => "Hey Professor!" | Director => "Hello Director." | Student("Richard") => "Still here Ricky?" | Student(anyOtherName) => "Hey, " ++ anyOtherName ++ "." }; type schoolPerson = Teacher | Direct

    jsstudy
    jsstudy 2018/09/02
    Reason を使うと、JavaScript & OCaml の両方のエコシステムを活用しながら、単純、高速かつ高品質な型安全コードを書くことができます。