gildor changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | OCaml 3.12.1 http://bit.ly/nNVIVH
emmanuelux has joined #ocaml
alxbl is now known as abeaulieu
Mnabil has joined #ocaml
UncleVasya has quit [Ping timeout: 248 seconds]
Mnabil has quit [Ping timeout: 244 seconds]
ulfdoz_ has joined #ocaml
ulfdoz has quit [Ping timeout: 245 seconds]
ulfdoz_ is now known as ulfdoz
gnuvince has joined #ocaml
avsm has quit [Quit: Leaving.]
madroach_ has quit [Ping timeout: 245 seconds]
netrino_ has quit [Quit: Ave!]
madroach has joined #ocaml
hongboz has joined #ocaml
<hongboz> dsheets: Gram syntax support factorization, don't use Genlex for serious stuff.
<dsheets> hongboz: Gram like camlp4? Does it introduce new dependencies or is free with distribution?
<hongboz> camlp4.gramlib in ocamlfind
<hongboz> when you use gram syntax, you need to link with camlp4.fulllib
<hongboz> it's distributed with ocaml
<dsheets> hongboz: thank you! i will use this! :-)
<hongboz> dsheets: there's an introductory blog on camlp4.gramlib, google ambassador ocaml camlp4 part6
<dsheets> yes, i have seen this series by jaked
<dsheets> but i was uncertain about using it for object dsls
<hongboz> for prototyping, using gram syntax is the most efficiet way
<hongboz> but if you are demanding on lexers, it will cause much trouble
<hongboz> dsls will be fine, I guess
<dsheets> how is this? i do not know if i am demanding? i have another language using ulex+menhir right now
<dsheets> I am interested in quoting, language factorization, and reflecting grammars into types
<dsheets> I would really like to do dynamic grammar modification, too
<dsheets> so i am stuck between menhir, dypgen, and camlp4
<hongboz> it's convenient to use camlp4's own lexers. You can feed your own lexer, but it requires some work though
<hongboz> menhir is dynamic?
<dsheets> i require my own lexical coordinate type
<dsheets> no, unfortunately it isn't which leads me to contemplate porting to dypgen
<hongboz> yeah, dypgen is the right way to go
<hongboz> but I did not see any serious benchmark
<dsheets> i don't really need speed… just dynamic language extension capability and quoting would be nice
<dsheets> can i use dypgen behind camlp4?
<hongboz> just for quoting? any parser will be fine
<dsheets> ok, i am new with camlp4
<dsheets> hongboz: thanks very much for your help. i will now learn camlp4 and dypgen in more depth
<dsheets> oh that is wonderful
<dsheets> you have put all the fiddly bits in one place, i see
<dsheets> hongboz: will you be at icfp?
<hongboz> dsheets: yes
<dsheets> hongboz: excellent, i will see you there :-)
<hongboz> nice ;)
ankit9_ has quit [Ping timeout: 246 seconds]
emmanuelux has quit [Ping timeout: 246 seconds]
<dsheets> i am always using the original flavor syntax of ocaml. should i use revised for non-camlp4 codes?
ankit9_ has joined #ocaml
<hongboz> not recommended, it's not the fault of revised syntaxes, just the other tools around it, like emacs mode, complexity of building
<dsheets> but camlp4 uses revised to avoid ambiguities in original?
leoncamel has joined #ocaml
<hongboz> dsheets: yes, for camlp4-related programs, use revised syntax
<hongboz> dsheets: there's lots of bugs hidden in original synta
<hongboz> I wrote my elisp code to automatically transform revised to original back and forth.
<dsheets> that is neat. if they are iso, why must we use revised?
<hongboz> long story short: orignal syntax is not friendly to 'quotations, antiquotations'
<hongboz> macros without antiquotations are not very powerful
<dsheets> ahhh, i begin to understand
<dsheets> no more ambiguous trailing match clauses and messy nesting
<dsheets> is your elisp translator published?
<hongboz> it's fit for my need, but you can have a look. https://github.com/bobzhang/.emacs/blob/master/.emacs
<hongboz> lines begin with line 535
<hongboz> to learn camlp4, another useful thing is to be familiar with ocamlbuild, I have a very powerful myocamlbuild.ml, the building process is extremely simple.
<dsheets> oh, i see your elisp does not translate, you use camlp4of and camlp4rf of course
<dsheets> what do you add to myocamlbuild.ml? i have been using _tags and it seems to handle syntax exts well
<hongboz> dsheets: there's still some complexity as you will see
hongboz has quit [Ping timeout: 244 seconds]
ankit9_ has quit [Ping timeout: 246 seconds]
ankit9_ has joined #ocaml
leoncamel has quit [Ping timeout: 246 seconds]
leoncamel has joined #ocaml
bzzbzz has quit [Quit: leaving]
eni has joined #ocaml
eni has quit [Ping timeout: 264 seconds]
eni has joined #ocaml
pango_ has joined #ocaml
pango has quit [Ping timeout: 252 seconds]
<adrien> morning
<madroach> morning!
<madroach> I'm at the moment trying to update ocaml ports on OpenBSD to ocaml 4.00.
<madroach> Now while updating the postgresql library I'm wondering how should I compile libraries using threads? Wouldn't using -threads or -vmthreads force programs using this library to use the same?
<adrien> in doubt, don't change anything to what is currently done
ankit9_ has quit [Quit: Leaving]
eni has quit [Ping timeout: 244 seconds]
avsm has joined #ocaml
hongboz has joined #ocaml
avsm has quit [Quit: Leaving.]
avsm has joined #ocaml
xcombelle has joined #ocaml
xcombelle has quit [Remote host closed the connection]
sepp2k has joined #ocaml
pango_ is now known as pangoafk
hongboz has quit [Ping timeout: 246 seconds]
edwin has joined #ocaml
avsm has quit [Quit: Leaving.]
avsm has joined #ocaml
xcombelle has joined #ocaml
UncleVasya has joined #ocaml
avsm has quit [Quit: Leaving.]
<UncleVasya> Hi. I'm using OCaml 3.12 under Windows. While running my program in top level I use #load "str.cma";; #load "unix.cma";; in my source file. To compile program I do ocamlopt Unix.cmxa Str.cmxa myprog.ml -o myprog.exe. Before running ocamlopt I have to delete those #load lines from source. Is there a simple solution to make my prog work with both ocamlopt and top level without editing source?
edwin has left #ocaml []
milosn has quit [Read error: No route to host]
milosn has joined #ocaml
<flux> unclevasya, well, I believe the only option is to have a script that generates either version from the other
<UncleVasya> thanks
avsm has joined #ocaml
pangoafk is now known as pango
avsm has quit [Quit: Leaving.]
Guest11736 has quit [Ping timeout: 245 seconds]
avsm has joined #ocaml
Guest11736 has joined #ocaml
Anarchos has joined #ocaml
mk___ has joined #ocaml
mk___ is now known as mk270
mk270 has left #ocaml []
mk270 has joined #ocaml
<mk270> what version of ocaml should i be using to compile opam? 4.00?
Anarchos has quit [Quit: Vision[0.9.7-H-090423]: i've been blurred!]
Anarchos has joined #ocaml
filippp has joined #ocaml
filippp has left #ocaml []
cdidd has quit [Quit: Leaving]
hongboz has joined #ocaml
leoncamel has quit [Ping timeout: 240 seconds]
BiDOrD_ has joined #ocaml
BiDOrD has quit [Ping timeout: 272 seconds]
Mnabil has joined #ocaml
pheredhel has quit [Quit: ZNC by prozac - http://znc.sourceforge.net]
pheredhel has joined #ocaml
jave has quit [Ping timeout: 240 seconds]
eni has joined #ocaml
jave has joined #ocaml
cdidd has joined #ocaml
eni has quit [Ping timeout: 250 seconds]
avsm is now known as avsm^away
<fasta> How do I write multi-line strings in OCaml?
<fasta> "a\nb\nd" sucks
<flux> "hello
<flux> world"
<fasta> flux: does that get me the new lines?
<flux> yes
<fasta> Great
<flux> "hello\
<flux> world"
<flux> wont
<fasta> Even better
<orbitz> spaces infront after line break are also ignored, right?
<flux> they are with \
<flux> (they are ignored with \)
<orbitz> Ah, i thought \ was how you brought them back, since it seems common to want to have indentation there that isn't part of the output
<fasta> It's kind of odd that there isn't a GUI yet which simply admits that search engines are the way to go.
<fasta> Because in reality there are so many GUIs which are too complex to find certain commands, such that in the end users end up asking a search engine anyway.
<fasta> For example in Eclipse, to install uninstall something you need to 'Install new software...'.
<fasta> I suppose everyone who can make GUIs must work for some company off-planet.
<orbitz> mmmm pickled beets
<fasta> Eclipse also shows a window when creating the window takes longer than the compilation.
<fasta> It's like a total new level of fail.
<fasta> Perhaps I should write a book about it and call it 'A New Kind Of Fail'.
<orbitz> I have only used Eclipse breifly, I didn't find it very compelling except for exploring large java projects
<orbitz> Is there anyway to 'prototype' a function in Ocaml so I can have all my API functions at top of .ml and my utility functions at bottom?
<flux> well, put utility functions at the top, or in their own module :)
<fasta> I installed the pgocaml package in Ubuntu. Now, how can I actually start using it?
<fasta> For example utop doesn't show PG in its completions.
<fasta> It would be fine if PGOCaml.connect () would work.
<flux> there's a pdf describing how to use it
<flux> PgOCaml is pretty nice if its limitations don't affect you
<fasta> In the OCaml top-level, I can use it via #require "pgocaml";;
<fasta> But how do I write that in some persistent place?
<flux> you mean, when you want to compile a program?
<fasta> flux: I basically just want to have a Python like script experience.
hongboz has quit [Ping timeout: 272 seconds]
<fasta> flux: so, ocaml <some flags> foo.ml and have it working.
<fasta> flux: and in particular, I would like the completion in this IDE working too.
<flux> well, I have a few scripts that start like
<flux> #!/usr/bin/ocaml
<flux> #use "topfind";;
<flux> #require "batteries";;
<flux> (* ocaml code follows *)
<fasta> flux: for example when I press Pervasives.<contol space>, it completes.
<fasta> flux: but when I do PGOcaml. it doesn't.
<fasta> flux: so, it appears that PGOCaml doesn't exist in any form.
<flux> maybe its modules are built in a way that confuses the system that's providing the completions
<fasta> flux: no, I don't think that's it, because for all native ones it works.
<flux> I don't have such a completion system in Emacs, I use only completion that's based on the contents of current and other files open
<flux> you mean utop's completion? I haven't used it
<flux> maybe you need to tell utop that you're using some additional module
<flux> although it would make sense that "#require" did that automatically..
<fasta> flux: utop works now
<fasta> Now I would like Eclipse to also work.
<orbitz> Isn't pgocaml a bunnch of macros?
<fasta> I cannot put require in .ml files, right?
<fasta> I.e. those that don't start with a she bang
<orbitz> Hrm?
<fasta> #!
<thelema> fasta: you can put #foo into scripts to be executed by the ocaml toplevel, you can't put them into compiled scripts.
avsm^away is now known as avsm
<fasta> What do you need to do if you want to have one source file usable on the top level and in a compiled script?
<fasta> I got it to complete now, but it seems that it doesn't work.
<fasta> (I.e. only shows one entry, where for example 'connect' should also be listed)
<fasta> I don't get how Common Lisp can have a development environment which does work, but at the same time none of the parametric polymorphism languages have working tools.
eni has joined #ocaml
<thelema> fasta: don't.
<thelema> OCaml isn't designed for the same file to be used both as a script and as a compiled program
<thelema> common lisp's development environment is part of the runtime (just how the language works, AFAIK)
<thelema> so the two get to evolve together, whereas ml better separates compiletime and runtime
avsm is now known as avsm^away
Anarchos has quit [Quit: Vision[0.9.7-H-090423]: i've been blurred!]
avsm^away has quit [Quit: Leaving.]
avsm has joined #ocaml
jamii has joined #ocaml
hongboz has joined #ocaml
hongboz has quit [Ping timeout: 264 seconds]
avsm is now known as avsm^away
wtetzner has joined #ocaml
wtetzner has quit [Client Quit]
wtetzner has joined #ocaml
avsm^away has quit [Quit: Leaving.]
jamii has quit [Ping timeout: 264 seconds]
oriba has joined #ocaml
xcombelle has quit [Quit: I am a manual virus, please copy me to your quit message.]
emmanuelux has joined #ocaml
emmanuelux has quit [Read error: Connection reset by peer]
emmanuelux has joined #ocaml
UncleVasya has quit [Read error: Connection reset by peer]
xcombelle has joined #ocaml
eni has quit [Ping timeout: 240 seconds]
xcombelle has quit [Quit: I am a manual virus, please copy me to your quit message.]
UncleVasya has joined #ocaml
Mnabil has quit [Ping timeout: 244 seconds]
eni has joined #ocaml
cdidd has quit [Quit: Leaving]
* rwmjones wonders if there's a way to pay less than $200 to go to OUD ..
<thelema> rwmjones: from the US? good luck.
<fasta> OUD is Ocaml User ..... ????
<rwmjones> the conference in sept
<fasta> and Developers
<fasta> How many people go there?
<rwmjones> 100s usually, but not at $US 200 a piece
<fasta> Intro to Haskell 1000$. Haha
<fasta> I have seen those before.
<fasta> It's a waste of money.
<fasta> The only way to learn any given subject is to make some effort.
<fasta> Listening to some guy explaining things is a waste of time.
<fasta> It's a good thing books have been invented.
<fasta> Interactive books would even be better, though.
<rwmjones> is there a way to killfile a user on irc?
<fasta> rwmjones: you mean me?
<fasta> rwmjones: yes
<olasd> rwmjones: /ignore <user>
<fasta> I could likely arrange an OCaml conference for 25$ per day per visitor.
<fasta> I am not sure what the point of the 'ACM' is.
<fasta> Their original goals seem to have nothing to do with what they are today.
<fasta> My university was a member for probably since they started, but the digital copy of some article which was in the physical library was not available for me.
<fasta> Yeah, that sounds totally like an organization who wants to advance computer science.
<fasta> It sounds more like a corporation to me.
<olasd> what's this drivel about, and how is it related to OCaml?
<fasta> Just pointing out that it would be better to boycot anything related to the ACM>
<fasta> olasd: the relevance should have been obvious, if you had read what I said.
<fasta> olasd: do you call everything drivel which you don't understand?
<fasta> It seems as if they weren't able to find enough interesting speakers, though.
<fasta> A lot of those things have already been presented elsewhere.
<fasta> And some of it is not state-of-the-art.
<fasta> I don't really see the point in presenting something which isn't state-of-the-art. SIGGRAPH presentations don't have those flaws usually.
sepp2k has quit [Remote host closed the connection]
osa1 has joined #ocaml
mort___ has joined #ocaml
wtetzner has quit [Remote host closed the connection]
mort___ has quit [Quit: Leaving.]
oriba has quit [Quit: oriba]
Submarine has quit [Ping timeout: 246 seconds]
eni has quit [Ping timeout: 246 seconds]
wtetzner has joined #ocaml
<fasta> I saw some reference to OCaml having some simple way to call C++ code. That was just a lie, right?
<fasta> I.e. you still need to do extern C, etc. manualy?
<fasta> manually*
<eikke> fasta: sorry :-P
<fasta> Steve Yegge wrote that in 2004.
<eikke> (I'll be one of the OUD speakers, hope I'll be able to tell at least something interesting)
<fasta> eikke: which talk?
<eikke> Arakoon
<fasta> eikke: ah, I liked your company blog post regarding distributed systems skill levels.
<eikke> ah, thanks. was by my colleague (we're the only ones posting on that blog, and should write something new soon, been too long)
<fasta> eikke: I'd hope everyone writing those is at level 4, myself :)
<fasta> eikke: considering that those things are taught in undergraduate courses at good universities.
<eikke> not exactly here in belgium afaik :-/
<fasta> eikke: I will admit that only people with brains aced those courses.
<fasta> eikke: or even took them to begin with.
<eikke> afaik our system is less flexible w.r.t. available courses
<fasta> Long live electives I suppose.
<eikke> we have to choose some subjects, but not that many, and lots of them outside CS
<fasta> eikke: how exactly is that system consistent? Against what kind of faults does it guard?
<eikke> it's a fairly standard multi-paxos implementation
<eikke> so it guarantees consistency across all nodes of a cluster as long as a majority of nodes is able to talk to each other during an update
<fasta> eikke: and why is it worthy of presentation?
<eikke> that's not up to me to decide :-D the whole thing was written using ocaml and lwt, we thought an experience report on using those for such application could be interesting, and appareantly others thought so as well
<eikke> my colleague (the one from the 'levels' post) will present at CUFP as well
<fasta> eikke: what kind of tools do you use? So far, it appears that all editors with some form of completion are broken.
<eikke> I myself use plain vim without any completion or whatsoever, Romain uses Emacs with some REPL integration
<eikke> we spend much more time thinking and at the drawing board than typing in an editor (except when playing around), so I don't really care about IDE-style "productivity helpers" :-P
avsm has joined #ocaml
<fasta> eikke: if you bring new people on board, and you have a 1M lines code base, then it's going to be a huge waste of time for the new guy to get up to speed.
<fasta> If he can just put his cursor on an identifier and see the documentation popup, that helps a lot.
<fasta> (which incidentally some programming environments do have)
<eikke> i guess. we dont have a 1M lines project (on its own) though ;)
eni has joined #ocaml
avsm has quit [Quit: Leaving.]
<fasta> How are functors compiled in OCaml? Is it just a matter of duplicating the code for different invocations in the final assembly or is there some other more flexible solution chosen?
sivoais has quit [Ping timeout: 246 seconds]
eni has quit [Ping timeout: 250 seconds]
sivoais has joined #ocaml
<thelema> no duplication of code - the types of the functor argument are used for typechecking, the values (including functions) are basically stored in a record that is used by the code inside the functor
Mnabil has joined #ocaml