Core adalah bahasa perantara GHC. Membaca Core dapat membantu Anda lebih memahami kinerja program Anda. Seseorang meminta saya untuk dokumentasi atau tutorial tentang membaca Core, tetapi saya tidak dapat menemukan banyak.
Dokumentasi apa yang tersedia untuk membaca GHC Core?
Inilah yang saya temukan sejauh ini:
Jawaban:
GHC Core adalah bahasa System FC ke mana semua Haskell diterjemahkan. Tata bahasa (perkiraan) untuk Core diberikan oleh:
Core terkait erat dengan Sistem F yang lebih sederhana dan lebih dikenal . Semua transformasi yang dilakukan GHC pada level Core adalah refactoring pelestarian tipe representasi Core ini, untuk meningkatkan kinerja. Dan, tidak begitu terkenal, Anda dapat menulis langsung di Core untuk memprogram GHC.
GHC Core cocok dalam pipa penyusun (seperti pada tahun 2002, sans-LLVM dan CMM):
Dokumen utama untuk mempelajari tentang GHC Core adalah:
Materi terkait yang dapat membantu pemahaman:
Core pada gilirannya diterjemahkan ke dalam kode STG, yang terlihat seperti:
Nama-nama lucu di Core dikodekan dalam "Z-encoding":
Jenis dan jenis GHC Core (dari kertas Tolmach):
Akhirnya, primop GHC muncul secara teratur dalam output GHC Core, ketika Anda telah mengoptimalkan Haskell Anda ke instruksi dasar yang diketahui GHC. Set primop diberikan sebagai seperangkat fungsi Core dalam file pra-diproses.
sumber
Tip: Jika Anda tidak peduli tentang jenis penjelasan dan coercions menggunakan
-ddump-simpl
bersama-sama dengan-dsuppress-all
pilihan. Output Core harus jauh lebih mudah dibaca.sumber
-dsuppress-all
sangat berguna. Anda juga dapat menggunakan-dsuppress-coercions
jika Anda hanya ingin membuang gips (berguna ketika ada banyak jenis baru di sekitar).Meskipun tidak persis bahasa Inti GHC, seperti Don menyebutkan bahasa STG sangat mirip. Saya baru-baru ini menjalani latihan membuktikan jenis keamanan mesin + bahasa STG, dan setelah itu saya menemukan saya bisa memahami Core dengan mudah.
Teks yang saya gunakan untuk belajar STG cukup mudah diakses: Menerapkan Bahasa Fungsional Malas pada Perangkat Keras Saham: Mesin G-tag tanpa kunci oleh Simon Peyton-Jones. Sebagian besar makalah ini berkaitan dengan detail implementasi, tetapi saya merekomendasikan bagian 4 khususnya sebagai penjelasan top-to-bottom dari bahasa STG yang memberikan motivasi untuk beberapa keputusan desain kontra-intuitif dan menyediakan terjemahan dari contoh-contoh yang sudah dikenal
map
.sumber
"Representasi Eksternal untuk Bahasa Inti GHC" adalah dokumen yang dapat ditemukan dalam pemasangan ghc (
share/doc/ghc/core.pdf
) atau di internet .sumber