I can't find this M2.Exception that my type signature is talking about
.share.stew.public.projects.httpserver.main> ls example
1. handler (http.HttpRequest ->{IO, M2.Exception, Abort} http.HttpResponse)
but when I try to find M2.Exception, I don't have a good way of finding it. There IS an Exception in my local namespace:
.share.stew.public.projects.httpserver.main> names lib.base.abilities.Exception
Type
Hash: #4n0fgs00hp
Names: lib.base.abilities.Exception
lib.http.lib.base.abilities.Exception
lib.http.lib.codec.lib.base.abilities.Exception
lib.http.lib.parser.lib.base.abilities.Exception
lib.semaphore.lib.base.abilities.Exception
When I run find Exception, it doesn't find anything in an M2 namespace:
.share.stew.public.projects.httpserver.main> find Exception
☝️
I couldn't find matches in this namespace, searching in 'lib'...
1. structural ability lib.base.abilities.Exception
2. unique type lib.base.math.ArithmeticException
3. lib.base.abilities.Abort.toException : '{Abort} a -> Type -> Text ->{Exception} a
4. lib.base.abilities.Abort.toGenericException : Text
-> e
->{Exception} '{Abort} a
->{Exception} a
5. lib.base.abilities.Exception.onException : (Failure ->{e} ())
-> '{g, Exception} a
->{e, g, Exception} a
6. lib.base.abilities.Throw.toException : (e ->{g1} Failure)
-> '{g2, Throw e} a
->{g1, g2, Exception} a
7. lib.base.Either.toException : Either Failure a ->{Exception} a
8. unique type lib.base.abilities.Exception.Generic
9. lib.base.abilities.Exception.bracket : '{g, Exception} r
-> (r ->{g, Exception} ())
-> (r ->{g, Exception} a)
->{g, Exception} a
10. lib.base.abilities.Exception.bracket.doc : Doc
11. lib.base.abilities.Exception.catch : '{g, Exception} a ->{g} Either Failure a
12. lib.base.abilities.Exception.catch.doc : Doc
13. lib.base.abilities.Exception.catchMany : [Type]
-> '{g, Exception} a
->{g, Exception} Either Failure a
14. lib.base.abilities.Exception.catchMany.doc : Doc
15. lib.base.abilities.Exception.catchOnly : Type
-> '{g, Exception} a
->{g, Exception} Either Failure a
16. lib.base.abilities.Exception.catchOnly.doc : Doc
17. lib.base.abilities.Exception.doc : Doc
18. lib.base.abilities.Exception.doc.div : Nat -> Nat ->{Exception} Nat
19. lib.base.abilities.Exception.failOnError : Text -> Either e a ->{Exception} a
20. lib.base.abilities.Exception.finally : '{g, Exception} ()
-> '{g, Exception} a
->{g, Exception} a
21. lib.base.abilities.Exception.finally.doc : Doc
22. lib.base.abilities.Exception.Generic.failure : Text -> a -> Failure
23. lib.base.abilities.Exception.hush : '{g, Exception} t ->{g} Optional t
24. lib.base.abilities.Exception.hush.doc : Doc
25. lib.base.abilities.Exception.onException.doc : Doc
26. lib.base.abilities.Exception.raise : Failure ->{Exception} x
27. lib.base.abilities.Exception.reraise.doc : Doc
28. lib.base.abilities.Exception.unsafeRun! : '{g, Exception} a ->{g} a
29. lib.base.abilities.Exception.unsafeRun!.doc : Doc
30. lib.base.abilities.Throw.toException.doc : Doc
31. lib.base.Either.toException.doc : Doc
32. lib.base.math.ArithmeticException.dividedByZero : '{Exception} r
33. lib.base.math.ArithmeticException.DividedByZero : ArithmeticException
34. lib.base.math.ArithmeticException.doc : Doc
35. lib.base.math.ArithmeticException.negativeInfinity : '{Exception} r
36. lib.base.math.ArithmeticException.NegativeInfinityNotAllowed : ArithmeticException
37. lib.base.math.ArithmeticException.notANumber : '{Exception} r
38. lib.base.math.ArithmeticException.NotANumber : ArithmeticException
39. lib.base.math.ArithmeticException.overflow : '{Exception} r
40. lib.base.math.ArithmeticException.Overflow : ArithmeticException
41. lib.base.math.ArithmeticException.positiveInfinity : '{Exception} r
42. lib.base.math.ArithmeticException.PositiveInfinityNotAllowed : ArithmeticException
43. lib.base.math.ArithmeticException.underflow : '{Exception} r
44. lib.base.math.ArithmeticException.Underflow : ArithmeticException
When I run find.global it does show me that there is a M2 namespace in unison's share heirarchy, but it only shows me Doc results from there:
❯ echo "find.global Exception" | INSIDE_EMACS=1 unison -p .share.stew.public.projects.metrics.main | grep M2
55. .share.unison.public.base.releases.M2.Exception.bracket.doc : Doc
56. .share.unison.public.base.releases.M2.Exception.catch.doc : Doc
57. .share.unison.public.base.releases.M2.Exception.catchMany.doc : Doc
58. .share.unison.public.base.releases.M2.Exception.catchOnly.doc : Doc
59. .share.unison.public.base.releases.M2.Exception.finally.doc : Doc
60. .share.unison.public.base.releases.M2.Exception.reraise.doc : Doc
In fact this is really the Exception which is my lib.base. However there is no good way to confirm this. To confirm this I had to go find a way to find some namesapce named M2 and find an Exception there, and then use a an absolute path to names .share.unison.public.base.release.M2.Exception
@stew Would you want a command that prints a definition with hashes only? Or no, maybe a command that prints a definition but includes a table of names to hashes as well? (Somewhat harder to implement, but much more user-friendly.)