
It is important to have execution traces in case of error. specially in server applications that run 24/7 such are web applications Thanks to the wonderful package monadloc by Pepe Iborra, now MFlow can generate a complete execution trace in case of error. The control-monad-exception uses monadLoc to generate stack traces, but MFlow makes use of his backtracking mechanism to generate a complete execution trace. Here I explain what and how: http://haskell-web.blogspot.com.es/2013/07/automatic-error-trace-generation-... The MFlow version that implements this is in gitHub. Not in hackage yet. https://github.com/agocorona/MFlow I´m quite proud of it since it is one of the things closest to magic that I have done. Feedback? I do not want to keep MFlow as a single person development. I think that it has many unique and nice features not available in other languages and frameworks, and it can be raised to a serious exploitation level by the Haskell community. This will attract people working in Industrial Web development to Haskell thanks to the edge in expressiveness and safety necessary for creating industrial solutions that Haskell has over other languages. It uses most other Haskell web developments blaze, wai, hamlet etc and there are many other things to come. monadLoc : http://hackage.haskell.org/package/monadloc -- Alberto.

That's great. We should collaborate on this. I wrote the file-location
package and Michael Snoyman wrote monad-logger: both of these give file
location information. I also added command tracing to Shelly (which could
also benefit from this kind of thing) and recently released rollbar for
error notification and would like to have as much line info as possible for
that.
On Tue, Jul 16, 2013 at 5:45 AM, Alberto G. Corona
It is important to have execution traces in case of error. specially in server applications that run 24/7 such are web applications
Thanks to the wonderful package monadloc by Pepe Iborra, now MFlow can generate a complete execution trace in case of error.
The control-monad-exception uses monadLoc to generate stack traces, but MFlow makes use of his backtracking mechanism to generate a complete execution trace.
Here I explain what and how:
http://haskell-web.blogspot.com.es/2013/07/automatic-error-trace-generation-...
The MFlow version that implements this is in gitHub. Not in hackage yet.
https://github.com/agocorona/MFlow
I´m quite proud of it since it is one of the things closest to magic that I have done.
Feedback?
I do not want to keep MFlow as a single person development. I think that it has many unique and nice features not available in other languages and frameworks, and it can be raised to a serious exploitation level by the Haskell community. This will attract people working in Industrial Web development to Haskell thanks to the edge in expressiveness and safety necessary for creating industrial solutions that Haskell has over other languages.
It uses most other Haskell web developments blaze, wai, hamlet etc and there are many other things to come.
monadLoc : http://hackage.haskell.org/package/monadloc
-- Alberto.
_______________________________________________ web-devel mailing list web-devel@haskell.org http://www.haskell.org/mailman/listinfo/web-devel

Hi Greeg.
Nice I will publish the mechanism in a separate package once I clean it up
At first sight, It is possible to use file-location and monad-logger with
the traces instead of monadloc. In the meantime, I will advance to you a
copy of the details in a separate mail.
2013/7/16 Greg Weber
That's great. We should collaborate on this. I wrote the file-location package and Michael Snoyman wrote monad-logger: both of these give file location information. I also added command tracing to Shelly (which could also benefit from this kind of thing) and recently released rollbar for error notification and would like to have as much line info as possible for that.
On Tue, Jul 16, 2013 at 5:45 AM, Alberto G. Corona
wrote: It is important to have execution traces in case of error. specially in server applications that run 24/7 such are web applications
Thanks to the wonderful package monadloc by Pepe Iborra, now MFlow can generate a complete execution trace in case of error.
The control-monad-exception uses monadLoc to generate stack traces, but MFlow makes use of his backtracking mechanism to generate a complete execution trace.
Here I explain what and how:
http://haskell-web.blogspot.com.es/2013/07/automatic-error-trace-generation-...
The MFlow version that implements this is in gitHub. Not in hackage yet.
https://github.com/agocorona/MFlow
I´m quite proud of it since it is one of the things closest to magic that I have done.
Feedback?
I do not want to keep MFlow as a single person development. I think that it has many unique and nice features not available in other languages and frameworks, and it can be raised to a serious exploitation level by the Haskell community. This will attract people working in Industrial Web development to Haskell thanks to the edge in expressiveness and safety necessary for creating industrial solutions that Haskell has over other languages.
It uses most other Haskell web developments blaze, wai, hamlet etc and there are many other things to come.
monadLoc : http://hackage.haskell.org/package/monadloc
-- Alberto.
_______________________________________________ web-devel mailing list web-devel@haskell.org http://www.haskell.org/mailman/listinfo/web-devel
-- Alberto.

