読者です 読者をやめる 読者になる 読者になる

( ꒪⌓꒪) ゆるよろ日記

( ゚∀゚)o彡°オパーイ!オパーイ! ( ;゚皿゚)ノシΣ フィンギィィーーッ!!!

scala

Typolevel Scala Compiler

最近Scala Complierをforkするのが流行っているようですね。 paulp/policy · GitHub typelevel.scala | Typelevel Scala and the future of the Scala ecosystem 「俺のコンパイラか?欲しけりゃくれてやる、探せ!この世の全てをそこにおいてきた!」 男達…

Scala2.10.0のDependent method typesと型クラスを組み合わせた『The Magnet Pattern』がヤバい件

これが……型の力かッ……!!spray | Blog » The Magnet Patternという記事で、「The Magnet Pattern」というデザインパターンが紹介されている。 これは、メソッドオーバーロードで解決していた問題を、型クラスとDependent method typesを組み合わせて置き換え…

Freeモナド in Scala

噂のFreeモナドをScalaで写経してみた。 Freeモナドは、取り込む型SのFunctorと組み合わせて、Functorの特性に応じたモナドを得ることができるものらしい。 そろそろFreeモナドに関して一言いっとくか - fumievalの日記 Freeモナドって何なのさっ!? - capr…

Scalaにおける型パラメータの部分適用 [({type F[X] = G[A,X]})#F] について

Tumblrから出戻ってきました。8/4のLL DecadeのLT大会に出るのでぜひお越しください。さて、モナってますか? scalazなどでよく出現する[({type F[X] = G[A,X]})#F]のようなコードですが、これが何を意味しているのか最近やっと理解できたので、久しぶりにSca…

関数適用のススメ 〜 オブジェクト指向プログラマへ捧げる関数型言語への導入その2

こんにちわ。今日は、関数適用の話をします。 前回のエントリで、「メソッドチェーンと違いがよくわからない」という指摘をもらったり、なんかスゴイSmalltakerから黒魔術を駆使したトラックバックをもらったりしたので、もう少し前回のエントリの意図すると…

関数合成のススメ 〜 オブジェクト指向プログラマへ捧げる関数型言語への導入その1

こんにちわ。今日は、関数合成の話をします。 標準入力から何行か読み込んで、ソートして返す以下のようなScalaのコードを例にします。 例なので、あえて冗長なコードを書いてます。 このコードでは、4つの関数が用意されています(unlines/putstr/sort/lines…

Scalazを簡単に試してみるための"scalaz-playground"というプロジェクトを作った

yuroyoro/scalaz-playground · GitHubタイトルの通りで、このリポジトリをcloneして、"sbt console"と入力汁。 ozaki@mbp-4 $ git clone https://github.com/yuroyoro/scalaz-playground.git [~/sandbox/.../yuroyoro/work] Cloning into 'scalaz-playground…

Scalaプログラマレベル(アプリケーション/ライブラリ)[翻訳]

Scalaの難易度とか学習曲線について、最近また議論されてるようですが、公式にはこのようなレベル分けになってますよ。Scala levels: beginner to expert, application programmer to library designer | The Scala Programming Language アプリケーションプ…

ほとんど使われていないマニアックな機能「事前定義 (Early Definitions)」- Scala Advent Calendar jp 2011 Day 5

このエントリは Scala Advent Calendar jp 2011 の5日目です。Scalaやってる人なら一度はScala言語仕様に目を通したことがあると思います無いとは言わせない。この言語仕様を見ると、たまに思いもよらない発見があったりしますが、その中でほとんど利用され…

寝てる場合じゃねぇ!(Scala)

寝てる場合じゃねぇ! - プログラマーの脳みそScalaだとコンパイラ騙さなくても言語がサポートする機能でふつーにできるし。 object NoSleep extends App { trait Sleepy[A] { def sleep(n:Long):Unit } implicit val hoge = new Sleepy[Nothing]{ def sleep…

第一回 Scala会議で発表したUnfiltered/Finageの資料

第一回 Scala会議 - [PARTAKE] で発表した内容です。20110828_ScalaConf01_introducing_Unfiltered_and_Finagle

BPStudy#49 秋のScala祭りでFinagleについて発表した資料

BPStudy#49 : ATND で発表した資料です。20110930_BPStudy49

ドワンゴ社内 scala勉強会 で「クリエイティブで高品質なScalaプログラマになるための10のTips」 という発表をした

ドワンゴ社内 scala勉強会 - ニコニコ生放送での発表資料。20111120_Dwango_scala

Scala2.10に文字列中の\{ _ } で式展開する機能が入るかも?

以下の記事で紹介されているが、Scala2.10の実験的な機能として、 このコミットにより、 文字列中の式展開が入るかもしれない。 Algorithmically challenged: String Interpolation on 2.10? 式展開とは、Rubyでは"foo #{hogehoge}"のように文字列中に式を埋…

ScalaでFibBuzz

解いてみた。他の言語と違って、fib(92)以上はLongに収まらないのでBigIntを用いなければならないところがまずツラい。あとprintln長すぎる。 最初はStreamを使ってfibを定義した。 // 163bytes val x:BigInt=1 val f:Stream[BigInt]=x#::f.scanLeft(x){(a,b…

ᗅᐷᒷᐷᕕᐷᔹᐓᕀᐓᕶᐓᕌᐓ (謎言語ウキャス)

ᙐᐨᘍᐨ、ᓽᐓᔦᐓᓻᐓᓽᐓᓢᐓUnihanGridᔥᐓᗩᐯᔔᐓᓹᐓᘃᐹᔦᐓᓺᐓᓲᐓᔦᐓᓳᐓᓤᐓᓼᐓ、U+1400 ᓞᐓᔜᐓ U+16FF ᔑᐓᓺᐓᔁᐓᖯᐨᕻᐤᓟᐓᓕᐓᔑᐓᔝᐓᓾᐓᕂᐓᖏᐓᕾᐓᓺᐓᓗᐓᔠᐓᓗᐓᔠᐓᓻᐓᙀᐴᓛᐓᐦᐫᓾᐓᓰᐓᓙᐓᓾᐓᓽᐓᓶᐓᓲᐓᔁᐓᓺᐓᓬᐓ。 Unihan Index for U+1400 through U+14FF Unihan Index for U+1500 through U+15FF Unihan Index for U+1600…

「俺が本当のScalaの怖さを教えてやる」 −− "型レベルプログラミング in Scala"翻訳中

型レベルプログラミング in Scala(Type-Level Programming in Scala) — Japanese translation of Apocalisp v1.0 documentation

「Scala実践プログラミング」が6/16日に発売されるので、モナドについて大変わかりやすく解説してある「モナドは象だ」を翻訳してみたのでみんなヨロシクって言いたい

日本語でおk Scala実践プログラミングposted with amazlet at 11.06.12秀和システム 売り上げランキング: 665Amazon.co.jp で詳細を見る 目次とかは内容については、 モテるScala女子力を上げたい人向けにScalaの本が出ます。 - ゆろよろ日記をみてください…

プログラミング言語「ほむほむ」

なんか、極めると「ほむほむ」だけで会話できるみたいですね? 俺はまだそこまでの域には至ってないんですが、「ほむほむ」だけでプログラミングできたらステキですよね?そこで、ちょっと草植えときますね型言語 Grassを元にして以前作ったプログラミング言語…

Scalaでmethod_missing的なことができる"applyDynamic"を使って"Term::ANSIColor"みたいなの作った

Scala2.9から、DynamicってのでRubyのmethod_missing的なことができるようになる.....ハズだったんだが、 2.9正式リリースの数時間前にいきなりこの機能はサポートされなくなった。 といっても全く使えなくなったわけではなく、scalacやscalaコマンドに-Xexp…

Scala2.9から導入されたバイナリ互換性確保のためのbridgeアノテーションについて調べた

InfoQのScala2.9リリースの記事を読んでいて、Scala2.8から2.9へのバイナリ互換性確保のための方法について、こんな記述があった One such technological solution are compiler generated forwarders, so-called bridge methods, which delegate calls from…

Scala Interpreter Hacks!! ―REPLを組み込んだりevalしたり

最近REPLをHackするのが流行ってるみたいなんで俺もやってみた。scala.tools.nsc.interpreter.{IMain, ILoop}あたりのソースコードを読めば大体分かるよ。 REPLをコードに組み込む これは結構簡単で。scala.tools.nsc.interpreter.ILoopを作ってやればよい。…

implicit conversionを定義する際に最低限チェックすべきこと

軽くイラッ☆っとしたので書く。 Scalaにはimplicit conversionってのがあってまぁ知らないならググれ。で、implicit conversionを定義する際に、最低限チェックすべきたったひとつのことを書く。 「scala.Predefでimplicit conversionが定義されている型に対…

Java SE 7 - Project Coinの整数リテラル区切り文字をScalaにも

Java SE7も Developer Preview Releaseが出てもうみんな当然のように入れてると思います。 で、JavaSE7に入るProject Coinに、整数リテラル区切り文字ってのがあります。ようは、数値リテラル中で"_"による区切りを入れることを許すって仕様です。 int a = 1…

モテるScala女子力を上げたい人向けにScalaの本が出ます。

秀和システムさんからScalaの本が出ます。発売は多分6月くらいです。 "オープンソース徹底活用"シリーズとして、Scalaをより実践的に使うための色々な事を盛り込みました。タイトルはまだ未定です。 @kmizu, @ryugate ITプランニングさんから(@osiire @keigo…

Scalaの無限リスト(Stream)でいろいろと

宇宙に始まりはあるが、終わりはない。 ――無限

ScalaでRubyのObject#tapがぽぽぽぽ〜ん。っていうかいつでもmapしたい

「まほうのこーどで♪ たのしい♪ れいがいが♪ ぬるぽぽ〜ん♪ 」 作ってみた。 // 入れ物はタッパーです。 trait Tapper[A] { val obj:A // RubyのObject#tap的な。引数fに自分自身を適用させて自身を返す。 // 副作用専用メソッド。nullだったらなにもしなー…

書評:プログラミングScala - The Python Paradox is now the Scala Paradox

オライリージャパン様より献本頂きました。読了したので、感想など書いてみたいと思います。 プログラミングScalaposted with amazlet at 11.02.19Dean Wampler Alex Payne オライリージャパン 売り上げランキング: 69951Amazon.co.jp で詳細を見る The Pyth…

Wicket1.5で導入されるNew Event SystemをScalaでエロガントに実装する

もう2週間以上前にもなりますが、Wicket勉強会 2011-01 : ATNDに行ってきたんですよ。 そこでWicket1.5からNew Event Systemってのが導入されてこれはScalaと相性いいんじゃね?みたいな 話になって、そりゃ俺に対して振ってるんだな、と思って書いてみました…

(皿うどん)Structural Subtyping(構造的部分型)アレコレ

このまえ、夢の中でね、あるコレクションの中から特定のシグニチャを持つオブジェクトをより分けるようなコード書いてる夢見たんですよ。ええ、見たんです夢で。 で、ふと目が覚めて(深夜3時半)おもむろにREPLでいろいろやってみた結果を書こうと思います。…

(もりそば)Scalaによる高階型変数 - Higher-kind Generics

「ハイヤーーーーーッッ!!!」 と気合いを入れたところで、今日はScalaのコレクションライブラリで多用されている、Higher kind genericsについて軽く解説したいと思いハイヤーーーーーッッ!!! Higher-kind Generics(type constructor parameter)って? …

Scalaのバージョンを簡単に切り替えられる"svm"ってヤツ作った (冷やし中華終わりました)

まぁタイトルの通りなんですが(冷やし中華は終わってます)、RubyだったらrvmとかPythonだったらvirtualenvとか、使うバージョン切り替えられるヤツあんじゃないスカ? Scalaでもあったらいーなーと思ってシェルスクリプトで書きました。Scalaの場合は、依存ラ…

Scalaのtrunkをビルドする

「あばばばばばばばば」この記事は、Scala Advent Calendar jp 2010 : ATNDの17日目です。 今日は、Scalaそれ自身をソースからコンパイルする方法を紹介します。やりかたは簡単で、Scalaのソースコードを持ってきて、antコマンドでビルドするだけです。 Scal…

JRebelを使った動的クラスリローディング

「あばばばばばばばば」 はい、この記事は、「じゃば あばばばば かれんだー - 邪 2010」の9日目、12/21日のものですのよ? 昨日は、id:nekopのBytemanによるJava黒魔術 - nekopの日記でした。このBytemanが利用している「Java(TM) java.lang.instrument」を…

自動的に閉じるSource

テキストファイルをオープンして内容を出力する - ブログタイトル入力 を読んで。 自分ならLoanPattern使ってこう書くかな? type Closable = { def close():Unit } def using[A <: Closable,B]( resource:A )( f:A => B ) = try { f(resource) } finally { resource.close } こんなかんじで使う。</:>…

Scalaの抽象構文木(abstract syntax tree、AST)をグラフィカルに表示するオプション

「そんなASTで大丈夫か?」 ということで、ほとんどの言語はプログラムの内部表現として抽象構文木(abstract syntax tree、AST)を作ると思います。Scalaももちろんコンパイルするときに作ります。 で、Scalaコンパイラが生成してるASTを見るオプションがあ…

「HTMLスクレイピング in Scala」を改造しながら俺流Scalaコーディング手法を紹介してみる

短い中にいろいろなエッセンスが詰まったよいサンプルだと思ったので、id:noire722さん(@noire722)が書いた「HTMLスクレイピング in Scala」を、俺流に書き直してみました。 HTMLスクレイピング in Scala その2 - cignoir の日記 書き直す過程でどういう考え…

Scalaで&lt;:&lt;とか=:=を使ったgeneralized type constraintsがスゴすぎて感動した話

Scala2.8から、Predefに

Scala座#01で「これまでのScala これからのScala」という発表をしたんだぜ

名古屋で開催された第一回Scala座に酸化してきました。 俺は最初の発表で、「これまでのScala これからのScala」というタイトルでScalaの紹介とか2.8で追加された機能とかScalaの今後とかcase classと寧々さんとか#librabackとかについて話しました。 これま…

ATNDでTwitter連携を設定している人のTwitterIDを抜き出すスクリプト書いたよ

ATNDがTwitterと連携できるようになりましたね。そこで、イベントの参加者のTwitterIDを抜き出すスクリプト書きましたよ。 object ATNDEventTwitterList { def main( args:Array[String] ) = { args.headOption.foreach { eventId => ATNDApi.event( eventId…

LL TigerのLanguage UpdateでScalaの話をしてきました

はい こんにちわ。ゆろよろです。LL TigerのLanguage UpdateでScalaの話をしてきました。スライドはこちらっす。 20100731 LL Tiger Language Update ScalaView more presentations from yuroyoro. 2.8.0.finalでの機能追加について詳しく説明してもよかった…

Scalaでの例外処理 - Either,Option,util.control.Exception

今日はScalaの例外処理について解説しますよ。 基本 - try,catch,finally 例外処理の基本は、try,catch,finallyです。これはJavaと同じですね。 ただし、Scalaでのtry,catch,finallyは値を生成します。つまり、実行されたブロックの値が評価されます。 scala…

ScalaのOptionステキさについてアツく語ってみる

今日は、ScalaのOptionの使い方について解説しますよ。OptionはScala使いにとってはなくてはならないものです。これを覚えてしまうと他の言語でもOptionを作りたくなる、かもしれない? Optionってなに? Option型は、値があるかないか分からない状態を表すも…

パターンマッチをもっと便利に - extractor(抽出子)による拡張

パターンマッチは便利すぎてこれを覚えてしまうと他の言語でも欲しくてたまらなくなりますね。 Scalaのパターンマッチは、実はユーザーが独自のパターンを定義することが可能になっています。 extractor(抽出子)によるパターンの拡張 簡単な例を紹介します。…

Scalaの奇妙なFizzBuzz - PartialFunctionとimplicit conversionを添えて

前回書いたPartialFunctionの利用例として、奇妙なFizzBuzzを書いてみましたよ。 // PartialFunction[A,B]を "A --> B"のように書けるようにしておく type -->[A,B] = PartialFunction[A,B] // FizzBuzz用のPartailFunctionを生成するユーティリティ def toP…

ScalaのPartialFunctionが便利ですよ

Scalaには、PartialFunctionというものがあります。 直訳すると部分関数ですが、これはなにかっていうと「特定の引数に対しては結果を返すけど、結果を返せない引数もあるような中途半端な関数」です。 どうやって使うのん? まぁ、ちょっと例を見てましょう…

プログラミング言語 「天使ちゃんマジ天使」と「ブブゼラ」を作ってみたよ

今AngelBeats!見てます。天使ちゃんマジ天使でいいと思います。 で、だいぶ前に作ったScala版のちょっと草植えときますね型言語 Grassを改造して、プログラミング言語 「天使ちゃんマジ天使」とプログラミング言語 「ブブゼラ」を作ってみたよ。 Grassは、id…

1階マルコフ連鎖で奇声を発するジェネレータ

今日は、とうとつについったーに奇声をポストしたい気分だったので、1階マルコフ連鎖で奇声を生成するジェネレータを書いてみました。 奇声なんで意味のある文章ができなくても充分なので、1階マルコフ連鎖で充分。マルコフモデルを研究していた元首相のご意…

ついったーのStreaming API ChirpUserStreamとWebSocketを組み合わせてみた

最近の流れでは、時代はHTML5なんですかね? そんなわけで、前にちょっとやってみたJetty7のWebSocketと、ついったーのStreaming API ChirpUserStreamを組み合わせて簡単なWebベースのついったクライアントを書いてみました。 スクリーンショット: 動いている…

GAE/JでのScalaのSpinUp時間を計ってみた

GAE/JでのScalaのSpinUp時間を計ってみました。appengine ja night #6 Beer Talk : ATNDでLTしたときに言っちゃいましたのでね。 java-ja温泉第2回の成果その1ですお。 測定方法 測定パターンは以下の4パターンです。 simplescala Scalaで書いた単純なFilter…