Your SlideShare is downloading. ×
0
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
Scala Macros makes it easy to provide useful libraries
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,335

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,335
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  

×