タグ

ブックマーク / qiita.com/Kory__3 (2)

  • Scala 3 で一般の再帰型を作る - Qiita

    再帰型(英: recursive type)とは、型の定義中にそれ自身の型が出現するような再帰する型のこと。 出典: 再帰データ型 - Wikipedia Scala で一般の equirecursive type を作る方法を述べる。特に、Scala 3 の match type を利用すると equirecursive type がキャスト無しで実現できることを述べる。 再帰データ型 まず、データ型 D が再帰データ型であるとは、 D の定義が D に言及することである。 Scala ではリスト構造を表現するために scala.collection.immutable.List という単方向連結リスト構造をよく使う。List は実際には共変型引数 A を持つ List[+A] として定義されているが、簡単のため A = Int と特殊化し、List[Int] のことを考えてみることにす

    Scala 3 で一般の再帰型を作る - Qiita
    Windymelt
    Windymelt 2023/12/03
    こりーさんの型トークキタ!!!
  • Scala 3 のマクロを使って Minecraft のプロトコルデコーダを自動導出する - Qiita

    諸事情により急に Minecraft のプロトコルを喋る Scala ライブラリが欲しくなった僕は、要求1に合いそうなライブラリが見当たらなかったため仕方なく作ることにしました。 Scala / sbt はそれぞれ 3.0.1 / 1.5.5 を利用します。 今回書いたコードはここに置いています。 Scala 3 のマクロについて Scala 3 でのメタプログラミングで提供されている機構を知らない方は、公式ドキュメントの macro tutorial に目を通すことを推奨します。必要に応じて language reference を参照してください。 この記事で解説するコンパイル時リフレクションは、必要でなければ書かない方が望ましいです。書くことが避けられなさそうな場合は、公式ドキュメントで説明されていないマクロ開発テクニック等を解説している SoftwareMill による記事に目を通

    Scala 3 のマクロを使って Minecraft のプロトコルデコーダを自動導出する - Qiita
    Windymelt
    Windymelt 2023/07/09
    よいマクロの記事だ
  • 1