Scala

printfやformat

via. http://cappuccino.jp/keisuken/logbook/20080512.html#p012.7.1.finalから、 scala.Console(ひいてはscala.Predef)の関数printfやformatが、 java.util.Formatter を使うようになったらしい。これで、慣れ親しんだ、書き方が出来る。 printf("%-10s,…

LingrRadar もどきを作り始めてみた

とりあえず、超適当版はこんな感じ object lingr_test { import scala.io._ import scala.xml.parsing._ import scala.util.DynamicVariable import jp.ryugate.net.Http val LINGR_SERVER = "www.lingr.com" val APIKEY = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa…

JJUG CCC

予想を超えて、大盛況でした。 Scalaきますね!これは。あわせて、発表資料をアップしました。 http://cappuccino.jp/scala-ja/?%BB%F1%CE%C1%B4%DB

RemoteActorを使うときの注意

対話モードで実験しているときは良かったのだが、 いざコンパイルして使おうとすると、RemoteActor.classLoaderに明示的にクラスローダを入れてやらないと、 外部から接続出来ないみたいです。via http://www.nabble.com/Re:--scala--Remote-Actors.-p147153…

JJUGのイベントCCCでActorについてちょっと喋ることになりました。

「ポスト Java は何か? JVM で動く関数型言語(Scala)の可能性」http://www.java-users.jp/contents/events/ccc2008spring/sessions.html#BOF1

ActorsRing再び

現在の理解度で書き直してみた。(^^; import scala.actors._ import scala.actors.Actor._ import java.lang.management._ object ActorsRing { val mxbean = ManagementFactory.getMemoryMXBean //------------------------------------------------ class …

Ruby から Scalaへ

をみていて・・・ あとでScalaで簡潔に書く方法を探したいものリスト "string" * 5 3.times do puts 'hoge' end 3/22 追記そのまま書くと (1 to 5).foldLeft(""){(acc,i) => acc + "string"} (1 to 3).foreach{ii => println("hoge")} だが object test { ob…

Stream(無限リストもしくは「リストを作る関数オブジェクトをラップしたリスト by keisuken」)

結構便利かも・・・ val lst = List(0,1,2,3,4,5,6,7,8,-1,10,11,12,13) Stream.from(2).takeWhile{ lst(_) != -1 }.foreach {i => println(lst(i)) } と、すると 2 3 4 5 6 7 8 となる。さらに、 Stream from 2 takeWhile ( lst(_) != -1 ) foreach {i => p…

継承?委譲?いや!Views!

POIのラッパをViewsを利用するように書き換えた。 もともと、委譲形式で書いていたので、移行は楽だった。ちなみに、Viewsについて一応書いておくとまず、以下のような定義のクラスAがあるとする class A { def hoge = println("hoge") } これを拡張するため…

ブロックの中でマッチングするとき

val hoge = List(1,2,3,4,5) hoge.foreach { case(2) => println("HOGE") case _ => println("PIYO") } val piyo = List( (1,2), (3,4), (5,6) ) piyo.foreach { case( (_,4) ) => println("HOGE") case _ => println("PIYO") } とかけます。 結果は PIYO HO…

「_」の意味

やっと「 _は、式の一部をパラメータ化した関数オブジェクトを作るのに使え」ると言うことを理解した。 備忘録: map.find{ case (k, v) => k == "x" }

豆ナイト

に行ってきた。 30名近くはいたかと思われる参加者がいて、 思ったよりもずっと多くの方々が Scalaに興味を持っているのだと知りました。で、帰ってきて、いくつか疑問点を、例によって LingrのScala-jaでmizushimaさんにレクチャーしてもらう。 Q:caseを…

HTML Parserラッパ

HTML Parser - HTML Parserのラッパを作り始めた。 ・http://journal.mycom.co.jp/news/2005/06/15/029.html方針は以下のような感じ import org.htmlparser._ import org.htmlparser.util._ import org.htmlparser.filters._ //----------------------------…

データベース

SQLiteを使ってみた。 ・参考http://www.zentus.com/sqlitejdbc/ import java.sql._ object sqlitetest extends Application { Class.forName("org.sqlite.JDBC") val conn = DriverManager.getConnection("jdbc:sqlite:test.db") val stat = conn.createSta…

パーサコンビネータ

どう書くにyuinさんが投稿されたCSVパーサエロと風俗情報満載 どう抜く?を研究中。とりあえず、私の理解しやすいように以下のような感じに書き換えてみた。 object CSVParser { import scala.util.parsing.combinator.{Parsers, ImplicitConversions, ~, mk…

List#zipWithIndexとcase => ... case =>

val cols = sheet.cols(4,8,12,16) (1 to 4).foreach {i => val col = cols(i-1) : } は、zipWithIndexをつかって sheet.cols(4,8,12,16).zipWithIndex.foreach {pair => val col = pair._1 val i = pair._2 : } と書くと便利で、さらに、パターンマッチをつ…

一歩一歩

- nullを返すな、Optionつかえ - for はモナドの構文 - for(...) yield{} の...の部分でNone(Option型)が帰ると、その回の評価がスキップされる。 - for 全体が失敗する可能性のあるときには、Option#getOrElseを使うと、その際の処理を記述できる。 - 「:…

今日のメモ

備忘録をかねてメモ - 「_」は、式の一部をパラメータ化した関数オブジェクトを作る。 - 引数の無い関数オブジェクトを呼び出す時には、必ず()を付ける。 - setterを使いたいときには、(現状?)getterも定義しないとコンパイラに怒られる。 - JAVAのHTML…

どう書く.orgなど

エロと風俗情報満載 どう抜く?にいくつか投稿をしてみた。 相変わらず、http://www.lingr.com/room/scala-ja でも、たくさん教えていただいて、 いい感じで、使えるようになっているかも。 次の勉強のお題を探し中。候補は以下のような感じ YAML GUI XML コ…

Ruby(そしてScala) Redditができたという話

via Matz日記:http://www.rubyist.net/~matz/tb.rb/20080126海外では、Ruby、Scalaとも結構盛り上がってきているのかな? 日本もがんばろう!・Scalaで、さらに、トップページから「Scala」で検索した結果がこれ・reddit.com: search results - scala

あえて、要望など・・・

まだほんの2ヶ月ほどしか触っていないのだが、 Scalaは「かなりイイ」と言う事はよくわかった。 簡潔な記述、十分な性能、拡張性、将来への期待・・・ で、あえてここで、Scalaに望みたいことを考えてみた。 (大きなところから小さなところまで、思いつい…

正規表現についてのアイデア

正規表現を hoge\/\. の様に表記できれば、 「\\.」を「\.」と 「\\\\」を「\\」と 書けるね・・・

CodeReposに参加しました。

http://coderepos.org/share/の、 http://svn.coderepos.org/share/lang/scala/sandbox/ 内に手持ちをいくつかコミットしました。みんなで、持ち寄ってScalaを遊び倒しましょう。 (もちろん、仕事にも使いたい!!)簡単なルールが ここ→http://coderepos.o…

正規表現クラス

すこし、拡張した。 package ryugate.text import java.util.regex.Pattern import java.util.regex.Matcher object Regexp { class RyuString(str:String) { def re_match(re:String) = Regexp.re_match(re, str) } implicit def string2ext(self:String) =…

Specsを使ってみる。

正規表現クラスのテストをするために、Specs - http://code.google.com/p/specs/ を使ってみる。 基本的には下記の様なスペックコードとRunnerを書けば動く import org.specs.runner.SpecsFileRunner object SpecsRunner extends SpecsFileRunner("src/**/*.…

正規表現

Ruby ライクな正規表現クラスを作り始めてみる。 package ryugate.text import java.util.regex.Pattern import java.util.regex.Matcher class Regexp(ptn:Pattern) { def this(str:String) = this(Pattern.compile(str)) def re_match(str:String):Matcher…

Jetty+Velocityを実験してみた

ScalaのXMLモードは少々癖がある <br />が<br></br>になるので。 Velocityを使ってみた。以下はそのコード、 import java.io.PrintWriter import javax.servlet.http.HttpServlet import javax.servlet.http.HttpServletRequest import javax.servlet.http.HttpServletRespo…

BoxedArrayがらみの挙動

詳しくはhttp://www.lingr.com/room/scala-jaを参照の事# val arr = Array("1", "2") を実行したあと、arrはBoxedArrayのサブクラスだが、 # context.put("array2", arr) にて、putに渡されるときに(コンパイラによって?)自動的に Stringに変換される。 …

今日の授業

昨日に引き続き、Scala-ja(at Lingr)より、 勉強させていただいております。 可変長引数の使いかた def hoge(i:int, args:Any*) = { println(args.getClass) } argsは「scala.runtime.BoxedObjectArray」と言う、 ちょっと特殊(具体的な違いはちょっと不明…

クラスオブジェクトの取得

LingrのScala-ja(http://www.lingr.com/room/scala-ja)で教えていただきました。 classOf[T] で得られます。これは、PreDefで以下のように定義されています。 // classOf /** Return the runtime representation of a class type. */ def classOf[T]: Class …