scala
「ハイヤーーーーーッッ!!!」 と気合いを入れたところで、今日はScalaのコレクションライブラリで多用されている、Higher kind genericsについて軽く解説したいと思いハイヤーーーーーッッ!!! Higher-kind Generics(type constructor parameter)って? …
まぁタイトルの通りなんですが(冷やし中華は終わってます)、RubyだったらrvmとかPythonだったらvirtualenvとか、使うバージョン切り替えられるヤツあんじゃないスカ? Scalaでもあったらいーなーと思ってシェルスクリプトで書きました。Scalaの場合は、依存ラ…
「あばばばばばばばば」この記事は、Scala Advent Calendar jp 2010 : ATNDの17日目です。 今日は、Scalaそれ自身をソースからコンパイルする方法を紹介します。やりかたは簡単で、Scalaのソースコードを持ってきて、antコマンドでビルドするだけです。 Scal…
「あばばばばばばばば」 はい、この記事は、「じゃば あばばばば かれんだー - 邪 2010」の9日目、12/21日のものですのよ? 昨日は、id:nekopのBytemanによるJava黒魔術 - nekopの日記でした。このBytemanが利用している「Java(TM) java.lang.instrument」を…
テキストファイルをオープンして内容を出力する - ブログタイトル入力 を読んで。 自分ならLoanPattern使ってこう書くかな? type Closable = { def close():Unit } def using[A <: Closable,B]( resource:A )( f:A => B ) = try { f(resource) } finally { resource.close } こんなかんじで使う。</:>…
「そんなASTで大丈夫か?」 ということで、ほとんどの言語はプログラムの内部表現として抽象構文木(abstract syntax tree、AST)を作ると思います。Scalaももちろんコンパイルするときに作ります。 で、Scalaコンパイラが生成してるASTを見るオプションがあ…
短い中にいろいろなエッセンスが詰まったよいサンプルだと思ったので、id:noire722さん(@noire722)が書いた「HTMLスクレイピング in Scala」を、俺流に書き直してみました。 HTMLスクレイピング in Scala その2 - cignoir の日記 書き直す過程でどういう考え…
Scala2.8から、Predefに
名古屋で開催された第一回Scala座に酸化してきました。 俺は最初の発表で、「これまでのScala これからのScala」というタイトルでScalaの紹介とか2.8で追加された機能とかScalaの今後とかcase classと寧々さんとか#librabackとかについて話しました。 これま…
ATNDがTwitterと連携できるようになりましたね。そこで、イベントの参加者のTwitterIDを抜き出すスクリプト書きましたよ。 object ATNDEventTwitterList { def main( args:Array[String] ) = { args.headOption.foreach { eventId => ATNDApi.event( eventId…
はい こんにちわ。ゆろよろです。LL TigerのLanguage UpdateでScalaの話をしてきました。スライドはこちらっす。 20100731 LL Tiger Language Update ScalaView more presentations from yuroyoro. 2.8.0.finalでの機能追加について詳しく説明してもよかった…
今日はScalaの例外処理について解説しますよ。 基本 - try,catch,finally 例外処理の基本は、try,catch,finallyです。これはJavaと同じですね。 ただし、Scalaでのtry,catch,finallyは値を生成します。つまり、実行されたブロックの値が評価されます。 scala…
今日は、ScalaのOptionの使い方について解説しますよ。OptionはScala使いにとってはなくてはならないものです。これを覚えてしまうと他の言語でもOptionを作りたくなる、かもしれない? Optionってなに? Option型は、値があるかないか分からない状態を表すも…
パターンマッチは便利すぎてこれを覚えてしまうと他の言語でも欲しくてたまらなくなりますね。 Scalaのパターンマッチは、実はユーザーが独自のパターンを定義することが可能になっています。 extractor(抽出子)によるパターンの拡張 簡単な例を紹介します。…
前回書いたPartialFunctionの利用例として、奇妙なFizzBuzzを書いてみましたよ。 // PartialFunction[A,B]を "A --> B"のように書けるようにしておく type -->[A,B] = PartialFunction[A,B] // FizzBuzz用のPartailFunctionを生成するユーティリティ def toP…
Scalaには、PartialFunctionというものがあります。 直訳すると部分関数ですが、これはなにかっていうと「特定の引数に対しては結果を返すけど、結果を返せない引数もあるような中途半端な関数」です。 どうやって使うのん? まぁ、ちょっと例を見てましょう…
今AngelBeats!見てます。天使ちゃんマジ天使でいいと思います。 で、だいぶ前に作ったScala版のちょっと草植えときますね型言語 Grassを改造して、プログラミング言語 「天使ちゃんマジ天使」とプログラミング言語 「ブブゼラ」を作ってみたよ。 Grassは、id…
今日は、とうとつについったーに奇声をポストしたい気分だったので、1階マルコフ連鎖で奇声を生成するジェネレータを書いてみました。 奇声なんで意味のある文章ができなくても充分なので、1階マルコフ連鎖で充分。マルコフモデルを研究していた元首相のご意…
最近の流れでは、時代はHTML5なんですかね? そんなわけで、前にちょっとやってみたJetty7のWebSocketと、ついったーのStreaming API ChirpUserStreamを組み合わせて簡単なWebベースのついったクライアントを書いてみました。 スクリーンショット: 動いている…
GAE/JでのScalaのSpinUp時間を計ってみました。appengine ja night #6 Beer Talk : ATNDでLTしたときに言っちゃいましたのでね。 java-ja温泉第2回の成果その1ですお。 測定方法 測定パターンは以下の4パターンです。 simplescala Scalaで書いた単純なFilter…
「EXILEはクラウド!」 ではなく、appengine ja night #6 Beer Talk : ATNDで発表した内容です。 Slim3をScalaで動かすためのブランクプロジェクトと、ScalaのController/Serviceを生成するSlim3-gen-scalaを作りました。 yuroyoro/slim3-scala-blank · GitHu…
Javaな人から見ると、「Scalaって難しい」ってイメージがありますね。俺も最初はそう思ってました。今もですけど。 で、考えてみたんですが、何が難しいって考え方・イディオムになじみがないのが原因かと思ったんです。 ここでは、俺が今までScalaをやって…
HTML5っ!WebSocketっ!サーバーからプッシュでっ! やりますよscalaで。とはいえ、Javaでも同じなので、Javaでやってみようって人にも参考になるかも? サーバーの実装 サーバ側の実装は、要点をまとめるとこんな感じです。 org.eclipse.jetty.websocket.WebSoc…
Google App EngineでScalaとSlim3使ってヘンなサービス作りました。 恵方's - 恵方ってどっちよ? なんと! 今年の恵方だけでなく、去年や来年の恵方までわかってしまう画期的なサービスです!! Google App EngineでScalaとSlim3の話は、appengine ja night #6 …
俺「新しいアプリだよ。さぁ、デプロイするからAppSlotを解放するんだ…!」 appengineたん「で、でぷろい…ですか…?こんなおっきなあぷり…は、入るかな…?」 俺「今日はScalaを使ったアプリケーションなんだよ」 appengineたん「Scalaなんて…そんな変態的なこと…
Scala hack-a-thon #2、無事終了しました。 参加された皆さん、本当に有り難うございました。 やっぱり、誰もしゃべらず黙々とコード書いたり資料読んだりで、まじで「絶対にしゃべってはいけない Scala hack-a-thon」でした。 しかし、みなさんそれなり楽し…
えと、もう明日なんですが、2月20日(土)に、Scala hack-a-thon #2が開催される予定となっております。 Scala Hack-a-thon #2 : ATND つきましてはですね、主催である私目から皆様へ、どのような趣旨のイベントなのかと、いくつかのお願いをこの場を借りてさ…
草生やしたいときに def www( s:String ):String = { import scala.util.Random val rnd = new Random( ) val ws = List( "w","W","w" ) def w(n:Int):String = ( 0 - n) until rnd.nextInt(3) map { i => ws( rnd.nextInt( ws.size -1 ) ) } mkString ("ち…
ちょっと面白い問題を見つけたので、俺も解いてみました。 Blog not found 仕様はこうです。 あるListから要素を探し、該当する要素を除いた残りの要素数を返す。 ただし、要素がListに存在しない場合は-1を返す。 1の仕様だけなら、単純にList#dropWhileし…
もう誰得よ?って感じですが作りました。恵方って、4パターンしか無いんですね。 // http://ja.wikipedia.org/wiki/恵方#.E6.81.B5.E6.96.B9 object 恵方{ import java.util.{Date,Calendar} def 今年の恵方 = この年の恵方は_?( Calendar.getInstance ) def …