GHC IO モナドの中身

Posted on 金 17 5月 2019 in プログラミング言語 • Tagged with Haskell, GHC, IO

Haskell の IO モナドって,中身どうなってたんだろと気になってて,ちょっと調べてみた.そのメモ.

IO モナドと RealWorld

まずは基本から. IO モナドは, Haskell の根幹となるモナドで, main も IO で書く. GHC では中身は次のように定義されている [1]:

-- In GHC.Types …

Continue reading

Scala コードの裏側

Posted on 水 24 4月 2019 in プログラミング言語 • Tagged with Scala, Java, JVM, 最適化

先日, Scala コードの裏側について幾つか話を聞いた.で,気になったので実際に JVM コードを出して,色々見てみることにした.なお,当方 Scala 初心者なので,おそらくかなり間違いを含んでるのと,普段使いの感覚からは離れてる部分はあると思うので,そこら辺は注意して読んでくれって感じ.

Scala コンパイラの概要

Scala コンパイラが実際どういう処理をしてるのか知らなかったので,まずはその辺を調べた. Scala は,プログラムを複数のフェーズに分けてコンパイルし,最終的に JVM …


Continue reading

STG Version 2.5 の動作

Posted on 金 19 4月 2019 in プログラミング言語 • Tagged with Haskell, 抽象機械, GHC

先日 STG の動作について説明する機会があったんだが,ちゃんと説明できなかった.で,ちょっとこれじゃまずいって思って,色々読み直してる.で,いざっていう時のためにまとめとくかみたいな気分になっており,この記事が錬成された.なお,今の GHC の STG では色々変わってるので通用しないとこも多い.そこは注意.

この記事での STG について

この記事での STG は, Spineless Tagless …


Continue reading