scala

Emacs+MetalsでScalaのデバッガを使う

こういう話がありました。 Feature Request : Support for scala in dap-mode · Issue #196 · emacs-lsp/dap-mode を見てもdap-modeの使い方がよく分からなかったし別に時間をかける所じゃないなと思ったので、デバッグする時だけはIntelliJを使うことにしよ…

なぜ型ファーストで考えるのか

よく型なし vs. 型付の文脈では「型を書くのは面倒だ」「安全の方が大事だ」「でも面倒だ」「それは型推論を前提にしていないからだ」などの議論になりがちな気がしますが、これはあくまで「計算ありきの型」を考えているからで, 「型ありきの計算」だと全く…

LSP時代のScala開発環境: Metals, Bloop (on Emacs / lsp-mode)

これまでScalaでの開発にはENSIMEを使ってきたけど, もうそろそろ頃合いだとおもうのでMetalsに乗り換えた. エディタ側でLSPのサポートが充実してきているのでこれはだいぶ簡単で, さっくり乗り換えることができた.Metalsはビルド部分は裏側でBloopを使って…

正規表現の名前つきキャプチャを便利にする

Java 7から正規表現で名前つきキャプチャが使えて, Scalaのscala.util.matching.Regex.Matchでもそれに相当する機能がある(インタフェースや実装はJava標準のものとは別)けれど, ちょっと不便なところをどうにかしているうちに, インデックスによるキャプチ…

bullet-scala: N+1クエリ問題を回避する

Scala関西 Summit 2015での発表で触れていたN+1クエリ問題をなんとかするためのライブラリを公開した.発表は以下のもので, ここでは「関係モナド」という名前で紹介していたけれど, これは口頭でも説明したように便宜上てきとーにつけた名前であって, とくに…

Scalaで型レベルのラムダ計算

新しい言語をさわったらとりあえずラムダ計算のインタプリタを実装するよね! Scalaでふつうにラムダ計算のインタプリタを実装するのはあまりに簡単*1なので, 型レベルでやってみた.まじめな話をしておくと, C++のテンプレートがチューリング完全なのは有名な…

Scalaで生SQL - SlickのSQL補間子にリストを渡す 他

ScalaでSQLを書くのにSlickで便利にやる話. Slickでは生SQLを補間子(sql"...")で書けるけれど, リストが渡せなくてWHERE column IN ($list)できなかったり, 他にもいくつか不便なところがあったのでなんとかした. 最近になってScalaを書き始めたのでScala力…