Scala by Example > 演習7.2.2の解答案です。 abstract class IntTree case object EmptyTree extends IntTree case class Node(elem: Int, left: IntTree, right: IntTree) extends IntTree def insert(t: IntTree, v: Int): IntTree = t match { case Node…
Scala by Example > 演習6.0.3の解答案その2です。ヒントその2をベースにした解答です。 あるいは3つの子クラスとして Zero を 0 に、Succ を正の数のため、Pred を負の数のために使い、既知の Nat 実装を Integer へ一般化できます ちょっと意味が分からな…
このScala by Example > 演習6.0.2のNat、Succは自然数の定義でもあるペアの公理まんまですね。 公理を限りなく数式に近い形でプログラムで表現できるのはまさに関数型ならではなのでしょうか。Succの実装がよく分からない…と思ったら、これも原文と違っち…
Scala by Example > 演習6.0.2の解答案です。 trait IntSet { def incl(x: Int): IntSet def contains(x: Int): Boolean def union(set: IntSet): IntSet def intersection(set: IntSet): IntSet def excl(x: Int): IntSet def isEmpty: Boolean } class Emp…
Scala by Example > 演習6.0.1の解答案です。これも翻訳がちょっと分かりにくかったのですが、要するに和集合と積集合を求めよ、ということですね。 trait IntSet { def incl(x: Int): IntSet def contains(x: Int): Boolean def union(set: IntSet): IntSe…
Scala by Example > 演習5.3.1の解答案です。 立方根なので、 x = y * y * y y = x / ( y * y ) を補正関数に使います。 def cube(x: Double) = fixedPoint(averageDamp(y => x / (y * y)))(1.0)
Scala by Example > 5.2 カリー化 (Currying)の演習問題の解答案です。 演習 5.2.1 この問題ですが、??を埋めてもコンパイルエラーになって変だなと思ったら、原文とちょっと違ってますね。 原文の問題 def sum(f: Int => Int)(a: Int, b: Int): Int = { de…
Scala by Example -> 5.2 カリー化 (Currying)にて、ちょっと悩んだところを細かく読み解いてみました。 カリー化とは? Wikipediaによると、 f( a, b ) = c という関数 f があるときに、F( a ) = g ただし、g( b ) = c という関数 g が得られる関数 F を…
Scala by Example -> 演習 4.6.1の解答を考えてみました。末尾再帰にする→ else以降が再帰関数だけになればいい→でもfactorialだけにしちゃうと合計値を引き継げない→だったらfactorialに合計値を引き継げさせればいい def factorical(x: Int) = { def iter…
Scala勉強会第69回 in 秋葉原に参加しました。 テーマはiteratee。 なんとなく説明してもらった事は理解できるのですが、付いて行けてはいませんでした。 scalazのコードが読めないとちゃんと理解はできないですね。 逆に言うと課題は見えました。scalaの基…
Scala勉強会第68回 in 渋谷に参加しました。まだまだついて行けないですね…。 でも今まで関わった事の無かったプログラム言語界隈の話が聞けて楽しかったです。 そもそも皆の会話や着眼点が面白いですね。 単にプログラムの勉強というだけではなく、交流会と…
Gihyo.jpさんの「Jettyで始めるWebSocket超入門」を最新仕様に合わせて修正してみました。 WebSocketのコードはJettyの解説ページを参考にしました。 参照記事 Jettyで始めるWebSocket超入門 http://gihyo.jp/dev/feature/01/websocket Jetty/Feature/WebSoc…
WebSocketとは? 次世代のWeb用リアルタイム双方向通信プロトコル。2011/12/12にRFC6455になった。 今までのプロトコルとは何が違う? Ajax XmlHttpRequestを利用した非同期通信処理 Javascriptにより部分的にページを更新する サーバー側からPushできない C…
なんかsakamoto.hatenablog.comドメインが取れてしまった。 良いのかな?
基本は以下の通りにやれば良い。「The MacPorts Project Download & Installation」 http://www.macports.org/install.phpバージョンはこんな感じ。 Mac OS X 10.6.8 xcode 3.2.6 MacPorts 2.0.3 でもなぜか自分の環境では以下のエラーがでてMacPortsが起動…
ブログを書いていた事自体を忘れていた。 epoch timeが素数だったらtwitterにつぶやくbotを作ろう!と思い立った。ひとまずどんな頻度で素数が出現するんだろう?とエラステネスのふるいで計算してみたら… 1320849713 1320849757 1320849763 1320849779 1320…
ドラゴンクエスト展に行ってきました。http://www.dq25ten.jp/ また例のごとくにわかファンですが、マニアックな情報や等身大のモンスターに感動しました。 ただ、その中でぶっちぎりに興奮してしまったのが、ドラクエの仕様書です。 展示されていた初代ドラ…
最近screen上でvimを使っているのだけど、起動が遅いなあと思って色々調べてみた。環境は以下の通り。OS:Solaris 10 11/06 32bit vim:VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Jan 5 2011 16:24:44) screen:Screen version 4.00.03 (FAU) 23-Oct-06 v…
今日は定時で退社した後、ジムへ。2週間行かなかっただけで大分なまっていたなあ。 いつものメニューがこなせなかった。 不便な体だ。
今日も無事定時退社。 プロジェクトの進捗管理に、GanntProjectを使おうとしてみた。「GanntProject」 http://www.ganttproject.biz/タスクをサクサク作れるのはとても快適なんだけど、意図的に開始日をずらしてもちょっと触ると最短日程に自動修正されてし…
今日も今日とて定時退社。