scala

タプルをそれぞれの変数に展開するときにも `@` が使える

FP in Scala の日本語訳読んでます。 読んでることとは直接関係ないですが、例えばこんな関数があったとします。 // 第6章 純粋関数型の状態から // RNG は乱数生成の状態を表すオブジェクトだと思ってください。 def nextInt: (Int, RNG) = ??? この関数を…

C#の「nameof」をScalaで実装してみる

C# vNext に、nameofという演算子が追加されています。 nameof演算子 - xin9le.netblog.xin9le.net どういうものかというと、指定したメンバー名を string 型で受け取ることができるというとてもイケてる演算子です。 // こんなクラスがあって class Person …

ScalaでC#のasync, awaitを実現するライブラリ「async」の紹介

この記事は Iwate Advent Calendar 2014 の22日目の記事です。昨日はnana4gontaさんのFirefox Developer Editionを使って他ブラウザをリモートデバッグする - Qiitaでした。明日はayokuraさんです。 岩手関連の記事を書こうと思い、仕事で使おうとしてるD3.j…

型パラメータ付きメソッドを持つトレイトとコンパニオンオブジェクト

タイトルはなんだか難しいですが、要は以下のコードのコンパイルを通したいということです。 trait Test { def apply[A](value: A): String } object Test { def apply[A](f: A => String): Test = new Test { def apply[A](value: A): String = f(value) } …

Play2.3でSecureSocialを使う(2014年6月時点)

※(2014年6月27日)この情報はすでに古く、Play2.3に対応した公式モジュールがリリースされている可能性があります。公式サイトやリポジトリをご確認ください。 PlayFrameworkに認証/認可機能を追加できるSecureSocialというモジュールがあります。 公式サイト…

play2でフィルター処理を実現する

前回の記事 をベースに考えて、なんとなく動くフィルター処理を作ってみました。 https://github.com/rabitarochan/play2-filter-sandbox フィルターの書き方についてはだいたいイメージ通りに行きました。 object Application extends Controller with Filt…

play2でフィルター処理っぽく書きたい

ソースも全然できてませんが、play2でActionを実行する前に色々とフィルター処理がかけたらいいなーと思い、色々と試行錯誤してます。 イメージ的には、こんな感じ。(フィルター処理は適当) def index = Filter { req => req.getQueryString("key1") match {…

Play2のevolutionスクリプトのコメントを表示するプラグインを書いた

この記事は Play or Scala Advent Calendar 2012 12/8 分の記事です。 前は @lyrical_logical さんの View/Context Bounds の制約 です。 次は @gakuzzzz さんです。 Play2には「evolutions」という、DBスクリプトを管理してくれる機能があります。他の仕組…

ScalaでSPI(サービスプロバイダインターフェース)を使う

Scalaでも、JavaのSPI(サービスプロバイダインターフェース)はもちろん使えます。 SPIは、AsakusaFrameworkで知って、Javaではいろいろ遊んでみたのですが、Scalaでは試してなかったので、試してみました。 ソースはこちら。 https://github.com/rabitarocha…

パーサコンビネータの処理が終わってくれない!!

パーサコンビネータの勉強も兼ねて、ScalaでWikiエンジンを作ろうと思ってます。パーサコンビネータでいろいろ試していますが、以下のコードは、私の環境では処理が終わってくれません。 なんでだろう・・・。 import scala.util.parsing.combinator.RegexPa…

Scalaはコンストラクタもカリー化できる!の続き

前回記事の続きです。scalaはコンストラクタもカリー化できる! - rabitarochanの日記ブログへのコメントや、Twitterのリプライでいろいろ教えていただきました。 @xuwei_kさん、@kmizuさん、ありがとうございました! 一部の引数を指定したコンストラクタ 一…

Scalaはコンストラクタもカリー化できる!

タイトル通りなのですが、Scalaではコンストラクタもカリー化できます。 scala> class Person(val name: String)(val age: String) defined class Person だからといって、一部の引数を指定したコンストラクタを取得する方法がない (見つけれていない。あっ…

ScalaのClassManifestについてハマった(とりあえず解決)

前回の記事の続きです。ScalaのClassManifestについてハマった(未解決) http://rabitarochan.hatenablog.com/entry/2012/08/31/234855この件について、@xuwei_kさんからTwitterのリプライ、gistへのコメント、forkなどをしていただき、色々教えてもらいまし…

ScalaのClassManifestについてハマった(未解決)

JVMの型パラメータは、型消去によって実現されているため、通常実行時に型パラメータの情報を取得することはできません。ですが、Scalaには「ClassManifest」というトレイトがあり、それを利用することで型消去によって消えてしまった型情報を取得することが…