以下のようなデータ型
final case class Tannen[F[_], G[_, _], A, B](f: F[G[A, B]])
scalaz/Tannen.scala at 7f5bbf571a18e2a29b337da238ab3f286954dd49 · scalaz/scalaz · GitHub
続きを読む以下のようなデータ型
final case class Tannen[F[_], G[_, _], A, B](f: F[G[A, B]])
scalaz/Tannen.scala at 7f5bbf571a18e2a29b337da238ab3f286954dd49 · scalaz/scalaz · GitHub
続きを読む大量と言っても、これ書いてる時点ではまだ3つです。
(実装の共通化のための scalapb-json-common というのを除いて。逆にそれ含めれば4つ)
以前から仕事などでScalaPB使っているわけですが、
続きを読む面白い挙動だけど、さすがに自分が本当に最初に見つけた、というのもなにか違う気もするので、あのScalaパズルの本や、どこかのブログにこれ載っていたりしないんですか?
以下経緯
それで、tweetしていた件
「compiler の bridge に互換なくなった場合でも最低限コンパイル可能なような、インクリメンタルコンパイルを一切行わない、scalacのmainに直接引数渡してコンパイルするだけのモード」
が70行ちょっとのコードで出来たので、貼り付けておきます。
ログの処理とか成功失敗の判断などがとても雑というか、何もしてないですが、全てのオプションをちゃんと渡して、依存ライブラリのpathも渡して(わりと勝手に渡ってくる)、classファイル生成先ディレクトリくらいは正しく設定したので、最低限使えると思ってます。
キャッシュを一切考慮しないので、全くソースファイルに変更がなくても、毎回classファイルをディレクトリ丸ごと削除して全コンパイルします。
ただし、これはあくまで「やってみたらできたので貼り付けておきます」という報告であって、99%のユーザーはこれを実用せずに、sbt 1.0.4で修正される予定らしいのでそのリリースを待てばいいと思います。
https://gist.github.com/xuwei-k/58b082737d564b4720b850045cf7b5a9
続きを読む