タグ

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

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

    This webpage was generated by the domain owner using Sedo Domain Parking. Disclaimer: Sedo maintains no relationship with third party advertisers. Reference to any specific service or trade mark is not controlled by Sedo nor does it constitute or imply its association, endorsement or recommendation.

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

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

    Ramda.jsの関数を例にしてJavaScriptによる関数型プログラミングの考え方を紹介します

    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

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 脳みそダンプ #01. 不変性 JavaScriptでは ある程度不変性を意識して書ける。具体的には Array や String の slice, concat, map, filter、 ...(スプレッドシンタクス)、Object.assign、あとJSON.stringify & JSON.parse(筋悪?)。ただ、どうしても冗長な書き方になるうえ、うっかりするとすぐにシャロ―コピーになってしまう。JavaScript で不変性を志向した書き方をするのは難しいといわざるを得ない。 解決策の方向性は二つある。生のArray, O

    JavaScript で関数型プログラミングをするの? - Qiita
    jsstudy
    jsstudy 2019/04/30
    #01.不変性 JavaScriptで不変性を志向した書き方をするのは難しい 解決策の方向性は二つある。Ramda.js方式とImmutable.js方式。Ramda 方式ではArray,Objectに対するディープコピー機能を提供するだけでなく、レンズ機能を提供する
  • 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として実装
  • 技術ブログ: 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一択?
  • リアクティブシステムが注目を集める理由

    第1回となる今回は、「リアクティブシステム」が登場した背景や注目を集めている理由などの概略を紹介します。 リアクティブシステムとは何か? ここ最近、「リアクティブ」という言葉を耳にしたり、SNS上で目にしたりという機会が増えたのではないでしょうか? リアクティブは、目まぐるしく進化するソフトウェア構築技術の中で、次世代ソフトウェア構築のためのベースとなる技術の一つとして注目されています。しかし、ひとくちにリアクティブといっても、単にリアクティブと言ってみたり、リアクティブプログラミング、React.js、リアクティブストリームなど様々で、リアクティブの明確な定義が存在せず、その捉え方もまた様々です。そこで連載では「リアクティブシステム」にフォーカスして、「リアクティブシステム」とは何なのか、どうやって作るのか、「リアクティブシステム」によって誰がどんなふうに幸せになれるのかを紹介していき

    リアクティブシステムが注目を集める理由
  • リアクティブプログラミングとは何だったのか - 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 の両方のエコシステムを活用しながら、単純、高速かつ高品質な型安全コードを書くことができます。