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
自作言語進捗 2019 May / ojaml-2019-may
Search
todesking
May 28, 2019
Technology
0
950
自作言語進捗 2019 May / ojaml-2019-may
todesking
May 28, 2019
Tweet
Share
More Decks by todesking
See All by todesking
自作言語進捗 2020 Mar / ojaml-2020-mar
todesking
0
420
バンディット問題の理論とアルゴリズム 第8章 / bandit-8
todesking
0
120
オンライン広告におけるCTR/CVR推定関係の論文を30本くらい雑に紹介する / rtb-papers-ctr
todesking
3
1.7k
オンライン広告関連の論文を50本くらい雑に紹介する AdKDD編 / adkdd-all
todesking
4
2.4k
バンディット問題の理論とアルゴリズム 第二章 / bandit2
todesking
0
180
自作言語進捗 2019 Mar
todesking
0
500
ベイズ統計モデリング 10 // Doing Bayesian Data Analysis Chapter 10
todesking
0
120
実行時におけるJVMバイトコード最適化手法
todesking
16
12k
Other Decks in Technology
See All in Technology
Embedded SREの終わりを設計する 「なんとなく」から計画的な自立支援へ
sansantech
PRO
3
2.2k
レガシー共有バッチ基盤への挑戦 - SREドリブンなリアーキテクチャリングの取り組み
tatsukoni
0
200
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
450
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
68k
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
400
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
200
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
390
2026年、サーバーレスの現在地 -「制約と戦う技術」から「当たり前の実行基盤」へ- /serverless2026
slsops
2
210
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
1
100
オープンウェイトのLLMリランカーを契約書で評価する / searchtechjp
sansan_randd
3
650
生成AI時代にこそ求められるSRE / SRE for Gen AI era
ymotongpoo
5
2.7k
Featured
See All Featured
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
Optimising Largest Contentful Paint
csswizardry
37
3.6k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
RailsConf 2023
tenderlove
30
1.3k
Side Projects
sachag
455
43k
Why Our Code Smells
bkeepers
PRO
340
58k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
63
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
BBQ
matthewcrist
89
10k
Transcript
ࣗ࡞ݴޠਐḿ 2019 May @todesking
͋Β͢͡ • 1݄͝Ζ͔Βࣗ࡞ݴޠΛ࡞Γ࢝ΊͨͷͰɺͨ·ʹਐḿΛใ ࠂ͠Α͏ͱࢥ͍·͢…… • લճͷ͋Β͢͡: https://speakerdeck.com/todesking/zi- zuo-yan-yu-jin-bu-2019-mar • ಈػ
• Ұ෦ͰCίϯύΠϥࣗ࡞͕ྲྀߦͬͯͨ • ܕγεςϜͷ࣮ݧ͕͍ͨ͠ • JVMͰಈ͘MLܥݴޠΛ࡞͍ͬͯ·͢ • ηϧϑϗεςΟϯάඪͱ͢Δ • https://github.com/todesking/ojaml
ਐḿ Ϟδϡʔϧ Ϟδϡʔϧม ؔ ϩʔΧϧม(let/let rec) جຊతͳԋࢉ ݪ࢝తͳܕਪ Java FFI
ADT ·ͱͳܕਪ(HM) ύϥϝτϦοΫଟ૬ letଟ૬ REPL Refinement types ηϧϑϗεςΟϯά
ܕਪ • ܕ͕ෆ໌ͳ෦ʹܕมΛׂΓͯΔ • ܕม͕ै͏੍͖ΛٻΊΔ • ੍ͷղΛٻΊΔ • ৄࡉ͙͙Ε module
A { let add = fun x => fun y => x + y ;; (* add: int -> int -> int *) }
ܕਪ • ܕ͕ෆ໌ͳ෦ʹܕมΛׂΓͯΔ let add: T1 = (fun x: T2
=> (fun y: T3 => (x + y): T4 ): T5 ): T6 ;;
ܕਪ • ܕม͕ै͏੍͖ΛٻΊΔ let +: int -> int -> int;;
let add: T1 = (fun x: T2 => (fun y: T3 => (x + y): T4 ): T5 ): T6 ;; T1 = T6 T6 = T2 -> T5 T5 = T3 -> T4 T4 = int T2 = int T3 = int
ܕਪ • ੍ͷղΛٻΊΔ T1 = T6 T6 = T2 ->
T5 T5 = T3 -> T4 T4 = int T2 = int T3 = int T1 = T2 -> T5 T6 = T2 -> T5 T5 = T3 -> T4 T4 = int T2 = int T3 = int T1 = T2 -> T3 -> T4 T6 = T2 -> T3 -> T4 T5 = T3 -> T4 T4 = int T2 = int T3 = int
ܕਪ • ਪ݁Ռʹܕม͕Δ߹ɺܕύϥϝʔλͱͯ͠ந Խ͢ΔॲཧΛߦ͏ • நԽ͢Δ݅ͱ͔͍Ζ͍Ζ͋ΔΜͰ͕͢ʂ • let-polymorphismͰ͙͙Ε let id
= (fun x: T1 => x: T2): T3 T2 = T1 T3 = T1 -> T1 id: [T1] T1 -> T1
ܕਪ(FFI) • JavaϝιουΛݺͿػೳͷܕਪ • Φʔόϩʔυ͕͋ΔͨΊɺී௨ͷؔݺͼग़͠ͱҧ͏ϧʔϧ͕ඞཁ • ҾͷܕΛਪˠҾͷܕΛݩʹΦʔόϩʔυղܾˠฦΓͷܕΛ ܾఆ let x
= Integer##valueOf(1 + 1) ;;
REPL • JVMϕʔεݴޠͳͷͰͱָͯͩͬͨ • ͦΕ·Ͱʹఆٛ͞ΕͨมΛimport͓ͯ͘͠ • ೖྗΛϞδϡʔϧʹมͯ͠ίϯύΠϧ͢Δ REPL:1> 1 +
1 module Repl_1 { let res1 = 1 + 1 ;; } REPL:2> let x = res1 ;; import Repl_1.res1 module Repl_2 { let x = res1 ;; } REPL:3> x + 1 ;; import Repl_1.res1 import Repl_2.x module Repl_3 { let res3 = x + 1 ;; }
REPL • ίϯύΠϧͷ݁Ռͱͯ͠ɺϞδϡʔϧʹରԠͨ͠Ϋϥε͕Ͱ͖Δͷ ͰɺloadClassͯ͠ϑΟʔϧυͷΛಡΊΑ͍
ͦͷଞ • લճݴͬͯͳ͔ͬͨ͜ͱͳͲ • ύʔα • όΠτίʔυੜ • ςετڥ
ύʔα • scalaެࣜͷparser-combinatorsͱ͍͏ϥΠϒϥϦͬͯ·͢ • ͍ΘΏΔύʔαίϯϏωʔλʔ • ύϑΥʔϚϯε໘ͰෆརͬΆ͍͕ศར
όΠτίʔυੜ • ASMͱ͍͏ϥΠϒϥϦΛͬͯ·͢ • visitorܦ༝Ͱ໋ྩΛࢦఆ(visitXxxInsn)
ςετ • end-to-endςετͷΈ • සൟʹมΘΔ෦ߏʹґଘͨ͠ςετͳΔ͘ॻ͖ͨ ͘ͳ͍ͱ͍͏ҙࢥ͕͋Γ·͢
ςετ • src/test/resourcesͷԼʹ͜͏͍͏ͷΛஔ͘ͱࣗಈͰ࣮ߦ͢ ΔΈ • assertionίϝϯτͰॻ͘ • ਖ਼ৗܥ: ϑΟʔϧυ໊ɺظ͞ΕΔܕͱ •
ҟৗܥ: ίϯύΠϧΤϥʔ͕ظ͞ΕΔॴ
ࠓޙͷ༧ఆ • ADT+ύλʔϯϚονΛΓ·͢ • ͋ͱܕਪͷςετΛ……