タグ

FPに関するjsstudyのブックマーク (133)

  • JavaScriptにSchemeを実装する - Qiita

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

    JavaScriptにSchemeを実装する - Qiita
    jsstudy
    jsstudy 2018/11/09
    JSは素でも関数型プログラミングができるね
  • ハッカーと画家 - JavaScript勉強会

    最近、「関数型プログラミングを学ぶ場合、教材は何がいいのか?」と考えてました。 検討する中で、Lispを推奨していたポール・グレアム氏の「ハッカーと画家」というを思い出しました。 ハッカーと画家 コンピュータ時代の創造者たち 作者: ポールグレアム,Paul Graham,川合史朗 出版社/メーカー: オーム社 発売日: 2005/01/01 メディア: 単行 購入: 109人 クリック: 4,884回 この商品を含むブログ (582件) を見る 以前読んだときは、あまりピンと来なかったけど、改めて読み直してみると、結構いいこと書いてあったんだな!と印象が変わりましたw 関数型プログラミングを学ぶときのモチベーションアップのために、書を参考にしてみたいと思います。 英語原文と日語訳 「ハッカーと画家」は、英語の原文がネットで公開されてました。 日語訳も一部が公開されてました。

    ハッカーと画家 - JavaScript勉強会
    jsstudy
    jsstudy 2018/11/09
    Yコンビネーターの創設者、ポール・グレアム氏のエッセイ。Lispのメリットを説明。関数型プログラミングに対する好奇心を高めて、学習のモチベーションとなる?
  • 東京ラビットハウス

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

    jsstudy
    jsstudy 2018/10/03
    "現状でJavaScriptの情報を調べたとき、未だに高確率でvarを使ってる事例を見かけてしまいますが var は、今の時代には letやconstに置き換えるべきです。" → (参照透過性の明示として)関数型で書くならconst一択?
  • あなたは、”プロ・アクティブ”それとも”リ・アクティブ”?

    Tweet Tweet 世の中には自分から考えて行動を起こす人と、 他人に言われたり、何か物事が差し迫ってきて 行動を起こすタイプの人がいる。 前者をプロ・アクティブ 後者をリ・アクティブと言う。 (リ・アクションとか言うでしょ) 例えば、、 プロ・アクティブな人は、自分で何かを企画して 自分で段取りを組んで、自分で物事を起こす。 仕事にしてみれば、自分から学習し、 自分からキャンペーンなどの企画を考える。 あるいは新しい商品などの企画を考える。 考えるだけなら実は誰にでもできるんだが、 プロ・アクティブな人はここから実際に行動を起こす。 行動を起こしていろいろな問題にぶつかる。 いろいろな問題にぶつかってそれらを解決していく。 遊びにしてみてもそう。プロ・アクティブな人は、 自分から遊びの企画を考えその場所なり準備なりを自分でして、 そして友達を呼んで遊びに行く。 これも同じことで例えば

    jsstudy
    jsstudy 2018/09/28
    世の中には自分から考えて行動を起こす人と、 他人に言われたり、何か物事が差し迫ってきて 行動を起こすタイプの人がいる。 前者をプロ・アクティブ 後者をリ・アクティブと言う。 (リ・アクションとか言うでしょ)
  • reactiveの意味・使い方 - 英和辞典 Weblio辞書

    音節re・ac・tive 発音記号・読み方/riˈæktɪv(米国英語), ri:ˈæktɪv(英国英語)/

    jsstudy
    jsstudy 2018/09/28
    reactiveとは 主な意味「反応的な」 ←→ proactive 率先した、順向性の(前向きな、積極的な)
  • リアクティブシステムが注目を集める理由

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

    リアクティブシステムが注目を集める理由
  • リアクティブプログラミングとは何だったのか - Qiita

    ※この記事はずいぶん内容がわかりづらかったようで、さまざまな反応を頂きました。追記が複数ありますので、併せてご覧ください。 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 に投資していこうと思う。"
  • ReasonML の環境構築 (3.0.4 対応) - Qiita

    基礎知識 Reason は独立した一つの言語ではありません。 OCaml の文法のスキンです。文法以外はすべて OCaml を使うと考えていいです。 Reason は BuckleScript というツールを使って JavaScript のコードを生成します。 BuckleScript は OCaml -> JavaScriptトランスパイラです (頻出する bs という単語は BuckleScript の略です) 。 Reason を使うには BuckleScript の詳細も (そのうち) 知る必要があります。 OCaml を学ぶ必要はあるかというと、すぐに知る必要が出てきます。文法に関してはしばらくの間は気にしなくてもいいと思いますが、何せ中身は完全に OCaml です。 Reason の標準ライブラリは OCaml のそれですし、サードパーティーのライブラリは OCaml で実

    ReasonML の環境構築 (3.0.4 対応) - Qiita
  • 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
  • OCaml風にJavaScriptを書けるReasonML - JavaScript勉強会

    FacebookがOCaml風にJavaScriptを書ける「ReasonML」というAltJSを作っていました。 ReasonML - Google 検索 reasonml.github.io qiita.com OCamlは、関数型プログラミング言語の1つです。 OCaml - Wikipedia OCaml(オーキャムル、オーキャメル)は、フランスの INRIA が開発したプログラミング言語MLの方言とその実装である。 MLの各要素に加え、オブジェクト指向的要素の追加が特長である。 最近、関数型プログラミングの勉強でOCamlのを読んだのですが、実際に使う機会はあまりなさそうだと思ってました。 プログラミングの基礎 (Computer Science Library) 作者: 浅井健一 出版社/メーカー: サイエンス社 発売日: 2007/03/01 メディア: 単行 購入: 1

    OCaml風にJavaScriptを書けるReasonML - JavaScript勉強会
    jsstudy
    jsstudy 2018/09/02
    ReasonML → OCamlに変換 → BuckleScriptでJSに変換 ReasonReactでWebアプリ制作に使える OCamlの応用として使ってみたい!?
  • 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 を使うと、JavaScript & OCaml の両方のエコシステムを活用しながら、単純、高速かつ高品質な型安全コードを書くことができます。

    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 の両方のエコシステムを活用しながら、単純、高速かつ高品質な型安全コードを書くことができます。
  • オブジェクト指向の呪いと、その避け方 - mizchi's blog

    このテーマで書く前に、まず、最初に自分に多少の偏りがあることを認めておかなくてはなりません。 オブジェクト指向より、関数指向寄り オブジェクト指向のアプローチは有用だが、ただしそれを実現する手段はクラスと継承ではない。 階層化されたツリー構造(GUI/リレーショナルな参照構造)に埋め込まれる状態はコード品質を悪化させるので、できるだけ出現するべきではない。 ただし、状態は確実に存在する。だからこそ慎重に扱うべきだ、という派閥です アンチパターン: 特に理由もないクラスメソッドへの所属 何かのバリデータを実装したいとします。 その関数がどこに所属するかについて、よく見るこれらの実装は全部アンチパターンといっていいと思います export class Validator { static validate() {...} } export class Validator { validate(

    オブジェクト指向の呪いと、その避け方 - mizchi's blog
    jsstudy
    jsstudy 2018/09/02
    アンチパターン: クラスと継承 現代では、継承は基本的に使うべきではない。「継承よりコンポジション」。それでもやらないといけないとしたら、ストラテジーパターンを想定したライブラリから、一回だけ、です。
  • 関数型プログラミングを追う日々 - JavaScript勉強会

    最近、関数型プログラミングの基礎知識を学ぶことに時間を割いています。 きっかけは、「関数型プログラミングの基礎 JavaScriptを使って学ぶ」というでした。 jsstudy.hatenablog.com Haskellに寄り道 「関数型プログラミングの基礎」を読んでいると、ちょいちょい「Haskell」の話が出てきます。 以前、話題になってたのでHaskellのを読んでみましたが、そのときはあまりよく分かりませんでした。(使う場面もなかったですw) 改めて、「Haskellって何だったんだろう?」と思って読み返してみると、「なるほど、そういうことだったのか~」と新たな気付きが得られました。 自分のスキル不足のため、Haskellで実用的なアプリを作る機会はないだろうけど、それでもHaskellは良くできたパズルみたいなかんじで、ちょっとしたコードを書いて練習してみるだけでも楽しめま

    関数型プログラミングを追う日々 - JavaScript勉強会
    jsstudy
    jsstudy 2017/09/06
    関数型プログラミングの作法を学ぶためにHaskellに寄り道。「JavaScript Ninja」→JavaScriptを使いこなすためには「関数」の使い方が重要、とのこと。
  • JavaScript ES2015の「末尾再帰」最適化 - JavaScript勉強会

    JavaScriptの勉強で、ES2015の「アロー関数」を使う必要が出ました。 Visual Stuidio Code+Node.jsでES2015のJavaScriptコードを動かしていますが、ブラウザーでES2015はもうちゃんと動くのでしょうか? Google Chromeなど、ブラウザーのES2015対応状況を調べてみました。 最新のモダンブラウザーは、ほぼES2015に対応してましたが、「末尾再帰の最適化」という機能だけ未対応のブラウザーが多かったです。(2017年8月現在) ECMAScript6(ES6、ES2015)のブラウザー対応一覧表 末尾再帰とは? 末尾再帰の最適化 末尾再帰の解説記事 関数型プログラミング まとめ ECMAScript6(ES6、ES2015)のブラウザー対応一覧表 各ブラウザーのES2015対応状況が一覧表になってました。 ECMAScript

    JavaScript ES2015の「末尾再帰」最適化 - JavaScript勉強会
    jsstudy
    jsstudy 2017/08/19
    モダンブラウザーのES2015対応状況→ほとんどOKだけど「末尾再帰」最適化(TCO)だけ対応が遅れている。(対応してたのはSafariだけ) TCOが必要なければ、ES2015はトランスパイルせずにそのままブラウザーで動かしてもOK?
  • ECMAScript 2015 Language Specification – ECMA-262 6th Edition

    Standard ECMA-262 6th Edition / June 2015 ECMAScript® 2015 Language Specification This is the HTML rendering of ECMA-262 6th Edition, The ECMAScript 2015 Language Specification. The PDF rendering of this document is located at http://www.ecma-international.org/ecma-262/6.0/ECMA-262.pdf. The PDF version is the definitive specification. Any discrepancies between this HTML version and the PDF version

    jsstudy
    jsstudy 2017/08/17
    末尾再帰
  • Tail call optimization in ECMAScript 6

    Update 2018-05-09: Even though tail call optimization is part of the language specification, it isn’t supported by many engines and that may never change. The ideas are still interesting, however and explained in this blog post. ECMAScript 6 offers tail call optimization, where you can make some function calls without growing the call stack. This blog post explains how that works and what benefits

    jsstudy
    jsstudy 2017/08/17
    末尾再帰
  • All About Recursion, PTC, TCO and STC in JavaScript

    All About Recursion, PTC, TCO and STC in JavaScript 8th of May, 2017 — Lucas Fernandes da Costa at Florianópolis, Brazil 🇧🇷 Recently everyone seems to be really excited about functional programming and its concepts. However, many people don’t talk about recursion and, especially, about proper tail calls, which is really important when it comes to writing clean and concise code without exploding

    jsstudy
    jsstudy 2017/08/17
    末尾再帰