Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

2008-01-01から1年間の記事一覧

モナドについて調べていく(19)

One Div Zero: Monads are Elephants Part 3の翻訳続き。 The First Monad Law: Identity(第一のモナド則:同一性) The first and simplest of the monad laws is the monad identity lawモナド則の最初の、そしてもっとも単純な法則はモナドの同一性の法則…

モナドについて調べていく(18)

One Div Zero: Monads are Elephants Part 3の翻訳続き。 ついにモナド則まできました。 Functors and Monads, Alive, Alive Oh(ファンクターとモナドはまだまだ続く) As you may have guessed by now all monads are functors so they must follow the func…

モナドについて調べていく(17)

One Div Zero: Monads are Elephants Part 3の翻訳続き。 ファンクターが出てきました。 WTF - What The Functor?(ファンクターとは何か?) Usually articles that start with words like "monad" and "functor" quickly devolve into soup of Greek letters…

モナドについて調べていく(16)

One Div Zero: Monads are Elephants Part 3の翻訳。 今回からパート3。 偶然見つけた割には本当に良質の記事だと思います。モナドって説明読んでも全然わからない!って人は僕と一緒にこの記事読んで勉強していきましょう! In this series I've presented …

モナドについて調べていく(15)

One Div Zero: Monads are Elephants Part 2の翻訳続き。 Filtering "For"(「for」のフィルタリング) So far our monads have built on a few key concepts. These three methods - map, flatMap, and forEach - allow almost all of what "for" can do.これ…

モナドについて調べていく(14)

