Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Capability Safe Reflection for the Wyvern Language, Esther Wang
Search
Meta Workshop
October 30, 2016
Research
0
600
Capability Safe Reflection for the Wyvern Language, Esther Wang
Meta Workshop
October 30, 2016
Tweet
Share
More Decks by Meta Workshop
See All by Meta Workshop
AST Specialisation and Partial Evaluation for Easy High-Performance Metaprogramming, Chris Seaton
meta
0
690
Implementation of LMNtal Model Checkers: A Metaprogramming Approach, Yutaro Tsunekawa
meta
0
630
Virtual Values for Taint and Information Flow Analysis, Thomas H. Austin
meta
0
520
Evolution of Metaprograms: XSLT as a Metaprogramming Language, Vadim Zaytsev
meta
0
470
Declaratively Specifying Security Policies For Web Applications, Angel Luis Scull Pupo
meta
0
420
ChromaKey: Towards Extensible Reflective Architectures, Pablo Inostroza
meta
0
300
Other Decks in Research
See All in Research
Rの機械学習フレームワークの紹介〜tidymodelsを中心に〜 / machine_learning_with_r2024
s_uryu
0
240
Combating Misinformation in the age of LLMs
teacherpeterpan
0
140
[KDD2023論文読み会] BERT4CTR: An Efficient Framework to Combine Pre-trained Language Model with Non-textual Features for CTR Prediction / KDD2023 LY Tech Reading
shunk031
0
470
Julia Tokyo #11 トーク: 「Juliaで歩く自動微分」
abap34
2
1.3k
[Human-AI Decision Making勉強会] 説明の更新はユーザにどのような影響をもたらすか
okoso
1
210
Embodied AIについて / About Embodied AI
nttcom
1
590
プロシェアリング白書2024_PROSHARING_REPORT_2024
circulation
0
710
LLMマルチエージェントを俯瞰する
masatoto
26
16k
サウナでのプロジェクションマッピングの可能性の検討 / EC71koizumi
yumulab
0
190
リサーチに組織を巻き込むための「準備8割」の話
terasho
0
470
2024-01-23-az
sofievl
1
790
Accurate Method and Variable Tracking in Commit History
tsantalis
0
280
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
75
5.2k
Web development in the modern age
philhawksworth
203
10k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Product Roadmaps are Hard
iamctodd
45
9.7k
How STYLIGHT went responsive
nonsquared
92
4.8k
Designing the Hi-DPI Web
ddemaree
276
33k
The Mythical Team-Month
searls
217
42k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
Docker and Python
trallard
35
2.7k
Atom: Resistance is Futile
akmur
260
25k
Principles of Awesome APIs and How to Build Them.
keavy
121
16k
Designing Experiences People Love
moore
136
23k
Transcript
None
• • • ◦ ◦ •
• ◦ • •
• ◦ • ◦ • •
• • • ◦ ◦ •
• • • ◦ ◦ ◦
type List = def append[T](object:T) : Unit def get[T](index:Integer) :
T def make[T]() : List = new /* ... Object definition ... */ val myList : List = make[Integer]()
• ◦ ◦ • ◦ ◦
• • • ◦ ◦ •
• ◦ • • •
resource module wyvern/reflection/full def reflect[T](obj:T) : Object def reflectType[T]() :
Type
module wyvern/reflection/dynamic resource type Object module wyvern/reflection/static type Type type
Method type Variable type Field
val listObj:Object = \ reflect[List](List.make[Integer]().add(1)) val listType:Type = listObj.typeOf() val
getMethod:Method = listType.methodByName(“get”) listObj.invoke(getMethod, List.make().add(0))
• ◦ • ◦ • ◦
• • • ◦ ◦ •
• ◦ ◦ ◦ •
resource type Object = ... def viewAtType(t:Type) : Object
resource module wyvern/reflection/limited def reflect[T](obj:T) : Object def reflectType[T]() :
Type • viewAtType reflect • •
• • • ◦ ◦ •
• • ◦ ◦ •
• ◦ ◦ viewAtType ◦
None
• ◦ ◦ viewAtType ◦