Scala

Scalaのnull/Nothing/Nil/Noneはやりすぎなのか?

Twitterしてたら目に入ったので軽く。 Javaにおけるnull。これまでとこれから この後のスライドで、 Scalaにおける「何もないもの」の分類はやり過ぎ感はある と言われているんですが、ある程度は誤解に基づく意見だよなぁこれは、ということを言っておこう…

C# 使いから見てうらやましい Java8 の default 実装の使い方

Java8 から追加されるインターフェイスの default 実装ですが、C# の拡張メソッドに似てますよね。 実際、このどちらも「シンインターフェイス」を定義するだけで「リッチインターフェイス」が手に入ります。 しかし、C# の拡張メソッドと Java のインターフ…

わかめのモナ化で色々やってきた

わかめのモナド浸し - connpassハンズオンの前座として、Maybe モナドと State モナドの解説をしました。 モナドハンズオン前座 from bleis tift 発表も資料も割と好評なようで、「モナドの教え方」みたいなものの感覚もつかめたので発表してよかったです。 …

サンタクロース問題

このエントリは Scala Advent Calendar jp 2010 : ATND の 24 日のものです。 前日に id:mzp (mzp さん) から「サンタクロース問題というのがあってね」という話を聞いたので、イヴだしやってみることにしました。ネタの提供ありがとう! サンタクロース問題…

第 8 回 名古屋 Scala 勉強会

id:papamitra (papamitra さん) の、確かこんなコード implicit def func2Runnable(f: () => Unit): Runnable = new Runnable { override def run() { f() } } が印象的でした。これはいいですね。素晴らしいです。 こういう implicit def を用意しておけば…

タプルを分解して渡す

Scala ではタプルをパターンマッチで分解してくれるので、タプルが非常に使いやすいです。 しかし、C# にはパターンマッチがないので、いちいち Item1 やら _1 やらでアクセスする必要があります。 例えば、 var strs = new[] { "aaa", "bbb", "ccc" }; var …

TypeMatch (邪悪です)

先週末の名古屋 Scala 勉強会用に、こんなコードを書きました。 2 行目からの ObjectExtension クラスで、object に対して拡張メソッドを追加しています*1。 このときは Cast という名前にしましたが、これは TypeMatch という名前にして、 e.TypeMatch( (Va…

Scala すごい。C# は残念。

今日会社で、 using System; class Foo {} class Bar {} class Hoge { internal static Foo M(Func<int, int> f) { return null; } internal static Bar M(Func<string, string> f) { return null; } } class Piyo { internal static void A(Foo f) { Console.WriteLine("Foo"); } inte</string,></int,>…

+ とか -

昨日のエントリの「演算子に対応する名前」で + や - に対応する名前は Add や Subtract よりも Plus や Minus の方がいいと書いたけど、Scala ではどうなってるのか試してみた。 scala> def +-(){} $plus$minus: ()Unit おぉ、plus と minus になってますね…

null でメソッドを起動する

Scala では演算子もメソッドとして実装されていて、obj1 op obj2 なんてコードは、obj1.op(obj2) と同じ意味を持つ。 となると、気になってくるのは obj1 が null の場合どうなるのよ?ってことで・・・色々と試してみた。 scala> null == null res0: Boolea…

if 式

Scala では if は文じゃなくて式なので、値を持つ。 じゃぁ else がなかったらどうなんの?ってことで試してみた。 scala> if (true) 1 scala> ・・・えーっと? scala> val res = if (true) 1 scala> res scala> println(res) () ・・・Unit を返すらしい。…

Scala で条件演算子を作ってみる

コップ本を大体読み終わったので、とりあえず Scala の環境を入れてみた。 バージョンは 2.7.7 らしい。 で、Scala で三項演算子。ここでは、他の言語でよくある条件演算子をまねて作ってみた。 条件演算子なら if 式使えよ、って話だけど、まぁ練習というこ…