Hi Greeg, All I created a repository in gitHub with the necessary code for generating execution traces in case of error: https://github.com/agocorona/control-monad-supervisor/blob/master/Demos/Trac... the code is {-# OPTIONS -F -pgmF MonadLoc #-} module Demos.TraceExample ( ) where import Control.Monad.Loc import Control.Monad.Supervisor.Trace import Control.Monad.Trans main= runTrace $ do liftIO $ print "hello" example example= if True then do liftIO $ print "world" liftIO $ undefined else liftIO $ print "not there" run It with
runghc Demos/TraceExample.hs
"hello"
"world"
TraceExample.hs: TRACE (error in the last line):
main, Demos.TraceExample(Demos\TraceExample.hs): (23, 18)
main, Demos.TraceExample(Demos\TraceExample.hs): (26, 4)
example, Demos.TraceExample(Demos\TraceExample.hs): (30, 13)
example, Demos.TraceExample(Demos\TraceExample.hs): (32, 15)
exception: Prelude.undefined
to show the generated trace. It is necessary to install the monadloc-pp and
the monadloc packages.
It uses Control.Monad.Supervisor which is the monad that execute the
backtracking that generate the error trace after the error. ( I will upload
it to Hackage soon).
It uses also Control.Monad.Supervisor.Trace, that has a MonadLoc instance
for the Supervisor monad. You can create a MonadLogger instance taking as
example the MonadLoc one.
2013/7/17 Alberto G. Corona
Hi Greeg.
Nice I will publish the mechanism in a separate package once I clean it up
At first sight, It is possible to use file-location and monad-logger with the traces instead of monadloc. In the meantime, I will advance to you a copy of the details in a separate mail.
2013/7/16 Greg Weber
That's great. We should collaborate on this. I wrote the file-location package and Michael Snoyman wrote monad-logger: both of these give file location information. I also added command tracing to Shelly (which could also benefit from this kind of thing) and recently released rollbar for error notification and would like to have as much line info as possible for that.
On Tue, Jul 16, 2013 at 5:45 AM, Alberto G. Corona
wrote: It is important to have execution traces in case of error. specially in server applications that run 24/7 such are web applications
Thanks to the wonderful package monadloc by Pepe Iborra, now MFlow can generate a complete execution trace in case of error.
The control-monad-exception uses monadLoc to generate stack traces, but MFlow makes use of his backtracking mechanism to generate a complete execution trace.
Here I explain what and how:
http://haskell-web.blogspot.com.es/2013/07/automatic-error-trace-generation-...
The MFlow version that implements this is in gitHub. Not in hackage yet.
https://github.com/agocorona/MFlow
I´m quite proud of it since it is one of the things closest to magic that I have done.
Feedback?
I do not want to keep MFlow as a single person development. I think that it has many unique and nice features not available in other languages and frameworks, and it can be raised to a serious exploitation level by the Haskell community. This will attract people working in Industrial Web development to Haskell thanks to the edge in expressiveness and safety necessary for creating industrial solutions that Haskell has over other languages.
It uses most other Haskell web developments blaze, wai, hamlet etc and there are many other things to come.
monadLoc : http://hackage.haskell.org/package/monadloc
-- Alberto.
_______________________________________________ web-devel mailing list web-devel@haskell.org http://www.haskell.org/mailman/listinfo/web-devel
-- Alberto.
-- Alberto.
participants (2)
-
Alberto G. Corona
-
Greg Weber