[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Running OCaml scripts from the command line



There's a plugin called Conque:
http://www.vim.org/scripts/script.php?script_id=2771
http://vim.wikia.com/wiki/Script:2771

You can probably get it with:

:BundleInstall Conque
:ConqueTermVSplit ocaml

I generally use :sh or ! though.

On Tue, Feb 28, 2012 at 11:00 PM, Anil Madhavapeddy <anil@xxxxxxxxxx> wrote:
> Out of interest, do you guys have any way of running a shell inside vim,
> so I can run a top-level directly as a vim pane? I would find that most
> useful, but I lack the vim-fu. ÂI used to use an external patch for this
> about 5 years ago, but it seems to have disappeared and not been
> integrated.
>
> -anil
>
> On Tue, Feb 21, 2012 at 06:15:15PM +0100, Raphael Proust wrote:
>> Also, if you consider using the toplevel. I'd recommend either rlwrap
>> or ledit so as to have edit-line capabilities (historic of typed
>> lines) or if you are on the emacs side of the war I hear the toplevel
>> integration is nice.
>>
>> On Tue, Feb 21, 2012 at 6:11 PM, Raphael Proust <raphlalou@xxxxxxxxx> wrote:
>> > On Tue, Feb 21, 2012 at 5:56 PM, Sebastian Probst Eide
>> > <sebastian.probst.eide@xxxxxxxxx> wrote:
>> >> Dear OCamlers.
>> >> I am doing some quick and dirty OCamling, and while coding would like to
>> >> execute my code in the toplevel, rather than first compiling it and then
>> >> running my compiled binary.
>> >>
>> >> if I have a file called test1.ml, for which the following works fine:
>> >>
>> >> ocaml test1.ml
>> >
>> > On my machine this does not execute in the top level. That merely runs the 
>> > code
>> > in the file(1) and exits.
>> >
>> > Consider the sh session:
>> > raphael ~ $ cat toto.ml
>> > print_endline "blah"
>> > raphael ~ $ ocaml toto.ml
>> > blah
>> > raphael ~ $ ocaml
>> > ?? ?? ?? ??Objective Caml version 3.12.0
>> >
>> > # #use "toto.ml" ;;
>> > blah
>> > - : unit = ()
>> > #
>> >
>> >
>> > Running "in the top level" is achieved by the #use primitive. (Also, 
>> > toplevel
>> > has two meaning in OCaml: a toplevel definition is a definition not nested 
>> > under
>> > any scope and *the* toplevel is the interactive read-compile-execute-print
>> > loop.)
>> >
>> >>
>> >> But, now, if test1.ml uses the Test2 module (in test2.ml), I get a module
>> >> missing exception. I get around this with:
>> >>
>> >> ocaml test2.ml test1.ml
>> >>
>> >> but when supplying both test2 and test1 to the ocaml toplevel, absolutely 
>> >> no
>> >> code is executed at all.
>> >
>> > That is not true. The code in test2.ml is executed (or at least it is on my
>> > machine):
>> >
>> > raphael ~ $ cat tata.ml
>> > print_endline "fooooooooooo"
>> > raphael ~ $ ocaml toto.ml tata.ml
>> > blah
>> >
>> > And also consider:
>> >
>> > raphael ~ $ ocaml
>> > ?? ?? ?? ??Objective Caml version 3.12.0
>> >
>> > # #use "toto.ml" ;;
>> > blah
>> > - : unit = ()
>> > # #use "tata.ml" ;;
>> > fooooooooooo
>> > - : unit = ()
>> > #
>> >
>> >
>> >> I have tried to use the -I flag to add the current directory to the search
>> >> path (which it should be by default?), but without any luck.
>> >>
>> >> I haven't had any luck with ocamlfind either, and ocamlfind seems to be 
>> >> for
>> >> finding third party libraries, rather than other modules within the same
>> >> project?
>> >
>> > You can try ocamlbuild. If your project is simple enough it will make a 
>> > binary
>> > out of anything.
>> >
>> > To build a native executable out of the test1.ml, just type:
>> >
>> > $ ocamlbuild test1.native
>> >
>> > (replace by test1.byte for the slower but more portable bytecode version.)
>> >
>> > It should figure out the dependencies if they are in the same directory 
>> > and give
>> > you a nice executable.
>> >
>> >>
>> >> I hope I am missing something trivial here.
>> >>
>> >
>> > $ echo "Module Test2 = struct" > one_file.ml
>> > $ cat test2.ml >>one_file.ml
>> > $ echo "end" >>one_file.ml
>> > $ cat test1.ml >>one_file.ml
>> > $ ocaml one_file.ml
>> >
>> > This is quick and dirty. Don't use it.
>> >
>> >
>> >
>> > (1) what it really does is compile the content to byte-code and runs it in 
>> > the
>> > ocaml VM. Code is not interpreted.
>> >
>> >> Thank you, and have a great afternoon!
>> >>
>> >> All the best,
>> >> Sebastian
>> >>
>> >>
>> >
>> >
>> >
>> > --
>> > _______
>> > Raphael
>>
>>
>>
>> --
>> _______
>> Raphael
>>
>
> --
> Anil Madhavapeddy                 http://anil.recoil.org



-- 
_______
Raphael



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.