Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

scala3

Scala 3.6が出たので見所を紹介するよ

Scala 3.6.2が出た!やったー! github.com Scala 3.6.2は、Scala 3.6系の最初の正式なリリースで、数多くの機能が追加された。この記事ではそのうち主要な機能を紹介する。また、正確さよりも分かりやすさを優先してザックリ書いているところがあるので、そ…

Scala 3でクラスフィールドの初期化順の困りを回避できるSafe Initialization機能が便利なので紹介したい

突然だがこのScala 3のコードはコンパイルするだろうか。先に正解を言っておくと「コンパイルする」(Scala 3.5.0)。 class Foo: val x = y val y = 42 では、このFooに向けて以下の呼び出しを行うとどうなるだろう? Foo().x 驚くなかれ、この式は0に評価さ…

Scala 3のsummonって何?

Scala 3にはsummonという関数がある。普段はあまり使うことがないが、知っておくとusingまわりのデバッグにも使えるとても便利なやつだ。この記事ではsummonの便利な利用法を紹介する。 docs.scala-lang.org 型の一致を確認する summonの典型的なユースケー…

Tagged Type(Branded Type)を使って飛行機の不時着や人工衛星紛失を防ごう / Scala 3ではTagged Typeを簡単に作れる

Tagged Type というテクニックがある(TypeScript界隈などではBranded Typeと呼ばれているようだ)。実行時の型としては同じだが、型システム上はこれを区別して別物として扱い、混同できなくする仕組みを作るためのものだ。 AIくん!サムネイラスト作って!…

Scala 3.3.0でunused import/variablesのチェックを有効化するには-Wunused:allを使う

未使用のimportや値を検査するコンパイラオプションとMetalsやScalafixとの関係について調べたメモです。コンパイラまわりの実装を追いきれていない可能性があるため、間違っていたらご指摘いただけると嬉しいです。 かつてScala 2系ではunused importなどの…

AWS LambdaでScala 3をContainer imageで動作させる

先日(といっても結構前のことだが)、Scala 3のLTSサポートバージョンである3.3.0がリリースされた。Scala 3の開発が円熟してきているようで嬉しい。これからも元気でいてね。今回はScala 3をAWS LambdaのContainer imageを使って動作させる手法についてお…

Scala Nativeがいつのまにかシングルバイナリを吐けるようになっていた

ScalaをネイティブコンパイルしてJVM無しで実行ファイルとして動かせるようにする仕組みであるScala Nativeが、いつのまにかシングルバイナリを出力できるようになっていた。これにより、Goと同じように1つのバイナリさえコピーすればScalaを動かせる環境が…

Scala 3のimport構文のワイルドカードは_ではなくて*になっている

Scala 3には大きな構文上の変更、例えばimplicitまわりが整理されてgivenなどに変化したりしている一方で、細やかな機微にわたる変更も含まれている。今回説明するimport構文上のワイルドカード記号の変更もその一部。 Scala 2では、あるパッケージに属する…

Scala 3.3.0から標準で使えるようになるfewerBraces記法のまとめ

先日、Scala CLI v1.0.0がついにリリースされた。これまではv0系列だったので、満を持しての正式版リリースだ。おめでとう! github.com いちおう説明しておくとScala CLIは総合的なScalaのコマンドラインツールで、以下のようなことができる: Uber JAR(単体…

Scala 3は普通にAWS Lambdaで実行できる

そういえばScalaをAWS Lambdaで実行するのどうするんだっけ、と思った。実はScalaをLambdaで動かしたことは無い気がするので調べておいた。今回はJava 17を前提に動作させる。 tl;dr AWS LambdaのJavaランタイム sbt-assembly sbt-assemblyへの依存性の宣言 …

Scala3のUnion Types / Intersection Typesを試してみた

Scala3チャレンジをする記事の二本目。 前回はこちら。 blog.3qe.us ソースコードは以下に置いてある。 github.com github.com Union Types Eitherとの違い Discriminated Union Typesもどき Intersection Types まとめ MathJax v3以降ではbussproofs.styが…

Scala3のOptional Bracesを試してみた

ちびちびScala3に生えた新機能の実際に使ってみるチャレンジをやっている。いつの日かチームに導入できたら嬉しいね、とか、自分で使いこなせるようになると嬉しいね、というモチベーションである。 今日はOptional Bracesについて勉強した。ソースコードは…

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?