My functors never hide anything, and always include the input module as a submodule of the output module. So I hope that type equalities are as maximally visible as they could be. But ocamldebug doesn't seem to get it :( On 23 February 2017 at 17:02, Ivan Gotovchits wrote: > It matters whether in the signature of a module that is produced by the > functor, the type of the key is still the same as the type of the key > parameter. If it is not, then debugger cannot know, whether the output type > is a key or not. Probably, if you add a sharing constraint between the > functor parameter signature and the resulting module signature the debugger > with capture it. Especially, if this would be an erasing signature > (although it is not always possible), e.g., > > module M = sig type key type t end > module Make(Key : T) : M with type key = Key.t > > > or > > module Make(Key : T) : M with type key := Key.t > > > > If these approaches do not work for you, then you can define a printer > yourself in a separate module (that is loaded with `load_printer` command). > In this printer you may apply a functor, > and since functors are applicative in OCaml the debugger might be clever > enough to pick this printer. It is not guaranteed, though, as the debugger > is using lots of heuristics, and sometimes, they do fail. > > > Best wishes, > Ivan > > > > On Thu, Feb 23, 2017 at 11:49 AM, Tom Ridge com> wrote: > >> Regarding `#install_printer`, can you explain more? The type >> "Key_value_types.key" is equal to string (in this particular case). >> However, this type is produced via module application, and so I cannot >> construct a printer that can print values of type "Key_value_types.key" >> before program execution (which seems to be required for #install_printer). >> >> Somehow I seem to want to tell ocamldebug that Key_value_types.key is in >> fact equal to string. Or alternatively coerce kra (using Obj.magic) to >> string type so that it can easily be printed by ocamldebug? >> >> >> >> On 23 February 2017 at 16:31, Ivan Gotovchits wrote: >> >>> Probably it is an abstract type, that is represented as string. In any >>> case you can use the `#install_printer` directive to enable printing any >>> type. The argument >>> is a function of type `t -> Format.formatter -> unit`, where `t` is a >>> name of your type. >>> >>> On Thu, Feb 23, 2017 at 11:24 AM, Tom Ridge < >>> tom.j.ridge+list@googlemail.com> wrote: >>> >>>> Dear All, >>>> >>>> I am debugging some code. For various reasons I have started to use >>>> ocamldebug rather than printf. >>>> >>>> I should say that ocamldebug is excellent. Really excellent. Especially >>>> the "backwards" stepping. >>>> >>>> However, sometimes I want to see the value of a particular variable. I >>>> can use the "p" (print) command as: >>>> >>>> (ocd) p kra >>>> kra: Key_value_types.key = >>>> >>>> The problem is that I know that kra is a string. But ocamldebug only >>>> shows . >>>> >>>> Admittedly the code is functorized. But I have a feeling I should be >>>> able to tweak something to get ocamldebug to print the value of kra. >>>> >>>> Any ideas? >>>> >>>> T >>>> >>> >>> >> >