The path obtained by Haskell putStrLn to access write () syscall

For a simple Haskell program, for example

main = putStrLn "Hello"

I would like to know where it goes into the functional world of Haskell and C is introduced . If I try to set a breakpoint in ghci in putStrLn, I get an error:

ghci> :break putStrLn 
cannot set breakpoint on putStrLn: module System.IO is not interpreted

Is there another way inside ghci to set a breakpoint in the internal I / O functions (perhaps some special parameter, or by compiling ghci in a special way?). I would like to put putStrLn to the libraries /Base/System/IO.hs(putStrLn) or further to the libraries /Base/GHC/IO/Handle/Text.hs(hPutStrLn) to see where it goes in C.

Or maybe someone can sketch out which paths are followed until syscall () is reached?

+4

Source: https://habr.com/ru/post/1681573/


All Articles