2012-05-01から1ヶ月間の記事一覧

Learn you a Clojure for Great Groovy!

最近話題のタイトルは、たのしく読んでいる途中(9章に入った)。 その話ではなく、このエントリは Clojure で Ninety-Nine Prolog Problems をやっているときに思いついたもの。 1. Prolog Lists - Prolog Site Ninety-Nine Prolog Problems も Lists のとこ…

関数型パーサー

もうすぐ Haskell の本が出版されるので復習する。 『プログラミング Haskell』 の第8章を今回は Scala(version 2.9.2) で書く。Scala 的に使った方がいいらしいので Option や Either も勉強する。 Scala の API と以下を参考にしながら書いてみた。 Java …

ブックマークの整理

ブックマークも無限リストのようなものなので head をつかんだまま続けていると Out of Memory になる。 なので、気分転換に整理してみた。 整理の方法 古い方から順に判断した。 最初から考えていたわけではないが、結果的に4つに別れた。 カテゴライズして…

Programming Grails

O'Reilly では Open Feedback Publishing System といって執筆中の書籍にコメントできるらしい(ただし English)。 Online Feedback Publishing System - O'Reilly Media というわけで Grails の本が出るみたい(まだ半分も書かれていない)。 Online Feedback …

最長重複文字列問題 in Groovy

WEB+DB PRESS Vol.67 の最長重複文字列問題をやってみた。 もう少し前に実装していたのだけど takeWhile 待ちしている間に目的が変わってしまった。 Clojure や Scala では既に実装されている方がおられる。 WEB+DB PRESS Vol.67の最長重複文字列問題をCloju…

最長重複文字列問題 in Scala

Clojure 編につづき Scala 編へ Scala は Haskell の多くの関数が用意されているので Haskell からの書き換えるのには有利だ。 def makePair [T](xs: Seq[Seq[T]]) = xs zip xs.tail def comlen [T](p: (Seq[T],Seq[T])) = p.zipped takeWhile(x => x._1 == …

最長重複文字列問題 in Clojure

Clojure を学ぶ Groovy と Scala は Java の文化圏から生まれたものだが、Clojure は Lisp の文化圏から Java に入ってきたものだ。 関数の呼び出しが (関数名 引数1 引数2 ...) と前置記法で書いたリストであるところは Lisp だが、他の Lisp 系言語に比べ…

なぜメモ化も重要か

1年前ぐらいに読んでよくわからなかったけど、ようやく理解できた気がしたので書いてみる。 なぜ関数プログラミングは重要か *1 John Hughes 氏の主張 プログラムをモジュール化するには関数プログラミングのスタイルで書くといいよ。 高階関数を使うと捗る …