|
|
||
宣誓、我々独書会会員一同は、プログラマーシップに乗っ取り、Haskellerとなるべく努力することを誓います。
但し、途中で飽きたり、気力が尽きたり、他のことに興味が向いたり、その他諸々の事情があった時は、その限りでありません。
sortメソッド(java.util.Arrays#sort, java.util.Collections#sort)は、
引数に java.util.Comparator の各種実装クラスを渡すことで、ソート順を変えることができる。
これは、”ソート順を決定するための関数を、sort関数に渡している。”と言うこともできる気がする。
すばらしい。
コードが長ったらしくなるので、今ではfinalを付けるのは、
バグが入り込みやすそうなところだけにしていますが。
再代入可能を表す識別子を作って、それが付いていれば、Javaの普通の変数に翻訳。
こんなバグ防止Tipsを集めて、Javaのプリコンパイル言語を作っちゃおうかな?
「ごじゃっぺな人間による、ごじゃっぺな人間のための、ごじゃっぺなJava言語」略して「Goja」
あれ、これってもしかして、アノテーションを使えばできるのかな?
宣誓、我々独書会会員一同は、プログラマーシップに乗っ取り、Haskellerとなるべく努力することを誓います。
但し、途中で飽きたり、気力が尽きたり、他のことに興味が向いたり、その他諸々の事情があった時は、その限りでありません。
sortメソッド(java.util.Arrays#sort, java.util.Collections#sort)は、
引数に java.util.Comparator の各種実装クラスを渡すことで、ソート順を変えることができる。
これは、”ソート順を決定するための関数を、sort関数に渡している。”と言うこともできる気がする。
すばらしい。
コードが長ったらしくなるので、今ではfinalを付けるのは、
バグが入り込みやすそうなところだけにしていますが。
再代入可能を表す識別子を作って、それが付いていれば、Javaの普通の変数に翻訳。
こんなバグ防止Tipsを集めて、Javaのプリコンパイル言語を作っちゃおうかな?
「ごじゃっぺな人間による、ごじゃっぺな人間のための、ごじゃっぺなJava言語」略して「Goja」
あれ、これってもしかして、アノテーションを使えばできるのかな?
”Haskellは、純粋関数型言語だけど、Lispは違う。”っていうのは、ここら辺も関係しているのかな?
Log4JのLogger#isDebugEnabledメソッドなんて、
まさしくJavaが遅延評価でないために必要となったメソッドですものね。
(
1.Logger#debugメソッドは、ログ出力のレベルがDEBUGの時以外、何もしない。
3.そのため、debugメソッドで使われなくても、debugメソッドに渡すデバックメッセージを組み立てなければならない。
4。そのデバックメッセージの組み立てが、ボトルネックになる場合がある。
5.そこで、isDebugEnabledメソッドでDEBUGログが出力されるか判定し、出力されないなら、デバックメッセージの組み立てもスキップする。
)
うーん。長ったらしい説明だ。もっと簡にして要を得た説明をできるようにならないと。
Java(手続き型言語)では、引数xxxで関数yyyを実行(call)する。
Haskell(関数型言語)では、変数xxxに関数yyyを適用(apply)する。
よく違いが判らない。
ま、慣れれば判ってくるかもしれない。ってことで、次。
インデントに文法上の意味がある?
えー、なにそれ。それヤダ。
それ位なら、カッコだらけのLispの方が良い気がする。
まあ、Lispのコード書いたことないけど。
書いたらカッコにうなされるのかもしれないけど。
Haskellは”遅延評価”なので、do式を使わないと実行順序がどうなるかわからない。
do式って、BPELのsequenceと同じ?
でも、遅延評価と、実行順序不定がどう関係するのか、判らない。
変数 <- 値
これって、Javaの
と同じ?
変数を束縛した値を、計算しなくても済むのか。
(変数に束縛された値、と書きそうになってしまった。
値が変数を束縛する。って言い方に慣れるには時間がかかりそう)
リストには、一種類の値のみが入る。
リストの最後(最後の次?)は、空リスト(empty list)。
いや、むしろ BufferedReader#readLine の方がもっと似ているかも?
何行のデータを返すか判らないが、データが無くなったら null を返す。
「()」と同じだが、Haskellでは、「$」演算子が多用される。
Haskellを設計した人は、Lispのカッコに苦労したんだろうな。
高機能なエディタを使えば、括弧を見て自動でインデントしてくれるはずだと思うんけど。
そうでもなければ、きっとLisperの人でも、カッコを愛せはしないでしょう。