[Haskell-cafe] Source code location in IO?

Tom Ellis tom-lists-haskell-cafe-2013 at jaguarpaw.co.uk
Mon Jun 20 15:03:56 UTC 2016


Is it compatible with the semantics of Haskell to have a function

    sourceLocation :: IO String

which when run returns the source file location at which it is used?  For
example, suppose Main.hs is

    module Main where
    
    main = do
       putStrLn =<< sourceLocation
       putStrLn "Hello"
       putStrLn =<< sourceLocation

It would print the following when run

    Main.hs:4
    Hello
    Main.hs:6

and

    module Main where
    
    main = do
       let s = sourceLocation
       putStrLn =<< s
       putStrLn "Hello"
       putStrLn =<< s

It would print the following when run

    Main.hs:4
    Hello
    Main.hs:4

If this is not compatible with the semantics of Haskell, why not?  I agree
that the two programs must have the same denotation, but is there anything
that requires them to have the same output when run?

Tom



More information about the Haskell-Cafe mailing list