北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

scala

"圏論とかモナドなんて簡単だからscalaを使って説明してみた"を検証してみた

射っていうのはscalaだと単なる関数だし、関手はmap、モナドはflatMapなだけです。これのどこが難しいというのでしょう。圏論とかモナドなんて簡単だからscalaを使って説明してみた 内容について考えてみよう。 圏の定義? trait Cat { type A type B def f:…

今日は Akasaka.scala 36 の日です

Akasaka.scala 36に途中から参加してます。タグは#akskscalaです。 Scala言語仕様読書会8 / @seratch さん 6章の後半。 前置、中置、後置演算 :が右結合なのはなぜ? → ::のため 代入演算子 play2.0について / @seratch さん play コマンド sbtのラッパー (s…

95%の信頼区間とは

10000本のクジにx本の当たりが入っているとする。ここから100本のクジを引いた結果を元に、当たりクジが何本入っているか区間推定したい。非復元抽出なので厳密にいえば100本中の当たりクジの本数yは超幾何分布に従うが、抽出する数と比較して全体数が大きい…

超幾何分布と二項分布

非復元抽出とは、有限個のものから複数個を抽出する際に、抽出したものを戻さずに2回目以降の抽出を行うこと。こうすると二回目以降の試行の確率はだんだんと変化していくことになる。復元抽出する場合は二項分布となるが、非復元抽出をすると超幾何分布とな…

二項分布とポアソン分布

二項分布は試行回数が多くなると階乗周りの計算量が多くなる。一回の事象の発生確率pが十分に小さければ、ポアソン分布で近似ができる。例えば、5枚の硬貨を投げてすべて表がでるかどうかを64回やったときの分布を二項分布とポアソン分布で比較すると、以下…

3囚人問題

こちらはモンティ・ホール問題より有名だと思う。 ある監獄にA、B、Cという3人の囚人がいて、それぞれ独房に入れられている。罪状はいずれも似たりよったりで、近々3人まとめて処刑される予定になっている。ところが恩赦が出て3人のうち1人だけ助かることに…

モンティ・ホール問題

3囚人問題は有名だけど、こちらを見かけたのは恥ずかしながら初めて。 「プレイヤーの前に3つのドアがあって、1つのドアの後ろには景品の新車が、2つのドアの後ろにはヤギ(はずれを意味する)がいる。プレイヤーは新車のドアを当てると新車がもらえる。プレイ…

今日は Akasaka.scala 35 の日です

Akasaka.scala 35に参加してます。タグは#akskscalaです。ustreamはこちら。一度でも参加者したことがある方はgithubのOrganizationに入っているので、適当にcommitして下さいとのこと。 Scala言語仕様読書会8 / @seratch さん 今日は6章です。 6.1 → Expres…

sbt g8-test 時の依存関係でエラー出た

giter8-plugin を使って sbt g8-testしたときに、 sbt.ResolveException: unresolved dependency: org.scala-tools.sbt#scripted-sbt_2.9.1;0.11.2: not foundとか言われるときは build.sbt に resolvers += Resolver.url("Typesafe repository", url("http:…

今日は Akasaka.scala 34 の日です

Akasaka.scala 34に参加してます。タグは#akskscalaです。 Scala言語仕様読書会7 / @seratch さん 詳細はこちら。 前回の復習 メンバーマッチング 事前定義 修飾子 2回出てはいけない (a, b)のような定義に先行する場合は両方に private → コンパニオンから…

Scalaの空括弧とUnit

Unit周りでハマったのでメモ。まず、() => Any という型はあるが、()という型はない。 scala> def id(x: () => Int): () => Int = x id: (x: () => Int)() => Int scala> def id(x: ()): () = x <console>:1: error: '=>' expected but ')' found. def id(x: ()): () </console>…

Scalaのvalとvarとdef

valは定数、varは変数、defはコード、というのが大まかな理解になる。これらは名前空間を共有しているので、定数、変数、コードに同じ名前をつけることはできない。ただし、JSやPythonのように単純にフィールドにメソッドオブジェクトが入っていると思うとハ…