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
Yuya Kono
December 20, 2020
Programming
0
400
自作言語にモジュールを実装した話
第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
180
プログラミングの暗黙知
takoeight0821
0
83
git logで振り返る大学4年間
takoeight0821
1
180
量子コンピュータで乱数を生成した話
takoeight0821
1
260
自作言語コンパイラを作った話
takoeight0821
0
170
自作言語malgoのコンパイラをリファクタリングした話
takoeight0821
0
340
今日から始める自作コンパイラ ver 0.0.1
takoeight0821
0
1.1k
Language Server Protocolの話
takoeight0821
0
430
GraalVMで遊ぶ
takoeight0821
0
170
Other Decks in Programming
See All in Programming
Microsoft Orleans, Daprのアクターモデルを使い効率的に開発、デプロイを行うためのSekibanの試行錯誤 / Sekiban: Exploring Efficient Development and Deployment with Microsoft Orleans and Dapr Actor Models
tomohisa
0
210
TROCCO×dbtで実現する人にもAIにもやさしいデータ基盤
nealle
0
330
20250808_AIAgent勉強会_ClaudeCodeデータ分析の実運用〜競馬を題材に回収率100%の先を目指すメソッドとは〜
kkakeru
0
210
コーディングは技術者(エンジニア)の嗜みでして / Learning the System Development Mindset from Rock Lady
mackey0225
2
580
CEDEC2025 長期運営ゲームをあと10年続けるための0から始める自動テスト ~4000項目を50%自動化し、月1→毎日実行にした3年間~
akatsukigames_tech
0
150
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
13
3.2k
令和最新版手のひらコンピュータ
koba789
14
8k
未来を拓くAI技術〜エージェント開発とAI駆動開発〜
leveragestech
2
180
GitHub Copilotの全体像と活用のヒント AI駆動開発の最初の一歩
74th
8
3.2k
コンテキストエンジニアリング Cursor編
kinopeee
1
700
AIレビュアーをスケールさせるには / Scaling AI Reviewers
technuma
2
230
Nuances on Kubernetes - RubyConf Taiwan 2025
envek
0
190
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
890
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
KATA
mclloyd
32
14k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
21k
Automating Front-end Workflow
addyosmani
1370
200k
How to train your dragon (web standard)
notwaldorf
96
6.2k
Thoughts on Productivity
jonyablonski
69
4.8k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4k
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'-&ͰΤϯίʔυ͢Δͷ Ͱ͕ଟ͘ͳΔͬΆ͍ɻ