Submit Search
Upload
Scala Macros makes it easy to provide useful libraries
•
7 likes
•
1,893 views
Kota Mizushima
Follow
A short introduction to Scala Macros usable from Scala 2.10
Read less
Read more
Report
Share
Report
Share
1 of 17
Download now
Download to read offline
Recommended
Scalaの限定継続の応用と基本(改訂版)
Scalaの限定継続の応用と基本(改訂版)
Kota Mizushima
こわくない型クラス
こわくない型クラス
Kota Mizushima
Scalaの現状と今後
Scalaの現状と今後
Kota Mizushima
Introduction to PEG
Introduction to PEG
Kota Mizushima
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
Naoyuki Yamada
kollectionの紹介
kollectionの紹介
Kota Mizushima
Scalaノススメ
Scalaノススメ
Yasuyuki Maeda
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
Kei Nakazawa
Recommended
Scalaの限定継続の応用と基本(改訂版)
Scalaの限定継続の応用と基本(改訂版)
Kota Mizushima
こわくない型クラス
こわくない型クラス
Kota Mizushima
Scalaの現状と今後
Scalaの現状と今後
Kota Mizushima
Introduction to PEG
Introduction to PEG
Kota Mizushima
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
AWSからOpenStack, Chef SoloからChef Serverに インフラを置き換えた事例の紹介
Naoyuki Yamada
kollectionの紹介
kollectionの紹介
Kota Mizushima
Scalaノススメ
Scalaノススメ
Yasuyuki Maeda
ScalaでASICやFPGA用の回路を設計するChisel
ScalaでASICやFPGA用の回路を設計するChisel
Kei Nakazawa
Scalaの現状と課題
Scalaの現状と課題
Kota Mizushima
RcppEigen and SVD
RcppEigen and SVD
Xiangze
Scalaプロダクトのビルド高速化
Scalaプロダクトのビルド高速化
kuro kuro
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
Taisuke Shiratori
Scala.jsはじめました!
Scala.jsはじめました!
K Kinzal
rpscala35-scala2.9.0
rpscala35-scala2.9.0
Kenji Yoshida
Start-padrino
Start-padrino
Uchio Kondo
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
Shin Sekaryo
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
chibochibo
Metaprogramming
Metaprogramming
Akura Pi
Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)
Hideaki Tarumi
TypeScript超入門
TypeScript超入門
Narami Kiyokura
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
Scala Performance Tuning Tips
Scala Performance Tuning Tips
Kota Mizushima
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
Scala web framework比較
Scala web framework比較
Yoshiteru Takeshita
ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
Kota Mizushima
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状
Kota Mizushima
More Related Content
Similar to Scala Macros makes it easy to provide useful libraries
Scalaの現状と課題
Scalaの現状と課題
Kota Mizushima
RcppEigen and SVD
RcppEigen and SVD
Xiangze
Scalaプロダクトのビルド高速化
Scalaプロダクトのビルド高速化
kuro kuro
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
Taisuke Shiratori
Scala.jsはじめました!
Scala.jsはじめました!
K Kinzal
rpscala35-scala2.9.0
rpscala35-scala2.9.0
Kenji Yoshida
Start-padrino
Start-padrino
Uchio Kondo
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
Takuya Iwatsuka
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
Shin Sekaryo
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
chibochibo
Metaprogramming
Metaprogramming
Akura Pi
Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)
Hideaki Tarumi
TypeScript超入門
TypeScript超入門
Narami Kiyokura
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Tomoharu ASAMI
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
takezoe
Scala Performance Tuning Tips
Scala Performance Tuning Tips
Kota Mizushima
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
Scala web framework比較
Scala web framework比較
Yoshiteru Takeshita
Similar to Scala Macros makes it easy to provide useful libraries
(20)
Scalaの現状と課題
Scalaの現状と課題
RcppEigen and SVD
RcppEigen and SVD
Scalaプロダクトのビルド高速化
Scalaプロダクトのビルド高速化
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
Scala.jsはじめました!
Scala.jsはじめました!
rpscala35-scala2.9.0
rpscala35-scala2.9.0
Start-padrino
Start-padrino
Scalaでのプログラム開発
Scalaでのプログラム開発
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
SpringOne 2016 報告 Reactive APIの設計・実装・使用
SpringOne 2016 報告 Reactive APIの設計・実装・使用
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
ビッグじゃなくても使えるSpark Streaming
ビッグじゃなくても使えるSpark Streaming
Metaprogramming
Metaprogramming
Futureのおまじないを理解する(LT)
Futureのおまじないを理解する(LT)
TypeScript超入門
TypeScript超入門
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
Scala Performance Tuning Tips
Scala Performance Tuning Tips
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Scala web framework比較
Scala web framework比較
More from Kota Mizushima
ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
Kota Mizushima
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状
Kota Mizushima
Macros in nemerle
Macros in nemerle
Kota Mizushima
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -
Kota Mizushima
Power of Scala
Power of Scala
Kota Mizushima
こわくないScala
こわくないScala
Kota Mizushima
Scala is-unscared
Scala is-unscared
Kota Mizushima
About Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and Borrowing
Kota Mizushima
Scala + Finagleの魅力
Scala + Finagleの魅力
Kota Mizushima
日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足
Kota Mizushima
Implicit Implicit Scala
Implicit Implicit Scala
Kota Mizushima
Implicit Explicit Scala
Implicit Explicit Scala
Kota Mizushima
言語アップデート -Scala編-
言語アップデート -Scala編-
Kota Mizushima
Scalaz
Scalaz
Kota Mizushima
ScalaのソースをEclipseでビルドしてみた
ScalaのソースをEclipseでビルドしてみた
Kota Mizushima
Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本
Kota Mizushima
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
帰って来たNemerle
帰って来たNemerle
Kota Mizushima
Scala Daysに行ってみて
Scala Daysに行ってみて
Kota Mizushima
Javaバイトコード入門
Javaバイトコード入門
Kota Mizushima
More from Kota Mizushima
(20)
ドワンゴにおける新卒エンジニア向けScala研修について
ドワンゴにおける新卒エンジニア向けScala研修について
株式会社ドワンゴにおけるScala教育の現状
株式会社ドワンゴにおけるScala教育の現状
Macros in nemerle
Macros in nemerle
Scala Daysに行ってみて - あるいはスイス旅行記 -
Scala Daysに行ってみて - あるいはスイス旅行記 -
Power of Scala
Power of Scala
こわくないScala
こわくないScala
Scala is-unscared
Scala is-unscared
About Capabilities for Uniqueness and Borrowing
About Capabilities for Uniqueness and Borrowing
Scala + Finagleの魅力
Scala + Finagleの魅力
日本Scalaユーザーズグループ発足
日本Scalaユーザーズグループ発足
Implicit Implicit Scala
Implicit Implicit Scala
Implicit Explicit Scala
Implicit Explicit Scala
言語アップデート -Scala編-
言語アップデート -Scala編-
Scalaz
Scalaz
ScalaのソースをEclipseでビルドしてみた
ScalaのソースをEclipseでビルドしてみた
Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本
メタプログラミングって何だろう
メタプログラミングって何だろう
帰って来たNemerle
帰って来たNemerle
Scala Daysに行ってみて
Scala Daysに行ってみて
Javaバイトコード入門
Javaバイトコード入門
Scala Macros makes it easy to provide useful libraries
1.
Scala Macros makes
it easy to provide useful libraries (short version) 水島 宏太 日本Scalaユーザーズグループ
2.
Self Introduc;on •
水島 宏太 – Twi>er: @kmizu – Github: h>ps://github.com/kmizu/ • 株式会社ユビレジ • LOVE • (プログラミング|形式)言語 • 性的型付け • メタプログラミング • Scala
3.
Scala Conference 2013
• 時期:2013年3月上旬予定 • 会場:東工大 大岡山キャンパス • 募集定員:200名見込み • 海外(TypeSafe)からのゲストスピーカー
4.
Current Status of
Scala • 開発体制:githubを使ったオープンな開発 – h>ps://github.com/scala/scala – リポジトリをfork -‐> pull request が基本 • 最新安定版: Scala 2.9.2.final • 開発版:Scala 2.10.0 Milestone 7 – もうすぐRCが出るとか出ないとか
5.
Scala 2.10 •
いろんな機能が入るよ! – String interpola;on – マクロ – type Dynamic (2.9.1から仕様変更) – リフレクションライブラリ • 高度な機能は明示的にimport! – import language.experimental.macros
6.
A>en;on • リリース時には細部が変わってるかも
• ↓を主に参考 • Scala 2.10.0 M7の実装 • SIP-‐16: Self-‐cleaning macros – 現在の実装に一部追従していない – リリース時には直されてるといいなあ
7.
SIP-‐16 Self-‐cleaning macros
• Scalaマクロの提案書 – Nemeleに強く影響を受けた • Status: Postponed to A Future Release – Scala 2.10に入るのは実験実装 • quote/unquote/splice/eval相当の機能 • マクロの分割コンパイル • マクロで扱う式は型を持つ: Expr[T]
8.
Scala Macros Has
not • マクロのための特別な構文 • quote, unquote等 => 通常のマクロ扱い • Hygienicマクロ • 自分でgensym(相当)してね • Readerマクロ <= 構文の見た目を変えられる
9.
Scala Macros
VS. Nemerle Conciseness Hygiene Typing Flexibility Scala △ △ ○ △ Nemerle ○ ○ △ ○
10.
Sum Up in
One Word • 目新しいものではない • 実装コストは安い • Scalaでフツーのマクロが使える – いくつかのコードジェネレータが不要になる – 実行時オーバーヘッド無しで新構文が追加可能 • 無名関数の生成、名前渡し引数が必要な場面
11.
Basic Example
12.
Applica;on of Scala
Macros • O/Rマッパー: SLICKS • Web App フレームワーク • 基本ライブラリ – 実行時コストが重要な汎用ライブラリ – 無名関数の生成を避けられる可能性 • コンパイル時の文字列チェック
13.
SLICKS • 汎用データクエリフレームワーク
• h>ps://github.com/slick
14.
Current Limita;ons •
IDEの追従(補完等)が不完全 ※編集・コンパイルは問題ない • 同一コンパイル単位のマクロを呼べない – マクロライブラリは別にjarを作っておくなど • 式でないものを直接引数に渡せない – aMacro ((val I = 0), …) はNG – 面倒な制限:無名関数などによる回避が必要
15.
What I didn’t
Say • ジェネリックマクロとTypeTag • リフレクションAPIとの関係 • Hygienicマクロ • その他
16.
Conclusion • Scala
2.10で入るマクロがアツい…か? • 割とフツーのマクロ(地味にうれしい) • 記述がちょっと冗長 • experimentalなので今後の改善に期待
17.
Demo
Download now