* [Caml-list] OCaml piqi difficulties @ 2015-06-09 20:34 Kenneth Adam Miller 2015-06-09 22:48 ` Kenneth Adam Miller 0 siblings, 1 reply; 3+ messages in thread From: Kenneth Adam Miller @ 2015-06-09 20:34 UTC (permalink / raw) To: caml users, piqi [-- Attachment #1: Type: text/plain, Size: 2715 bytes --] I've been using piqi for quite a while and it's done wonders for me. Lately though, I've had some issues with transforming some types provided by another library into a piqi representation. Essentially, I'm at a crossroads where I'm running into a compile error, and I'm not sure how to fix it. Here's the root of my problem: Error: This expression has type Stmt_piqi.stmt list list but an expression was expected of type Bapservice_piqi.Bapservice_piqi.lifted_region = Bapservice_piqi.Bapservice_piqi.stmt_list list Type Stmt_piqi.stmt list is not compatible with type Bapservice_piqi.Bapservice_piqi.stmt_list = Bapservice_piqi.Bapservice_piqi.stmt list Type Stmt_piqi.stmt is not compatible with type Bapservice_piqi.Bapservice_piqi.stmt = [ `cpuexn of Bapservice_piqi.Bapservice_piqi.cpuexn | `if_stmt of Bapservice_piqi.Bapservice_piqi.if_stmt | `jmp of Bapservice_piqi.Bapservice_piqi.jmp | `move of Bapservice_piqi.Bapservice_piqi.move | `special of Bapservice_piqi.Bapservice_piqi.special | `while_stmt of Bapservice_piqi.Bapservice_piqi.while_stmt ] lifted_region is defined in my piqi file as a stmt list list (a list of instructions). Here's the part that I don't know: in piqi do I import the module instead of including it in order to get the compiler to see that the types are equivalent? (because they are, this is very much like debugging a phantom type error. Stmt_piqi.stmt is the same as Bapservice_piqi.stmt). My thinking with the above question is that if I import the module in piqi, then the piqi command will *not* generate a whole new ml, different entirely to the ml that was compiled and included in the library that I'm using, bap (it currently *is*). In that case, the types will be equivalent and everything will compile nicely. But I attempted to import the module in my piqi file, and that results in some compile error that I don't know how to solve: Unbound module Stmt_piqi. Naturally, in my makefile for generating ml of piqi encoder/decoder ocaml modules, I have an include that points to the folder that contains the bap stmt.piqi file. So the piqi ocaml command succeeds, but now I need to tell ocaml how to resolve the stmt_piqi module (compiled away in bap.serialization). I'm using oasis, and I already have bap.serialization in my depends, and the generated piqi ml file is auto detected and the correct bap.serialization is propagated through as a specified package on the command line. How do I get the compiler to either see type equivalence of the Bapservice_piqi.stmt type or to know where to get the Stmt_piqi module? [-- Attachment #2: Type: text/html, Size: 6126 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Caml-list] OCaml piqi difficulties 2015-06-09 20:34 [Caml-list] OCaml piqi difficulties Kenneth Adam Miller @ 2015-06-09 22:48 ` Kenneth Adam Miller 2015-06-10 8:56 ` Anton Lavrik 0 siblings, 1 reply; 3+ messages in thread From: Kenneth Adam Miller @ 2015-06-09 22:48 UTC (permalink / raw) To: caml users, piqi [-- Attachment #1: Type: text/plain, Size: 4035 bytes --] To be more clear, after I thought about it a bit more, I think what I need is definitely one of two things, either: 1) to edit is the include path, either for ocamlbuild or oasis. The problem is, the implementation for a module is already in the library path... In this way, it will know where to find the appropriate ml, or cmi, cmo/x 2) tell piqi how to fully qualify the module into the other library. -> http://piqi.org/doc/ocaml/#piqitoocamlmapping Speak of the devil, I think that might be it! *edit* OK, so I think I got it down... now it's just a piqi usage issue.I can edit the library interface that I'm using to expose that functionality. Now I need to know: .import [ module stmt .name XYZ ] once I expose the module name, and I should be able to force it to be fully qualified with the above. Problem is, I need to have the module name be Bap.Std.Bap_types.Bil_types.Bil_piqi; the periods are required. Problem: I can't put periods or '/' in the name of the module in order to get it to work. Variations on quotes didn't seem to make a difference either... How to get piqi to accept a fully qualified name? On Tue, Jun 9, 2015 at 4:34 PM, Kenneth Adam Miller < kennethadammiller@gmail.com> wrote: > I've been using piqi for quite a while and it's done wonders for me. > > Lately though, I've had some issues with transforming some types provided > by another library into a piqi representation. > > Essentially, I'm at a crossroads where I'm running into a compile error, > and I'm not sure how to fix it. Here's the root of my problem: > > Error: This expression has type Stmt_piqi.stmt list list > but an expression was expected of type > Bapservice_piqi.Bapservice_piqi.lifted_region = > Bapservice_piqi.Bapservice_piqi.stmt_list list > Type Stmt_piqi.stmt list is not compatible with type > Bapservice_piqi.Bapservice_piqi.stmt_list = > Bapservice_piqi.Bapservice_piqi.stmt list > Type Stmt_piqi.stmt is not compatible with type > Bapservice_piqi.Bapservice_piqi.stmt = > [ `cpuexn of Bapservice_piqi.Bapservice_piqi.cpuexn > | `if_stmt of Bapservice_piqi.Bapservice_piqi.if_stmt > | `jmp of Bapservice_piqi.Bapservice_piqi.jmp > | `move of Bapservice_piqi.Bapservice_piqi.move > | `special of Bapservice_piqi.Bapservice_piqi.special > | `while_stmt of Bapservice_piqi.Bapservice_piqi.while_stmt ] > > > > lifted_region is defined in my piqi file as a stmt list list (a list of > instructions). Here's the part that I don't know: in piqi do I import the > module instead of including it in order to get the compiler to see that the > types are equivalent? > > (because they are, this is very much like debugging a phantom type error. > Stmt_piqi.stmt is the same as Bapservice_piqi.stmt). > > My thinking with the above question is that if I import the module in > piqi, then the piqi command will *not* generate a whole new ml, different > entirely to the ml that was compiled and included in the library that I'm > using, bap (it currently *is*). In that case, the types will be equivalent > and everything will compile nicely. > > But I attempted to import the module in my piqi file, and that results in > some compile error that I don't know how to solve: > > Unbound module Stmt_piqi. > > Naturally, in my makefile for generating ml of piqi encoder/decoder ocaml > modules, I have an include that points to the folder that contains the bap > stmt.piqi file. So the piqi ocaml command succeeds, but now I need to tell > ocaml how to resolve the stmt_piqi module (compiled away in > bap.serialization). I'm using oasis, and I already have bap.serialization > in my depends, and the generated piqi ml file is auto detected and the > correct bap.serialization is propagated through as a specified package on > the command line. > > How do I get the compiler to either see type equivalence of the > Bapservice_piqi.stmt type or to know where to get the Stmt_piqi module? > [-- Attachment #2: Type: text/html, Size: 7885 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Caml-list] OCaml piqi difficulties 2015-06-09 22:48 ` Kenneth Adam Miller @ 2015-06-10 8:56 ` Anton Lavrik 0 siblings, 0 replies; 3+ messages in thread From: Anton Lavrik @ 2015-06-10 8:56 UTC (permalink / raw) To: piqi; +Cc: caml users [-- Attachment #1: Type: text/plain, Size: 4659 bytes --] Hi Kenneth, please see my comment here: https://github.com/alavrik/piqi-ocaml/issues/7 I've added a small change that should help. Anton On Tue, Jun 9, 2015 at 3:48 PM, Kenneth Adam Miller < kennethadammiller@gmail.com> wrote: > To be more clear, after I thought about it a bit more, I think what I need > is definitely one of two things, either: > > 1) to edit is the include path, either for ocamlbuild or oasis. The > problem is, the implementation for a module is already in the library > path... In this way, it will know where to find the appropriate ml, or cmi, > cmo/x > 2) tell piqi how to fully qualify the module into the other library. > -> http://piqi.org/doc/ocaml/#piqitoocamlmapping > Speak of the devil, I think that might be it! > > *edit* > OK, so I think I got it down... now it's just a piqi usage issue.I can > edit the library interface that I'm using to expose that functionality. Now > I need to know: > > .import [ module stmt .name XYZ ] > > once I expose the module name, and I should be able to force it to be > fully qualified with the above. Problem is, I need to have the module name > be Bap.Std.Bap_types.Bil_types.Bil_piqi; the periods are required. Problem: > I can't put periods or '/' in the name of the module in order to get it to > work. Variations on quotes didn't seem to make a difference either... > > How to get piqi to accept a fully qualified name? > > On Tue, Jun 9, 2015 at 4:34 PM, Kenneth Adam Miller < > kennethadammiller@gmail.com> wrote: > >> I've been using piqi for quite a while and it's done wonders for me. >> >> Lately though, I've had some issues with transforming some types provided >> by another library into a piqi representation. >> >> Essentially, I'm at a crossroads where I'm running into a compile error, >> and I'm not sure how to fix it. Here's the root of my problem: >> >> Error: This expression has type Stmt_piqi.stmt list list >> but an expression was expected of type >> Bapservice_piqi.Bapservice_piqi.lifted_region = >> Bapservice_piqi.Bapservice_piqi.stmt_list list >> Type Stmt_piqi.stmt list is not compatible with type >> Bapservice_piqi.Bapservice_piqi.stmt_list = >> Bapservice_piqi.Bapservice_piqi.stmt list >> Type Stmt_piqi.stmt is not compatible with type >> Bapservice_piqi.Bapservice_piqi.stmt = >> [ `cpuexn of Bapservice_piqi.Bapservice_piqi.cpuexn >> | `if_stmt of Bapservice_piqi.Bapservice_piqi.if_stmt >> | `jmp of Bapservice_piqi.Bapservice_piqi.jmp >> | `move of Bapservice_piqi.Bapservice_piqi.move >> | `special of Bapservice_piqi.Bapservice_piqi.special >> | `while_stmt of Bapservice_piqi.Bapservice_piqi.while_stmt ] >> >> >> >> lifted_region is defined in my piqi file as a stmt list list (a list of >> instructions). Here's the part that I don't know: in piqi do I import the >> module instead of including it in order to get the compiler to see that the >> types are equivalent? >> >> (because they are, this is very much like debugging a phantom type error. >> Stmt_piqi.stmt is the same as Bapservice_piqi.stmt). >> >> My thinking with the above question is that if I import the module in >> piqi, then the piqi command will *not* generate a whole new ml, different >> entirely to the ml that was compiled and included in the library that I'm >> using, bap (it currently *is*). In that case, the types will be equivalent >> and everything will compile nicely. >> >> But I attempted to import the module in my piqi file, and that results in >> some compile error that I don't know how to solve: >> >> Unbound module Stmt_piqi. >> >> Naturally, in my makefile for generating ml of piqi encoder/decoder ocaml >> modules, I have an include that points to the folder that contains the bap >> stmt.piqi file. So the piqi ocaml command succeeds, but now I need to tell >> ocaml how to resolve the stmt_piqi module (compiled away in >> bap.serialization). I'm using oasis, and I already have bap.serialization >> in my depends, and the generated piqi ml file is auto detected and the >> correct bap.serialization is propagated through as a specified package on >> the command line. >> >> How do I get the compiler to either see type equivalence of the >> Bapservice_piqi.stmt type or to know where to get the Stmt_piqi module? >> > > -- > You received this message because you are subscribed to the Google Groups > "piqi" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to piqi+unsubscribe@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > [-- Attachment #2: Type: text/html, Size: 9019 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2015-06-10 8:57 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-06-09 20:34 [Caml-list] OCaml piqi difficulties Kenneth Adam Miller 2015-06-09 22:48 ` Kenneth Adam Miller 2015-06-10 8:56 ` Anton Lavrik
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox