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
本記事の背景と目的 「小学校」のプログラミング教育では Scratch が広く使われています。Scratch は Google Blockly をベースにしているため、似たようなビジュアルプログラミング環境を作成することが可能です。本記事では Blockly を利用してエディタを作りますが、Scratch と差別化を図るため、次の目標を設定したいと思います。 IE でも実行できる、ブラウザ上のエディタにする 中学校におけるプログラミング教育が対象とする、ネットワークを活用した双方向性のあるコンテンツを扱える環境にする 本記事の最大の目的は、一緒に作る仲間を探すことです。興味を持たれた方は GitHub からご連絡お願い致します。 今の時点でできること 今の実行環境を以下の図に示しました。 WebSocket を用いて、例えばクライアント側が別のクライアントPCにメッセージを送信できるような
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
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
必要な知識 JavaScript の基本的な構文、関数、プロパティ、配列 イントロ 例えば「JavaScript で Web ページ上に <a> 要素が何個あるか数えろ」と言われたら、どのようなコードを書くだろうか?もちろん getElementsByTagName() などを使えば簡単だが、それらを使わずに自分で DOM ツリー上を探索して数えるアルゴリズムを実装するとしたら、どうするだろうか? DOM ツリーというのがどういうものかわからない人も、構造自体はシンプルなので調べてみてほしい。<div> や <a> といったものは要素といい、要素の中にさらに別の要素(子供要素 / child element)がいくつか含まれたり含まれなかったりする。 このような問題は、再帰関数を使えば簡潔かつ直感的なコードで表現することができる。この記事では JavaScript を用いて説明するが、同じ
Angularのチュートリアルを進めていたらRxJSだのObservableだのいう謎概念が登場して面食らっていたのですが どうやら調べてみると、このObservable、「モナド」らしいんですね。 僕は以前「すごいHaskell たのしく学ぼう」という楽しそうな本でHaskellを勉強し、会社で使うプログラムをHaskellで書いたり競技プログラミングにHaskellで挑戦していたことがあるので、モナドについては全て完璧にわかっています(大嘘) ということで、この記事では、モナドという側面からObservableを理解してみたいと思います。 「モナドって何?」については、ググるといろんな説明が出てきて理解に苦労しますが、僕はこちらの記事の説明方針が良いんじゃないかと思いました。 https://qiita.com/hiruberuto/items/8bbc0343bf794c368287
JavaScriptにおいて、Promiseのthenを使った書き方を、async/awaitを使って書き換えられるわけですけども その書き換えって、Haskellのモナドでbind(>>=)を使った書き方を、Do記法に書き換えとそっくりじゃないですか? ということで、どんな感じで対応しているか検証してみます。 コードの全文は最後に載せますね。合わせて60行もないです。 Haskell側のモナドとして、Eitherモナドを使うことにします。 Haskellのコードはimport Data.Eitherしておきます。 記事を通して使う関数 まずは、Promiseやモナドを返す関数ohとyeahを用意します。
関数型プログラミングにおいて、モナドはプログラムを構造化するための汎用的な抽象概念である。対応したプログラム言語では、ボイラープレート的なコードでもモナドを使って除去することが可能となる。これはモナドが、特定の形をした計算を表すデータ型と、それに関する生成と合成の2つの手続きを提供することによって実現されている。生成は任意の基本型の値をモナドに包んでモナド値を生成する手続きであり、合成はモナド値を返す関数(モナド関数)たちを合成する手続きである。[1] 広い範囲の問題をモナドを使うことで単純化できる。例えば、Maybeモナドを使えば未定義値への対処が簡単になり、Listモナドを使えばリストに入った値を柔軟に扱うことができる。複雑に組み合わさった関数は、モナドを使えば、補助データの管理や制御構造や副作用を除去した簡単なパイプライン構造に置き換えることができる[1][2]。 モナドの概念や用語
まず最初に,モナドを自然に理解できるように,モナドと近い概念である "ファンクタ" を紹介します. その次に,モナドを紹介します. それから,モナドの例として Maybe モナドを紹介し,モナドのための構文糖である do 記法を説明します.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く