Your SlideShare is downloading. ×
Scala Macros makes it easy to provide useful libraries
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Scala Macros makes it easy to provide useful libraries

2,266

Published on

A short introduction to Scala Macros usable from Scala 2.10

A short introduction to Scala Macros usable from Scala 2.10

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,266
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
0
Likes
7
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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  

×