Enviar búsqueda
Cargar
GHCソースコード読みのススメ
•
5 recomendaciones
•
1,491 vistas
Kiwamu Okabe
Seguir
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 18
Descargar ahora
Descargar para leer sin conexión
Recomendados
Meet up symfony 16 juin 2017 - Les PSR
Meet up symfony 16 juin 2017 - Les PSR
Julien Vinber
Debugging: Rules & Tools
Debugging: Rules & Tools
Ian Barber
WordPress 運用を支える Perl
WordPress 運用を支える Perl
鉄次 尾形
PHP7 - Scalar Type Hints & Return Types
PHP7 - Scalar Type Hints & Return Types
Eric Poe
Key features PHP 5.3 - 5.6
Key features PHP 5.3 - 5.6
Federico Damián Lozada Mosto
Webrtc mojo
Webrtc mojo
bpmedley
Codeigniter4の比較と検証
Codeigniter4の比較と検証
ME iBotch
Smolder @Silex
Smolder @Silex
Jeen Lee
Recomendados
Meet up symfony 16 juin 2017 - Les PSR
Meet up symfony 16 juin 2017 - Les PSR
Julien Vinber
Debugging: Rules & Tools
Debugging: Rules & Tools
Ian Barber
WordPress 運用を支える Perl
WordPress 運用を支える Perl
鉄次 尾形
PHP7 - Scalar Type Hints & Return Types
PHP7 - Scalar Type Hints & Return Types
Eric Poe
Key features PHP 5.3 - 5.6
Key features PHP 5.3 - 5.6
Federico Damián Lozada Mosto
Webrtc mojo
Webrtc mojo
bpmedley
Codeigniter4の比較と検証
Codeigniter4の比較と検証
ME iBotch
Smolder @Silex
Smolder @Silex
Jeen Lee
Redis & ZeroMQ: How to scale your application
Redis & ZeroMQ: How to scale your application
rjsmelo
ZeroMQ Is The Answer
ZeroMQ Is The Answer
Ian Barber
2005_Structures and functions of Makefile
2005_Structures and functions of Makefile
NakCheon Jung
PHP5.5 is Here
PHP5.5 is Here
julien pauli
Créer une base NoSQL en 1 heure
Créer une base NoSQL en 1 heure
Amaury Bouchard
Perl web app 테스트전략
Perl web app 테스트전략
Jeen Lee
The most exciting features of PHP 7.1
The most exciting features of PHP 7.1
Zend by Rogue Wave Software
Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )
Joseph Scott
Advanced modulinos
Advanced modulinos
brian d foy
Future of HTTP in CakePHP
Future of HTTP in CakePHP
markstory
Bag of tricks
Bag of tricks
brian d foy
Profiling with Xhprof
Profiling with Xhprof
Tim Massey
How to stand on the shoulders of giants
How to stand on the shoulders of giants
Ian Barber
ZeroMQ Is The Answer: DPC 11 Version
ZeroMQ Is The Answer: DPC 11 Version
Ian Barber
ZeroMQ: Messaging Made Simple
ZeroMQ: Messaging Made Simple
Ian Barber
TRunner
TRunner
Jeen Lee
C99
C99
sifo12
Отладка в GDB
Отладка в GDB
Anthony Shoumikhin
Pl python python w postgre-sql
Pl python python w postgre-sql
Piotr Pałkiewicz
Ethiopian multiplication in Perl6
Ethiopian multiplication in Perl6
Workhorse Computing
Spring data iii
Spring data iii
명철 강
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Modern Data Stack France
Más contenido relacionado
La actualidad más candente
Redis & ZeroMQ: How to scale your application
Redis & ZeroMQ: How to scale your application
rjsmelo
ZeroMQ Is The Answer
ZeroMQ Is The Answer
Ian Barber
2005_Structures and functions of Makefile
2005_Structures and functions of Makefile
NakCheon Jung
PHP5.5 is Here
PHP5.5 is Here
julien pauli
Créer une base NoSQL en 1 heure
Créer une base NoSQL en 1 heure
Amaury Bouchard
Perl web app 테스트전략
Perl web app 테스트전략
Jeen Lee
The most exciting features of PHP 7.1
The most exciting features of PHP 7.1
Zend by Rogue Wave Software
Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )
Joseph Scott
Advanced modulinos
Advanced modulinos
brian d foy
Future of HTTP in CakePHP
Future of HTTP in CakePHP
markstory
Bag of tricks
Bag of tricks
brian d foy
Profiling with Xhprof
Profiling with Xhprof
Tim Massey
How to stand on the shoulders of giants
How to stand on the shoulders of giants
Ian Barber
ZeroMQ Is The Answer: DPC 11 Version
ZeroMQ Is The Answer: DPC 11 Version
Ian Barber
ZeroMQ: Messaging Made Simple
ZeroMQ: Messaging Made Simple
Ian Barber
TRunner
TRunner
Jeen Lee
C99
C99
sifo12
Отладка в GDB
Отладка в GDB
Anthony Shoumikhin
Pl python python w postgre-sql
Pl python python w postgre-sql
Piotr Pałkiewicz
Ethiopian multiplication in Perl6
Ethiopian multiplication in Perl6
Workhorse Computing
La actualidad más candente
(20)
Redis & ZeroMQ: How to scale your application
Redis & ZeroMQ: How to scale your application
ZeroMQ Is The Answer
ZeroMQ Is The Answer
2005_Structures and functions of Makefile
2005_Structures and functions of Makefile
PHP5.5 is Here
PHP5.5 is Here
Créer une base NoSQL en 1 heure
Créer une base NoSQL en 1 heure
Perl web app 테스트전략
Perl web app 테스트전략
The most exciting features of PHP 7.1
The most exciting features of PHP 7.1
Anatomy of a PHP Request ( UTOSC 2010 )
Anatomy of a PHP Request ( UTOSC 2010 )
Advanced modulinos
Advanced modulinos
Future of HTTP in CakePHP
Future of HTTP in CakePHP
Bag of tricks
Bag of tricks
Profiling with Xhprof
Profiling with Xhprof
How to stand on the shoulders of giants
How to stand on the shoulders of giants
ZeroMQ Is The Answer: DPC 11 Version
ZeroMQ Is The Answer: DPC 11 Version
ZeroMQ: Messaging Made Simple
ZeroMQ: Messaging Made Simple
TRunner
TRunner
C99
C99
Отладка в GDB
Отладка в GDB
Pl python python w postgre-sql
Pl python python w postgre-sql
Ethiopian multiplication in Perl6
Ethiopian multiplication in Perl6
Similar a GHCソースコード読みのススメ
Spring data iii
Spring data iii
명철 강
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Modern Data Stack France
Metaprogramovanie #1
Metaprogramovanie #1
Jano Suchal
Lumberjack XPath 101
Lumberjack XPath 101
Thomas Weinert
Debugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 Version
Ian Barber
Quick tour of PHP from inside
Quick tour of PHP from inside
julien pauli
(SDD402) Amazon ElastiCache Deep Dive | AWS re:Invent 2014
(SDD402) Amazon ElastiCache Deep Dive | AWS re:Invent 2014
Amazon Web Services
From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)
Night Sailer
Can't Miss Features of PHP 5.3 and 5.4
Can't Miss Features of PHP 5.3 and 5.4
Jeff Carouth
PHPSpec BDD for PHP
PHPSpec BDD for PHP
Marcello Duarte
Talkaboutlithium
Talkaboutlithium
noppoman722
Commands documentaion
Commands documentaion
TejalNijai
Rails 3 overview
Rails 3 overview
Yehuda Katz
TYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase framework
Christian Trabold
Apache Hacks
Apache Hacks
Beth Skwarecki
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
ChereCheek752
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
Hisateru Tanaka
Railsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshare
tomcopeland
Do something in 5 with gas 2-graduate to a database
Do something in 5 with gas 2-graduate to a database
Bruce McPherson
Building Lithium Apps
Building Lithium Apps
Nate Abele
Similar a GHCソースコード読みのススメ
(20)
Spring data iii
Spring data iii
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Hadoop meetup : HUGFR Construire le cluster le plus rapide pour l'analyse des...
Metaprogramovanie #1
Metaprogramovanie #1
Lumberjack XPath 101
Lumberjack XPath 101
Debugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 Version
Quick tour of PHP from inside
Quick tour of PHP from inside
(SDD402) Amazon ElastiCache Deep Dive | AWS re:Invent 2014
(SDD402) Amazon ElastiCache Deep Dive | AWS re:Invent 2014
From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)
Can't Miss Features of PHP 5.3 and 5.4
Can't Miss Features of PHP 5.3 and 5.4
PHPSpec BDD for PHP
PHPSpec BDD for PHP
Talkaboutlithium
Talkaboutlithium
Commands documentaion
Commands documentaion
Rails 3 overview
Rails 3 overview
TYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase framework
Apache Hacks
Apache Hacks
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
finalprojtemplatev5finalprojtemplate.gitignore# Ignore the b
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
Railsconf2011 deployment tips_for_slideshare
Railsconf2011 deployment tips_for_slideshare
Do something in 5 with gas 2-graduate to a database
Do something in 5 with gas 2-graduate to a database
Building Lithium Apps
Building Lithium Apps
Último
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
MadyBayot
Elevate Developer Efficiency & build GenAI Application with Amazon Q
Elevate Developer Efficiency & build GenAI Application with Amazon Q
Bhuvaneswari Subramani
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
apidays
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Remote DBA Services
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
apidays
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
sammart93
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
rafiqahmad00786416
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
Nanddeep Nachan
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
Andrey Devyatkin
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Dropbox
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
apidays
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
jfdjdjcjdnsjd
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Orbitshub
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
johnbeverley2021
Último
(20)
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
Elevate Developer Efficiency & build GenAI Application with Amazon Q
Elevate Developer Efficiency & build GenAI Application with Amazon Q
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
presentation ICT roal in 21st century education
presentation ICT roal in 21st century education
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
GHCソースコード読みのススメ
1.
2.
3.
4.
5.
6.
7.
-- compiler/main/HscMain.hs hscParse'関数 hscParse'
mod_summary = do dflags <- getDynFlags let src_filename = ms_hspp_file mod_summary maybe_src_buf = ms_hspp_buf mod_summary liftIO $ showPass dflags "Parser" {-# SCC "Parser" #-} do buf <- case maybe_src_buf of Just b -> return b Nothing -> liftIO $ hGetStringBuffer src_filename let loc = mkRealSrcLoc (mkFastString src_filename) 1 1 case unP parseModule (mkPState dflags buf loc) of PFailed span err ->
8.
liftIO $ showPass
dflags "Parser" *** Parser:
9.
詳細: http://www.kotha.net/ghcguide_ja/7.0.4/ profiling.html#idp19148320
10.
liftIO $ dumpIfSet_dyn
dflags Opt_D_dump_parsed "Parser" $ ppr rdr_module ==================== Parser ============= module Queue ( Queue(..) ) where import Prelude hiding ( head, tail ) class Queue q where {
11.
hscParse' :: ModSummary
-> Hsc HsParsedModule hscParse' mod_summary = do dflags <- getDynFlags --snip-- case unP parseModule (mkPState dflags buf loc) of PFailed span err -> liftIO $ throwOneError (mkPlainErrMsg span err) POk pst rdr_module -> do logWarningsReportErrors (getMessages pst) --snip-- return HsParsedModule { hpm_module = rdr_module, hpm_src_files = srcs2 }
12.
unP parseModule (mkPState
dflags buf loc) * unP: compiler/parser/Lexer.xで定義 * parseModule: compiler/parser/Parser.y.ppで定義 * mkPState: compiler/parser/Lexer.xで定義
13.
http://www.haskell.org/alex/ http://www.haskell.org/happy/
14.
-- Parser.y.pp %monad {
P } { >>= } { return } %lexer { lexer } { L _ ITeof } %name parseModule module %name parseStmt maybe_stmt %name parseIdentifier identifier %name parseType ctype %partial parseHeader header %tokentype { (Located Token) } http://www.haskell.org/happy/doc/html/sec-monads.html
15.
16.
17.
module :: {
Located (HsModule RdrName) } : maybedocheader 'module' modid maybemodwarning maybeexports 'where' body {% fileSrcSpan >>= loc -> return (L loc (HsModule (Just $3) $5 (fst $7) (snd $7) $4 $1) )} | body2 {% fileSrcSpan >>= loc -> return (L loc (HsModule Nothing Nothing (fst $1) (snd $1) Nothing Nothing )) }
Descargar ahora