úÎD (non-portable (requires Template haskell) experimental tomi@nomi.czNone(Get the location of current splice as a .  $__LOCATION__ ::  $__LOCATION__"<interactive>:1:1-13"#If the first argument evaluates to  , then the result is the second  argument. Otherwise an # exception is raised, containing a  5 with the source file and line number of the call to .   $(assert [|   |] ) :: a -> a $(assert [| 5 + 5 == 9 |]) "foo"Y"*** Exception: <interactive>:1:3-25: Assertion `(5 GHC.Num.+ 5) GHC.Classes.== 9' failedA location-emitting   call.   $failure ::  -> a$failure "no such thing."2*** Exception: <interactive>:1:1-8: no such thing.A location-emitting  .   $undef :: a$undef-*** Exception: <interactive>:1:1-6: undefined7 wraps a pure, partial function in a location-emitting D handler, should an exception be thrown. So instead of producing an  anonymous call to  ), a location will be tagged to the error  message.  $check :: c -> c$check $ head []<*** Exception: <interactive>:1:1-6: Prelude.head: empty listHBe careful with laziness as the argument is only evaluated to weak head  normal form: $check $ Just $ head "",Just *** Exception: Prelude.head: empty listJust $ $check $ head ""BJust *** Exception: <interactive>:9:8-13: Prelude.head: empty list&$check $ join deepseq $ Just $ head ""<*** Exception: <interactive>:1:1-6: Prelude.head: empty list6 wraps an IO function in a location-emitting handler, E should an exception be thrown. So instead of producing an anonymous  call to  2, a location will be tagged to the error message.  $checkIO :: IO a -> IO a$checkIO $ readFile "/foo"_"*** Exception: <interactive>:1:1-8: /foo: openFile: does not exist (No such file or directory)      loch-th-0.2Debug.Trace.LocationTH __LOCATION__assertfailureundefcheckcheckIObaseGHC.BaseStringghc-prim GHC.TypesTrueGHC.IO.ExceptionAssertionFailedFalseGHC.Errerror undefined