One Div Zero: Monads are Elephants Part 2の翻訳続き。 なぜかはわからないけど、この翻訳で自分がレベルアップしているように感じる。 自分に足りない基礎概念の理解が深まっているような。。。そんな感覚。 Now With More Expression(さらに式を増やして…

モナドについて調べていく(13)

One Div Zero: Monads are Elephants Part 2の翻訳。 今回からパート2のエントリです。 衝撃的ですが、これはパート4まであるようです。 またこのBlogの著者はScala Blogのグループに属しているそうです。 どうりでわかりやすいわけだ。。。 In part 1, I in…

モナドについて調べていく(12)

One Div Zero: Monads are Elephants Part 1の翻訳続き。 パート1はこれで終わり。 Conclusion for Part I(パート1の結論) Scala monads must have map and flatMap methods. Map can be implemented via flatMap and a constructor or flatMap can be imple…

モナドについて調べていく(11)

One Div Zero: Monads are Elephants Part 1の翻訳続き。 Monads Can Be Built In Different Ways(モナドは構築する方法がいくつもある) So we've seen how the flatMap method can be built using map. mapを使ってflatMapメソッドを構築する方法を見てきま…

モナドについて調べていく(10)

One Div Zero: Monads are Elephants Part 1の翻訳続き。 ヤバい!ここは超わかりやすい! モナドで困ってる人はゼヒ!おすすめ! bindとかflatMapの役割がわかってきた! Monads are Combinable(モナドは結合可能だ) Now let's say we have a configuration…

モナドについて調べていく(9)

One Div Zero: Monads are Elephants Part 1の翻訳続き。 モナドがコンテナという例えは今の僕のレベルではわかりやすくていい例えだ。 もちろん完全な説明にはならないのだろうが、概要をイメージしやすくていい。 Monads Support Higher Order Functions(…

モナドについて調べていく(8)

One Div Zero: Monads are Elephants Part 1の翻訳続き。 Monads are Container Types(モナドはコンテナのタイプだ) One of the most commonly used container types is List and we'll spend some time with it. I also mentioned Option in a previous art…

モナドについて調べていく(7)

One Div Zero: Monads are Elephants Part 1(モナドは象だ)というエントリがあったので、これを訳してモナドの学習を進めます。 Introductions to monads are bit of cottage industry on the Internet. モナドの紹介はインターネットでのほんの小さな事業で…

コードカバレッジは有益?

Kevin William Pangより。 僕はコードカバレッジにはこだわらないほう。 パーセンテージを上げるための行為が蔓延するから。 Code coverage does not tell us what code is working and what code is not. Again, code coverage only tells us what was exec…

モナドについて調べていく(6)

The Continuation Monad(継続モナド) The monad of continuations given here is a straightforward adaptation of Phil Wadler's paper "The Essence of Functional Programming" (1992). ここでの継続モナドはPhil Wadlerの論文「The Essence of Functiona…

モナドについて調べていく(5)

Monads in Scalaを前回に引き続き翻訳。 ほんの少しだけど理解が深まってる感じ。 Scala's for comprehensions(Scalaでの内包表記) "do-notation" is a syntax to write monad based program fragments: 「do表記法」はプログラムの断片を基礎とするモナドを…

モナドについて調べていく(4)

Monads in Scalaを前回に引き続き翻訳。 Computation(計算法) In programming, the prime use of constructing a monad is to build objects which are computations. プログラミングにおいて、モナドを構成する主要な用途は計算法であるオブジェクトを構築…

モナドについて調べていく(3)

Monads in Scalaというバッチリなタイトルの文章がありました。これを訳して少し知識をつけたいと思います。 Here's the beginning of a little tutorial on Monads in Scala. Scalaでモナドを実現するちょっとしたチュートリアルを始めます。 Michel Schinz…

モナドについて調べていく(2)

変数を束縛? ちょっとモナドから逸れるけど。 「変数を束縛する」って言葉づかいがよく出てくる。 束縛するってどういうこと? 束縛変数 bound variable とは、別の変数で置きかえても式の意味が変わらないような変数のことである。 束縛変数の名前を変更す…

モナドについて調べていく

ScalaのAdvanced Exampleがもうモナドを使うものしか残っていないので、 いい加減モナドと正面から向き合うしかない。 といってもちょっと調べてわかるくらいなら苦労はないわけで、 折りを見て何度も学び直して、1年後には習得したい。 間違いやアドバイス…

ScalaのAdvanced Exampleを写経する(12)-Views

Implicit Conversionと関連する話。 vectors.scala | The Scala Programming Language Views are applied in two situations: * If an expression e is of type T, and T does not conform to the expression's expected type pt. * In a selection e.m with…

ScalaのジェネリックとVariance

プログラミング言語 Scala Wiki 8.2 Variance Annotations とても勉強になる。 翻訳してくださった方、ありがとうございます。 Scalaの公式サイトのドキュメント、どこに何が書いてあるかまだイマイチわからないから。。 Varianceは共変ってことなんだけど、…

この2つができれば洋書が読める!

僕は年2、3冊洋書の技術書を読む程度なので、読むのが速いわけではないんですが。 洋書に対してアレルギーはないです。 洋書の翻訳はどうしても売り上げの問題で、有名な本か初歩の本しか対象になりません。 そして翻訳には期間がどうしてもかかり、その間に…

ScalaのAdvanced Exampleを写経する(11)-property

の謎が解けた。 timeofday.scala | The Scala Programming Language package sample.snippet object timeofday { class DateException extends Exception /** Simulating properties in Scala. */ class TimeOfDayVar { private var h: Int = 0 private var …

ScalaのAdvanced Exampleを写経する(10)-functional quicksort

クイックソートの関数スタイル版。sort1.scala | The Scala Programming Language package sample.snippet /** Quick sort, functional style. */ object sort1 { def sort(a: List[Int]): List[Int] = { if( a.length < 2) a else { val pivot = a(a.length…

Scalaの「::」と「:::」

package sample object Sample { def main(args: Array[String]): Unit = { val a = List(1,2,3) val b = List(4,5,6) println(a :: b) println(a ::: b) } } List(List(1, 2, 3), 4, 5, 6) List(1, 2, 3, 4, 5, 6)JavaでいうList#add()とList#addAll()だね。

Finderの代わりにmuCommander

mac

macにして何一つ後悔はないし、 むしろ普段からUNIXベースでエンジニアとして少し基盤ができてきたとか思うくらいだけど。 ただFinderはイマイチな気がする。 まあターミナルでやるんだけど。 でもまあマウスでやりたいときもあるし。 MOONGIFTでこんなファ…

ScalaのAdvanced Exampleを写経する(9)-imperative quicksort

クイックソートのimperativeスタイル。 imperativeは命令的。逐次ってことかな。 要は関数的でない従来の方法でのソート。 関数的なサンプルは別に用意されているので、次の機会でもやってみる。 sort.scala | The Scala Programming Language package sampl…

ScalaのAdvanced Exampleを写経する(8)-socket

Javaのソケット通信を使ったクライアント/サーバーアプリ。 random.scala | The Scala Programming Language package sample.snippet import java.io._ import java.net.{ InetAddress, ServerSocket, Socket, SocketException } import java.util.Random /*…

ScalaのAdvanced Exampleを写経する(7)-custom 'apply/update'

Scalaでは値を取り出すときはapplyメソッドが、値を設定するときはupdateメソッドが呼び出されるらしい。 それらに任意の処理を設定するサンプル。 properties.scala | The Scala Programming Language package sample.snippet /** Illustrate the use of cu…