-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consider renaming TraceT
#9
Comments
How about using a free monad? Wouldn't that give you a good notion of canonicity and a simpler structure (referring to #8)? |
Interesting idea! I'm certainly open to it. |
I'll take a shot at it. I see you're already pulling in |
Great! :) Yeah, I did my best to make it so you can just program against the abstract type, which means that we have a lot of flexibility in improving the internal representation. Thanks! |
How's this? https://gist.github.com/darinmorrison/9f6d757b1cc07865cc41 Didn't do it as a monad transformer yet but that shouldn't be hard. Could use |
This is pretty cool! I haven't used operational or free very much, are there any performance issues I need to worry about? |
Operational's |
Also, I would be pretty surprised if the |
Heh, that's neat. Yeah, sounds good! |
Okay. I can add the missing stuff and put together a pull request in a bit. |
The general pattern is to have a monad signature given in
Control.Monad.Sig.Class
and then a concrete structure, which is the "canonical" implementation of that signature, inControl.Monad.Trans.SigT
.But
TraceT
is not the canonical instance ofMonadTrace
, it is a particular instance which combines tracing with error handling in a useful way. The canonical instance would be a minimal wrapper aroundStateT
, probably.To avoid confusing people, the
TraceT
type might be better named something else.The text was updated successfully, but these errors were encountered: