kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

Scala Tips

メモリ使用量の削減のために遅延リストを使うのは(多くの場合)アンチパターン

こんばんは。ちょっと久しぶりにScalaの記事を書いてみようと思い立って、こうやって記事を書くことにしました。 といっても、タイトルがほとんど全てを表しているのですけど。 最近のプログラミング言語のいくつかは、俗に遅延リストと称される機能を持って…

Scalaを手っ取り早く学ぶのに適したリソースを紹介する(2020年版)

はじめに こんにちは。水島です。例のQiita炎上の件で、「ああ、これはもう自分向きのサービスじゃないな」と思ってサックリとアカウント消して退会したわけですが、ちょっとこれくらいはレスキューしておけば良かったな…と思った記事があったので、リライト…

Iterator.continually()を使おう

Scalaの標準IOライブラリであるscala.io(.Source)は非常に腐ってます。読み込みしか対応してない上に、バイト列の読み込みもサポートしてないという代物。しかも、Scala 2.7まではscala.io.Sourceがそのままだとcloseできなかったりとか(今はcloseできます)…

ひょっとしたら役に立つかもしれないScala Tips(3) - 無名関数+パターンマッチの略記法

久しぶりのScala Tips。Scalaをそこそこ使っている人でも意外と知らない方が多いようなので、一応。たとえば、以下のようなコードがあったとする(やや恣意的な例だが): List("A", 1, 1.0, true, Nil).foreach{e => e match { case _: Int => println("Int")…

ひょっとしたら役に立つかもしれないScala Tips(2) - パターンマッチングの最適化 -

Scalaのパターンマッチングを用いたコードは、通常は if(...) { ... } else if(...) { ... }のような、上から順に条件を満たしているかをチェックして分岐するコードにコンパイルされるが、色々試して見たところ、整数を対象にしたパターンマッチングの場合…

ひょっとしたら役に立つかもしれないScala Tips(1) - プライマリコンストラクタ引数の隠蔽 -

先週金曜日のScala勉強会@豆蔵で、case classに関して、通常は公開されることを意識してつけないコンストラクタの仮引数名が公開されることになっちゃうので、慎重に名前を決めないといけないよねー、という感じのことをNyaRuRuさんがおっしゃってたのですが…