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
自作言語にモジュールを実装した話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yuya Kono
December 20, 2020
Programming
0
430
自作言語にモジュールを実装した話
第33回 #hiro_it で発表したスライド
https://github.com/takoeight0821/kagami
Yuya Kono
December 20, 2020
Tweet
Share
More Decks by Yuya Kono
See All by Yuya Kono
自作プログラミング言語Malgoの紹介
takoeight0821
0
210
プログラミングの暗黙知
takoeight0821
0
110
git logで振り返る大学4年間
takoeight0821
1
200
量子コンピュータで乱数を生成した話
takoeight0821
1
290
自作言語コンパイラを作った話
takoeight0821
0
200
自作言語malgoのコンパイラをリファクタリングした話
takoeight0821
0
380
今日から始める自作コンパイラ ver 0.0.1
takoeight0821
0
1.1k
Language Server Protocolの話
takoeight0821
0
460
GraalVMで遊ぶ
takoeight0821
0
200
Other Decks in Programming
See All in Programming
Fundamentals of Software Engineering In the Age of AI
therealdanvega
2
300
AI Assistants for YourAngular Solutions @Angular Graz, March 2026
manfredsteyer
PRO
0
120
Claude Code Skill入門
mayahoney
0
450
Feature Toggle は捨てやすく使おう
gennei
0
380
20260315 AWSなんもわからん🥲
chiilog
2
180
安いハードウェアでVulkan
fadis
1
840
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
1.1k
KagglerがMixSeekを触ってみた
morim
0
340
AI活用のコスパを最大化する方法
ochtum
0
350
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
100
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
190
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
160
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.1k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
91
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
310
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
64
53k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Deep Space Network (abreviated)
tonyrice
0
97
Why Our Code Smells
bkeepers
PRO
340
58k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
120
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
Paper Plane
katiecoart
PRO
0
48k
Transcript
ࣗ࡞ݴޠʹϞδϡʔϧΛ ࣮ͨ͠ ʹΌʔΜʢ!UBLPFJHIUʣ
ࣗ࡞ݴޠ(SJ f module HelloImport = { import Prelude; main =
{ putStr (String# "hello"#); putStrLn |> { f -> f (String# " world"#) }; }; } ͍ͱ͜ΖΛ࡞ͬͨ
ݴޠ༷ͷઃܭ
จ๏ ϞδϡʔϧΛѻ͏จ๏ʹ͍͔ͭ͘ͷύλʔϯ͕͋Δ #include <stdio.h>ɹϓϦϓϩηοαϨϕϧͰѻ͏ package com.example.hello;ɹτοϓϨϕϧͷએݴͱͯ͠ѻ͏ import java.util.Calendar;ɹͱΓ͋͑ͣ͜ΕΛ࣮͢Δͷ͕ඪ structure
Alist = structɹʢಛผͳҙຯΛ࣋ͭʣͱͯ͠ѻ͏ open List end
จ๏ͷઃܭ w ࣮͕େมͳͷͰɺ࣍ͷػೳޙճ͠ w Ϟδϡʔϧʹผ໊Λ͚ͭΔ w ϞδϡʔϧΛ֊Խ͢Δ w ಛఆͷؔΛΤΫεϙʔτɾΠϯϙʔτ͢Δ͔ΛϓϩάϥϚ͕બͿ $ͷΑ͏ʹɺΠϯϙʔτͨ͠ϞδϡʔϧͰએݴ͞Εͨͯ͢ͷܕؔ
ΛࢀরͰ͖Δɻʢ໊લۭؒʹʮͿͪ·͚Δʯʣ
จ๏ʢϞδϡʔϧͷએݴʣ ϞδϡʔϧΛୈҰڃͷͱͯ͠ѻ͑ͨΒ৭ʑخ͍͕͠ɺ࣮͕େม ݟͨͬΆ͍͚ͲɺΩπ੍͍Λઃ͚Δ͜ͱʹ͢Δ module <Ϟδϡʔϧ໊> = {
<֤छએݴ>; } Λ̍ϑΝΠϧʹ͖͚ͭ̍ͭͩॻ͚Δ
จ๏ʢϞδϡʔϧͷར༻ʣ import Prelude; Prelude.grfͷதΛͯ͢ಡΈࠐΉ import Prelude as P; import
Prelude.Int; Ͱ͖ͳ͍
(SJ f f ͷϞδϡʔϧͷจ๏ module Hello = { -- ϞδϡʔϧHelloͷએݴ
import Prelude; -- ϞδϡʔϧPreludeͷΠϯϙʔτ main = { putStr (String# "hello"#); putStrLn |> { f -> f (String# " world"#) }; }; }
ॲཧܥͷ࣮
࣮ͷํ w Ϟδϡʔϧͷ࣮ʹେ͖͘Θ͚ͯ̎ͭͷύλʔϯ͕͋Δ ιʔείʔυΛ̍ͭʹͭͳ͛Δ ࣮؆୯͕ͩɺιʔείʔυͷαΠζ͕രൃ͔͠Ͷͳ͍ ϦϯΫ࣌·Ͱ֤ϞδϡʔϧΛόϥόϥʹѻ͏
࣮େม͕ͩɺׂίϯύΠϧͰ͖ͯੑೳతʹ༗ར w ࠓճΛ࣮ʢ$ίϯύΠϥΛ࡞ͬͨͱ͖ʹͬͨͷͰʣ
࣮ͷ࡞ઓʢ̍ʣ w Λ؆୯ʹ͢ΔͨΊɺ࣍ͷΑ͏ͳιʔείʔυΛߟ͑Δ NPEVMF$IJME\ JNQPSU1BSFOU ^
$IJME͕1BSFOUΛΠϯϙʔτ͍ͯ͠Δ
࣮ͷ࡞ઓʢ̎ʣ w $IJMEΛίϯύΠϧ͢ΔͨΊʹɺ1BSFOUʹؔ͢ΔҎԼͷใ͕ඞཁ w ܕએݴͷҰཡ w ؔͷܕͷҰཡ w ιʔείʔυ্ͷ໊ؔͱɺ໊લղܾޙͷ໊ؔͷରԠද w
(SJ f f Ͱͷ໊ؔͱɺ--7.*3Ͱͷ໊ؔʢΞηϯϒϥͷϥϕϧ໊ʣͷରԠද w தஔԋࢉࢠͷ݁߹ॱҐͷҰཡ
࣮ͷ࡞ઓʢ̏ʣ w ຖճ1BSFOUͷιʔείʔυΛಡΈऔΔͱඇޮ 1BSFOUͷίϯύΠϧ࣌ʹɺඞཁͳใ͚ͩϝϞ͓ͯ͘͠ w ϝϞ1BSFOUHS f i ʹอଘɻ$ͷϔομϑΝΠϧͷΑ͏ͳΠϝʔδ
ʢਓ͕ؒಡΉඞཁͳ͍ͷͰదʹΤϯίʔυͯ͠อଘ͢Δʣ
ίϯύΠϧͷྲྀΕ 1BSFOUHSGͷίϯύΠϧ 1BSFOUPɺ1BSFOUHS f i ͷੜ $IJMEHSGͷίϯύΠϧ
1BSFOUHS f i ͷಡΈࠐΈ $IJMEPɺ$IJMEHS f i Oͷੜ 1BSFOUPͱ$IJMEPͷϦϯΫ
·ͱΊ w ࣗ࡞ݴޠ(SJ f f ʹϞδϡʔϧΛ࣮ͨ͠ w ͍͔ͭ͘ͷ%FTJHODIPJDF͕͋ͬͨ w จ๏ɺػೳɺ࣮ํ๏
50%0ɿϞδϡʔϧͷґଘؔΛࣗಈͰղܾ͢ΔϏϧυγεςϜ ɹɹɹɹΑΓߴػೳͳϞδϡʔϧͷ࣮ݱ ɹɹɹɹඪ४ϥΠϒϥϦͷඋ
༨ஊ HS f i ϑΝΠϧͷੜʹ)BTLFMMͷγϦΞϥΠζϥΠϒϥϦTFSJBMJ[FΛͬ ͨɻੜ͞ΕͨϑΝΠϧΛݟͯΈΔͱͨΒ͕ଟ͍ɻ Ͳ͏ͯͩ͠Ζ͏ͱߟ͑ͯΈΔͱɺ)BTLFMMͷ$IBSʢจࣈܕʣ6OJDPEF DPEFQPJOUΛද͍ͯ͠ΔɻTFSJBMJ[F͜ΕΛ65'-&ͰΤϯίʔυ͢Δͷ Ͱ͕ଟ͘ͳΔͬΆ͍ɻ