タグ

2019年9月23日のブックマーク (11件)

  • A Neighborhood of Infinity: Monads, Vector Spaces and Quantum Mechanics pt. II

  • A Touch of Topological Quantum Computation in Haskell Pt. I - Hey There Buddo!

    Quantum computing exploits the massive vector spaces nature uses to describe quantum phenomenon. The evolution of a quantum system is described by the application of matrices on a vector describing the quantum state of the system. The vector has one entry for every possible state of the system, so the number of entries can get very, very large. Every time you add a new degree of freedom to a syste

    A Touch of Topological Quantum Computation in Haskell Pt. I - Hey There Buddo!
  • Blockly で中学校プログラミング教育のための教材を作る - Qiita

    記事の背景と目的 「小学校」のプログラミング教育では Scratch が広く使われています。ScratchGoogle Blockly をベースにしているため、似たようなビジュアルプログラミング環境を作成することが可能です。記事では Blockly を利用してエディタを作りますが、Scratch と差別化を図るため、次の目標を設定したいと思います。 IE でも実行できる、ブラウザ上のエディタにする 中学校におけるプログラミング教育が対象とする、ネットワークを活用した双方向性のあるコンテンツを扱える環境にする 記事の最大の目的は、一緒に作る仲間を探すことです。興味を持たれた方は GitHub からご連絡お願い致します。 今の時点でできること 今の実行環境を以下の図に示しました。 WebSocket を用いて、例えばクライアント側が別のクライアントPCにメッセージを送信できるような

    Blockly で中学校プログラミング教育のための教材を作る - Qiita
    hamamuratakuo
    hamamuratakuo 2019/09/23
    「小学校」のプログラミング教育では Scratch が広く使われています。Scratch は Google Blockly をベースにしているため、似たようなビジュアルエディタ環境を作成することが可能です。
  • 1年後の成功を想像すると、日々の地…… - 本田圭佑の名言 - Number Web - ナンバー

    1年後の成功を想像すると、日々の地味な作業に取り組むことができる。僕はその味をしめてしまったんですよ。 田圭佑(サッカー) 2011/01/20 目下の目標はレアル・マドリーでプレーすること。「メンタルのトレーニングをすれば、いくらでも課題を克服できると思う。無限ですよ、脳は」。田の“ビッグマウス”には彼なりの根拠があるのだ。 Number769号(2010/12/24)

    1年後の成功を想像すると、日々の地…… - 本田圭佑の名言 - Number Web - ナンバー
    hamamuratakuo
    hamamuratakuo 2019/09/23
    1年後の成功を想像すると、日々の地味な作業に取り組むことができる。僕はその味をしめてしまったんですよ。 本田圭佑(サッカー) 2011/01/20
  • Linear Algebra of Types

    It gives my brain a pleasant thrum to learn new mathematics which mimics the algebra I learned in middle school. Basically this means that the new system has operations with properties that match those of regular numbers as much as possible. Two pretty important operations are addition and multiplication with the properties of distributivity and associativity. Roughly this corresponds to the mathe

    Linear Algebra of Types
    hamamuratakuo
    hamamuratakuo 2019/09/23
    The reason i was even thinking about this is because we can lift the above construction to perform a linear algebra of vectors spaces. And I mean the spaces, not the vectors themselves. This is a confusing point.
  • TypeScript での createWithFunc, withMany, withManyParallel による非同期並列リソース管理 - Qiita

    TypeScript での createWithFunc, withMany, withManyParallel による非同期並列リソース管理TypeScript リソースを開く関数 function openSomeResource(openOpt: OpenOption): Promise<SomeResource> と リソースを閉じる関数 function closeSomeResource(closeOpt: CloseOption): Promise<void> から スコープ付きでリソースを管理する関数 function withSomeResource<T>(openOpt: OpenOption, withBlock: (r: SomeResource)=> Promise<T>): Promise<T> を合成する関数。 使い方 function openSomeRes

    TypeScript での createWithFunc, withMany, withManyParallel による非同期並列リソース管理 - Qiita
  • 自分自身を呼び出す関数=再帰関数をできるだけ分かりやすく解説する【初心者向け】 - Qiita

    必要な知識 JavaScript の基的な構文、関数、プロパティ、配列 イントロ 例えば「JavaScript で Web ページ上に <a> 要素が何個あるか数えろ」と言われたら、どのようなコードを書くだろうか?もちろん getElementsByTagName() などを使えば簡単だが、それらを使わずに自分で DOM ツリー上を探索して数えるアルゴリズムを実装するとしたら、どうするだろうか? DOM ツリーというのがどういうものかわからない人も、構造自体はシンプルなので調べてみてほしい。<div> や <a> といったものは要素といい、要素の中にさらに別の要素(子供要素 / child element)がいくつか含まれたり含まれなかったりする。 このような問題は、再帰関数を使えば簡潔かつ直感的なコードで表現することができる。この記事では JavaScript を用いて説明するが、同じ

    自分自身を呼び出す関数=再帰関数をできるだけ分かりやすく解説する【初心者向け】 - Qiita
    hamamuratakuo
    hamamuratakuo 2019/09/23
    再帰関数は、再帰的な構造を持つ問題を解くのに非常に有用。パフォーマンスはwhileやforに劣るが、多くの場合コードのパフォーマンスよりもリーダビリティ(読みやすさ)を優先すべきである。→アキュムレータも使えばOK?
  • Observableってモナドらしいですよ - Qiita

    Angularのチュートリアルを進めていたらRxJSだのObservableだのいう謎概念が登場して面らっていたのですが どうやら調べてみると、このObservable、「モナド」らしいんですね。 僕は以前「すごいHaskell たのしく学ぼう」という楽しそうなでHaskellを勉強し、会社で使うプログラムをHaskellで書いたり競技プログラミングにHaskellで挑戦していたことがあるので、モナドについては全て完璧にわかっています(大嘘) ということで、この記事では、モナドという側面からObservableを理解してみたいと思います。 「モナドって何?」については、ググるといろんな説明が出てきて理解に苦労しますが、僕はこちらの記事の説明方針が良いんじゃないかと思いました。 https://qiita.com/hiruberuto/items/8bbc0343bf794c368287

    Observableってモナドらしいですよ - Qiita
    hamamuratakuo
    hamamuratakuo 2019/09/23
    具体的には、HaskellのMaybeモナド、リストモナドと、RxJSのObservableを比較していきます。
  • async/awaitがモナドのDo記法と同じっぽいので検証。throwとcatchもモナドに対応させる - Qiita

    JavaScriptにおいて、Promiseのthenを使った書き方を、async/awaitを使って書き換えられるわけですけども その書き換えって、Haskellのモナドでbind(>>=)を使った書き方を、Do記法に書き換えとそっくりじゃないですか? ということで、どんな感じで対応しているか検証してみます。 コードの全文は最後に載せますね。合わせて60行もないです。 Haskell側のモナドとして、Eitherモナドを使うことにします。 Haskellのコードはimport Data.Eitherしておきます。 記事を通して使う関数 まずは、Promiseやモナドを返す関数ohとyeahを用意します。

    async/awaitがモナドのDo記法と同じっぽいので検証。throwとcatchもモナドに対応させる - Qiita
    hamamuratakuo
    hamamuratakuo 2019/09/23
    Promiseはモナドなの?入れ子にできないので違います。今回は入れ子にする場面がなかったのでモナドと同じように振る舞ってますけども。ちなみにRxに出てくるObservableなら入れ子にできるのでモナドだと思います。
  • モナド (プログラミング) - Wikipedia

    関数型プログラミングにおいて、モナドはプログラムを構造化するための汎用的な抽象概念である。対応したプログラム言語では、ボイラープレート的なコードでもモナドを使って除去することが可能となる。これはモナドが、特定の形をした計算を表すデータ型と、それに関する生成と合成の2つの手続きを提供することによって実現されている。生成は任意の基型の値をモナドに包んでモナド値を生成する手続きであり、合成はモナド値を返す関数(モナド関数)たちを合成する手続きである。[1] 広い範囲の問題をモナドを使うことで単純化できる。例えば、Maybeモナドを使えば未定義値への対処が簡単になり、Listモナドを使えばリストに入った値を柔軟に扱うことができる。複雑に組み合わさった関数は、モナドを使えば、補助データの管理や制御構造や副作用を除去した簡単なパイプライン構造に置き換えることができる[1][2]。 モナドの概念や用語

    hamamuratakuo
    hamamuratakuo 2019/09/23
    モナド(monad)は、計算を表現する構造である。ジェネリック型を構築するための関数型デザインパターン。モナドは一種の関手であり、通常は圏論における強モナドを指すことが多い。
  • モナド - ウォークスルー Haskell

    まず最初に,モナドを自然に理解できるように,モナドと近い概念である "ファンクタ" を紹介します. その次に,モナドを紹介します. それから,モナドの例として Maybe モナドを紹介し,モナドのための構文糖である do 記法を説明します.

    hamamuratakuo
    hamamuratakuo 2019/09/23
    functor(関手)→関数fmapによって,普通の関数fが(Maybeや[]で)ラッピングされた値に作用する関数fmap fに変換されている様子がよくわかります.こうした変換のことを,関数の持ち上げ(lifting)ということがあります.