ChanServ changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.02.1 announcement at http://ocaml.org/releases/4.02.html | Public channel logs at http://irclog.whitequark.org/ocaml
reem has quit [Remote host closed the connection]
reem has joined #ocaml
prsn has quit [Ping timeout: 272 seconds]
prsn has joined #ocaml
ghostpl_ has joined #ocaml
ghostpl_ has quit [Ping timeout: 256 seconds]
MercurialAlchemi has quit [Ping timeout: 250 seconds]
MercurialAlchemi has joined #ocaml
prsn has quit [Ping timeout: 245 seconds]
prsn has joined #ocaml
tnguyen has joined #ocaml
madroach_ has quit [Ping timeout: 264 seconds]
boogie has joined #ocaml
madroach has joined #ocaml
boogie has quit [Remote host closed the connection]
struktured has quit [Ping timeout: 265 seconds]
prsn has quit [Ping timeout: 250 seconds]
Haudegen has quit [Ping timeout: 240 seconds]
prsn has joined #ocaml
beginner has quit [Read error: Connection reset by peer]
beginner has joined #ocaml
struktured has joined #ocaml
rgrinberg has quit [Ping timeout: 256 seconds]
reem has quit [Remote host closed the connection]
Haudegen has joined #ocaml
reem has joined #ocaml
reem has quit [Remote host closed the connection]
cdidd has quit [Quit: Leaving]
reem has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
reem has quit [Remote host closed the connection]
madroach has joined #ocaml
prsn has quit [Ping timeout: 264 seconds]
reem has joined #ocaml
paradoja has quit [Ping timeout: 264 seconds]
prsn has joined #ocaml
reem has quit [Remote host closed the connection]
cdidd has joined #ocaml
dhil has quit [Quit: Leaving]
reem has joined #ocaml
reem has quit [Remote host closed the connection]
rgrinberg has joined #ocaml
prsn has quit [Ping timeout: 255 seconds]
reem has joined #ocaml
prsn has joined #ocaml
prsn has quit [Ping timeout: 245 seconds]
darkf has joined #ocaml
prsn has joined #ocaml
nullcat has joined #ocaml
tongcx has joined #ocaml
tongcx has left #ocaml ["WeeChat 1.1.1"]
nuki has quit [Ping timeout: 244 seconds]
tnguyen has quit [Ping timeout: 245 seconds]
struktured has quit [Ping timeout: 264 seconds]
tnguyen has joined #ocaml
ghostpl_ has joined #ocaml
prsn has quit [Ping timeout: 272 seconds]
ghostpl_ has quit [Ping timeout: 264 seconds]
prsn has joined #ocaml
nuki has joined #ocaml
oriba has quit [Quit: Verlassend]
iorivur has quit [Ping timeout: 265 seconds]
prsn has quit [Ping timeout: 252 seconds]
rgrinberg has quit [Ping timeout: 265 seconds]
prsn has joined #ocaml
beginner has quit [Ping timeout: 264 seconds]
tnguyen has quit [Quit: tnguyen]
beginner has joined #ocaml
rgrinberg has joined #ocaml
prsn has quit [Ping timeout: 252 seconds]
prsn has joined #ocaml
iorivur has joined #ocaml
rjcode has joined #ocaml
c74d has quit [Read error: Connection reset by peer]
ebzzry_ has joined #ocaml
ebzzry has quit []
badkins has quit []
prsn has quit [Ping timeout: 256 seconds]
prsn has joined #ocaml
rgrinberg has quit [Quit: WeeChat 1.1.1]
jprakash has quit [Quit: leaving]
nuki has quit [Ping timeout: 252 seconds]
thomasga has joined #ocaml
prsn has quit [Ping timeout: 246 seconds]
iorivur has quit [Ping timeout: 265 seconds]
prsn has joined #ocaml
struktured has joined #ocaml
thomasga has quit [Quit: Leaving.]
beginner has quit [Ping timeout: 252 seconds]
beginner has joined #ocaml
prsn has quit [Ping timeout: 245 seconds]
prsn has joined #ocaml
ghostpl_ has joined #ocaml
reem has quit [Remote host closed the connection]
reem has joined #ocaml
ghostpl_ has quit [Ping timeout: 244 seconds]
reem has quit [Remote host closed the connection]
boogie has joined #ocaml
prsn has quit [Ping timeout: 240 seconds]
prsn has joined #ocaml
boogie has quit [Remote host closed the connection]
prsn has quit [Ping timeout: 264 seconds]
prsn has joined #ocaml
reem has joined #ocaml
psy_ has joined #ocaml
rjcode` has joined #ocaml
rjcode has quit [Ping timeout: 276 seconds]
SGrondin has left #ocaml [#ocaml]
prsn has quit [Ping timeout: 245 seconds]
prsn has joined #ocaml
reem has quit [Remote host closed the connection]
ggole has joined #ocaml
reem has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
madroach has joined #ocaml
prsn has quit [Ping timeout: 246 seconds]
meteo_ has quit [Quit: Leaving]
prsn has joined #ocaml
ghostpl_ has joined #ocaml
nullcat has quit [Read error: Connection reset by peer]
nullcat has joined #ocaml
ghostpl_ has quit [Ping timeout: 264 seconds]
nullcat has quit [Read error: Connection reset by peer]
nullcat has joined #ocaml
<ggole> Fatal error: exception File "typing/typecore.ml", line 1941, characters 65-71: Assertion failed \o/
<Drup> how did you do that ? :D
<ggole> Used a _ in the wrong place
<Drup> whath place ?
<Drup> -h
<ggole> Just a sec, lemme see if I can get a small repro
slash^ has joined #ocaml
prsn has quit [Ping timeout: 255 seconds]
prsn has joined #ocaml
<ggole> Hmm.
<ggole> Compile with -rectypes
<ggole> Should happen with 4.02.1 and 4.03+trunk
<Drup> huum, rectypes.
<ggole> Finding it a bit hard to repro in a smaller case though
prsn has quit [Ping timeout: 256 seconds]
prsn has joined #ocaml
<ggole> Ah
<Drup> unbound value nested
Jaood has joined #ocaml
<ggole> Er, updated
<Drup> I don't understand why you need rectypes to type that.
<ggole> I don't.
<Drup> it doesn't type without it
<ggole> An assertion failure from the compiler is still a bug though.
<Drup> sure, sure, and I can reproduce
<ggole> The fix to the program is simple: replace the _ with b
<Drup> I'm just wondering why the compiler refuses it without rectypes
Jaood has left #ocaml [#ocaml]
<ggole> Er, the second one doesn't
<Drup> oh, right, I got it
<ggole> That is, the second program compiles cleanly without -rectypes (if you substitute b for _)
<Drup> it justs that without rectypes, it rightfully refuses the insufficiantly quantified program
<ggole> Yeah
<Drup> while with rectypes it just crash
prsn has quit [Ping timeout: 256 seconds]
<ggole> Alright, submitted a report
prsn has joined #ocaml
prsn has quit [Ping timeout: 265 seconds]
prsn has joined #ocaml
nuki has joined #ocaml
nuki has quit [Client Quit]
rjcode`` has joined #ocaml
rjcode` has quit [Ping timeout: 276 seconds]
prsn has quit [Ping timeout: 272 seconds]
prsn has joined #ocaml
ghostpl_ has joined #ocaml
Submarine has joined #ocaml
Submarine has joined #ocaml
govg has quit [Quit: leaving]
prsn has quit [Ping timeout: 245 seconds]
pyon has quit [Quit: fix]
prsn has joined #ocaml
pyon has joined #ocaml
ghostpl_ has quit [Ping timeout: 255 seconds]
struktured has quit [Ping timeout: 256 seconds]
prsn has quit [Ping timeout: 272 seconds]
prsn has joined #ocaml
Simn has joined #ocaml
nullcat has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
prsn has quit [Ping timeout: 252 seconds]
prsn has joined #ocaml
xificurC has joined #ocaml
beginner has quit [Ping timeout: 246 seconds]
beginner has joined #ocaml
prsn has quit [Ping timeout: 265 seconds]
beginner has quit [Max SendQ exceeded]
beginner has joined #ocaml
prsn has joined #ocaml
zpe has joined #ocaml
prsn has quit [Ping timeout: 256 seconds]
zpe_ has joined #ocaml
prsn has joined #ocaml
zpe has quit [Ping timeout: 265 seconds]
arquebus has joined #ocaml
MercurialAlchemi has quit [Remote host closed the connection]
MercurialAlchemi has joined #ocaml
prsn has quit [Ping timeout: 245 seconds]
prsn has joined #ocaml
tane has joined #ocaml
mort___ has joined #ocaml
beginner has quit [Ping timeout: 252 seconds]
ghostpl_ has joined #ocaml
beginner has joined #ocaml
beginner has joined #ocaml
zpe_ has quit [Remote host closed the connection]
ghostpl_ has quit [Ping timeout: 250 seconds]
Submarine has quit [Quit: Leaving]
prsn has quit [Ping timeout: 265 seconds]
prsn has joined #ocaml
ebzzry_ has quit [Remote host closed the connection]
arquebus has left #ocaml [#ocaml]
arquebus has joined #ocaml
arquebus has left #ocaml [#ocaml]
beginner has quit [Read error: Connection reset by peer]
beginner has joined #ocaml
prsn has quit [Ping timeout: 246 seconds]
prsn has joined #ocaml
pyx has joined #ocaml
pyx has quit [Client Quit]
freling has joined #ocaml
prsn has quit [Ping timeout: 240 seconds]
prsn has joined #ocaml
zpe has joined #ocaml
marynate has joined #ocaml
mort___ has quit [Quit: Leaving.]
marynate has quit [Read error: Connection reset by peer]
marynate has joined #ocaml
prsn has quit [Ping timeout: 245 seconds]
prsn has joined #ocaml
reem has quit [Remote host closed the connection]
prsn has quit [Ping timeout: 264 seconds]
zpe has quit [Remote host closed the connection]
prsn has joined #ocaml
matason has joined #ocaml
ghostpl_ has joined #ocaml
prsn has quit [Ping timeout: 246 seconds]
prsn has joined #ocaml
ghostpl_ has quit [Ping timeout: 240 seconds]
xificurC has quit [Ping timeout: 245 seconds]
zpe has joined #ocaml
ygrek has quit [Ping timeout: 245 seconds]
prsn has quit [Ping timeout: 245 seconds]
yminsky has joined #ocaml
prsn has joined #ocaml
rjcode`` has quit [Remote host closed the connection]
Haudegen has quit [Ping timeout: 246 seconds]
matason has quit [Quit: matason]
prsn has quit [Ping timeout: 255 seconds]
prsn has joined #ocaml
destrius has quit [Ping timeout: 264 seconds]
zpe has quit [Remote host closed the connection]
destrius has joined #ocaml
paradoja has joined #ocaml
zpe has joined #ocaml
Haudegen has joined #ocaml
matason has joined #ocaml
prsn has quit [Ping timeout: 272 seconds]
prsn has joined #ocaml
sdothum has joined #ocaml
TheLemonMan has joined #ocaml
prsn has quit [Ping timeout: 272 seconds]
prsn has joined #ocaml
freling has quit [Quit: Leaving.]
ghostpl_ has joined #ocaml
matason has quit [Ping timeout: 246 seconds]
jprakash has joined #ocaml
AlexRussia has quit [Ping timeout: 244 seconds]
ghostpl_ has quit [Ping timeout: 256 seconds]
AlexRussia has joined #ocaml
zpe has quit [Remote host closed the connection]
prsn has quit [Ping timeout: 256 seconds]
prsn has joined #ocaml
zpe has joined #ocaml
Haudegen has quit [Ping timeout: 264 seconds]
Haudegen has joined #ocaml
prsn has quit [Ping timeout: 265 seconds]
yminsky has quit [Quit: yminsky]
prsn has joined #ocaml
freling has joined #ocaml
yminsky has joined #ocaml
shinnya has quit [Ping timeout: 252 seconds]
prsn has quit [Ping timeout: 264 seconds]
prsn has joined #ocaml
reem has joined #ocaml
zpe has quit [Remote host closed the connection]
reem has quit [Ping timeout: 240 seconds]
iorivur has joined #ocaml
yminsky has quit [Quit: yminsky]
RossJH has joined #ocaml
prsn has quit [Ping timeout: 246 seconds]
prsn has joined #ocaml
yminsky has joined #ocaml
snikkers has joined #ocaml
freling has quit [Quit: Leaving.]
prsn has quit [Ping timeout: 246 seconds]
struktured has joined #ocaml
matason has joined #ocaml
jprakash has quit [Ping timeout: 250 seconds]
prsn has joined #ocaml
dhil has joined #ocaml
marynate has quit [Quit: Leaving]
ghostpl_ has joined #ocaml
prsn has quit [Ping timeout: 256 seconds]
prsn has joined #ocaml
kakadu has joined #ocaml
yminsky has left #ocaml [#ocaml]
yminsky has joined #ocaml
matason has quit [Ping timeout: 252 seconds]
prsn has quit [Ping timeout: 252 seconds]
prsn has joined #ocaml
ptc has joined #ocaml
ptc is now known as Guest38499
Submarine has joined #ocaml
<gasche> 17:24 <haesbaert> but seriously, is there a policy of not putting any kind of examples in the manual, or of giving small, almost cryptic explanations of it ?
<gasche> no, and your pull requests to improve it are more than welcome
<gasche> (the documentation of library modules is auto-generated from the corresponding .mli, and the rest of the manual has a dedicated repo ocaml-manual on github)
<gasche> (loaded-by-default modules such as Printf are in stdlib/, the rest (Num, Bigarray, Str, etc.) in otherlibs/)
Guest38499 has quit [Ping timeout: 240 seconds]
darkf has quit [Quit: Leaving]
ptc_ has joined #ocaml
Anarchos has joined #ocaml
prsn has quit [Ping timeout: 245 seconds]
prsn has joined #ocaml
beginner has quit [Ping timeout: 245 seconds]
beginner has joined #ocaml
beginner has quit [Max SendQ exceeded]
beginner has joined #ocaml
freling has joined #ocaml
leowzukw has joined #ocaml
leowzukw has quit [Client Quit]
prsn has quit [Ping timeout: 250 seconds]
prsn has joined #ocaml
Haudegen has quit [Ping timeout: 244 seconds]
vpm has quit [Quit: co'o]
freling has quit [Quit: Leaving.]
vpm has joined #ocaml
Haudegen has joined #ocaml
prsn has quit [Ping timeout: 245 seconds]
xificurC has joined #ocaml
prsn has joined #ocaml
jbalint_ has quit [Ping timeout: 244 seconds]
beginner has quit [Ping timeout: 256 seconds]
beginner has joined #ocaml
yminsky has quit [Quit: yminsky]
prsn has quit [Ping timeout: 256 seconds]
prsn has joined #ocaml
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
c74d has joined #ocaml
kakadu has quit [Ping timeout: 256 seconds]
prsn has quit [Ping timeout: 272 seconds]
prsn has joined #ocaml
kakadu has joined #ocaml
rossberg_ has joined #ocaml
myst|work has quit [Ping timeout: 245 seconds]
rossberg has quit [Ping timeout: 245 seconds]
myst|work has joined #ocaml
The_Mad_Pirate has quit [Excess Flood]
The_Mad_Pirate has joined #ocaml
mort___ has joined #ocaml
prsn has quit [Ping timeout: 245 seconds]
iorivur has quit [Ping timeout: 250 seconds]
prsn has joined #ocaml
Haudegen has quit [Ping timeout: 244 seconds]
yminsky has joined #ocaml
Haudegen has joined #ocaml
iorivur has joined #ocaml
prsn has quit [Ping timeout: 252 seconds]
prsn has joined #ocaml
ptc_ has quit [Ping timeout: 250 seconds]
nullcat has joined #ocaml
prsn has quit [Ping timeout: 246 seconds]
prsn has joined #ocaml
zpe has joined #ocaml
prsn has quit [Ping timeout: 256 seconds]
zpe has quit [Remote host closed the connection]
prsn has joined #ocaml
prsn has quit [Ping timeout: 256 seconds]
prsn has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
madroach has joined #ocaml
govg has joined #ocaml
beginner has quit [Ping timeout: 256 seconds]
beginner has joined #ocaml
beginner has joined #ocaml
Haudegen has quit [Ping timeout: 265 seconds]
AlexRussia has quit [Ping timeout: 252 seconds]
WraithM has joined #ocaml
Haudegen has joined #ocaml
prsn has quit [Ping timeout: 240 seconds]
prsn has joined #ocaml
ygrek has joined #ocaml
bjorkintosh has quit [Quit: Leaving]
mort___ has quit [Quit: Leaving.]
iorivur has quit [Quit: No Ping reply in 180 seconds.]
iorivur has joined #ocaml
<jbrown> dumb GADT question: is it possible to make code like this work? http://pastebin.com/qVD0658U
<jbrown> i.e. if GADT value is "specialised" midway through a function, can the language's "normal" polymorphism handle that specialised result?
prsn has quit [Ping timeout: 250 seconds]
prsn has joined #ocaml
<ggole> jbrown: I don't think so
AlexRussia has joined #ocaml
slash^ has quit [Read error: Connection reset by peer]
<companion_cube> apparently not
<jbrown> hum.
<ggole> I think you can do it if you change your GADT a bit though
<jbrown> so, I guess the natural solution is to split such functions into two? It's clearly possible to have the List.map *outside* eval
<companion_cube> it's a matter of generalization, I gues
<companion_cube> s
madroach has quit [Ping timeout: 264 seconds]
<jbrown> cool, thanks! I'll have to think about this a while longer ;-)
madroach has joined #ocaml
<ggole> Hmm, why isn't the other way working?
<ggole> I think the problem is that there is no way to phrase the result in terms of the variable a
<jbrown> right, yeah
<ggole> Because you've specified the GADT in terms of, say, int list t and (int * int) list t is not OK
<jbrown> (this is in the context of https://github.com/ocsigen/js_of_ocaml/pull/256 btw)
<ggole> So there's no way to write the annotation
<jbrown> so "list" is substituting for "Js.t" here
<ggole> What does the (fun x -> x, x) stand for?
yminsky has quit [Quit: yminsky]
<ggole> If there's a way to reflect that in the Js.t type you could probably proceed fairly easily
<jbrown> the rest of the perform_raw_url function...
<jbrown> I'll play around with it a bit more I think
<ggole> Or maybe what you want is let eval : type a . a list t -> (a * a) list = ...
<ggole> Dunno
reem has joined #ocaml
<jbrown> I'm partly trying to understand how the types propagate around for GADTs... I don't find it very intuitive
destrius has quit [Ping timeout: 264 seconds]
yminsky has joined #ocaml
<companion_cube> ggole: I tried it, the problem is in the intermediate variable, I think
<mrvn> jbrown: most of the time they don't propagate and you have to annotate the functions.
<jbrown> hm, ok.
prsn has quit [Ping timeout: 244 seconds]
<jbrown> it's kind of hard to retrofit this to existing code ;-)
<ggole> companion_cube: seems to work with the right annotation
<companion_cube> http://vrac.cedeela.fr/truc.ml ← right
<ggole> With GADTs, error messages are not as helpful as you might like :(
prsn has joined #ocaml
<jbrown> so the real-world equivalent of "eval" takes like 12 arguments, and I wanted to avoid writing each of their types explicitly
<ggole> If the function needs to be polymorphic in terms of a GADT type parameter, I don't think you have a choice
<ggole> Unless you can break things up a bit.
<jbrown> yeah, maybe I can
<jbrown> the patch will be a bit more invasive then though
<ggole> You could just substitute useless type variables for arguments you don't care about.
<ggole> Or _, doesn't that work?
<jbrown> oh maybe
<ggole> Yeah, _ should let you omit parts of the annotation
destrius has joined #ocaml
ericwa has joined #ocaml
boogie has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
oriba has joined #ocaml
oriba has quit [Remote host closed the connection]
madroach has joined #ocaml
yminsky has quit [Quit: yminsky]
martintrojer has quit [Ping timeout: 246 seconds]
prsn has quit [Ping timeout: 272 seconds]
martintrojer has joined #ocaml
yminsky has joined #ocaml
prsn has joined #ocaml
bjorkintosh has joined #ocaml
<Algebr> What is a .cmxs?
Anarchos has joined #ocaml
iorivur has quit [Ping timeout: 265 seconds]
nullcat has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<Anarchos> I need help to compile coq.
<tobiasBora> Hello !
iorivur has joined #ocaml
<tobiasBora> I'm trying to document my code and generate documentation with ocamldoc (well eliomdoc but it's the same thing)
<tobiasBora> However I have some troubles to understand how I can use @raise, link to another modules, and describe in a proper way the parameters of a function...
<ousado> has anyone here installed ocaml via the ocpwin distribution and managed to compile/install opam somehow?
<tobiasBora> I tried to read the documentation but without examples it's a bit difficult to understand
prsn has quit [Ping timeout: 250 seconds]
prsn has joined #ocaml
pyon has quit [Quit: My morality has evaporated under the harsh UV light.]
<tobiasBora> so do you have any advice or a good example I could look into ?
pyon has joined #ocaml
<tobiasBora> Oh
<tobiasBora> In the official source code they just use [ ]
<tobiasBora> So what @raise is for ?
<Drup> {!Foo} to link to the Foo module
matason has joined #ocaml
romildo has joined #ocaml
Haudegen has quit [Ping timeout: 250 seconds]
<tobiasBora> Ok I'll use it. Thank you !
<companion_cube> Anarchos: what's wrong?
teiresias has quit [Ping timeout: 244 seconds]
<tobiasBora> By the way Drup, do you know why when I put a documentation in a .eliomi file the doc is linked with the bottom value, even if there is an empty line between. In the documentation they say that in .mli files the link it made with the value above.
<Anarchos> companion_cube Error: Unbound module CompatLoc
<Drup> and @raise is for ... exceptions :D
<Drup> it takes the path of an exception :p
teiresias has joined #ocaml
mort___ has joined #ocaml
<tobiasBora> Drup: but what is the difference between "May raise {!Not_found} if ..." and "@raise Not_found I don't know how to use it"
<tobiasBora> ?
<companion_cube> Anarchos: did you try to compile a release version?
<Anarchos> companion_cube yes 8.4pl5
<Anarchos> and i have both camlp4 and camlp5
<Drup> tobiasBora: an hypothetical documentation exploration tool could take advantage of the fact that you indicated in a computer-parsable format that it raises. :)
<companion_cube> yeah
<Drup> tobiasBora: prefer the metadata way
Haudegen has joined #ocaml
<tobiasBora> Drup: You mean I should prefer the @raise way in : (** [get_exn x] behaves like the [get] function but
<tobiasBora> raise [Is_not_some] if [x] is [None].
<tobiasBora> @raise Is_not_some description*)
<Drup> yes.
prsn has quit [Ping timeout: 246 seconds]
<tobiasBora> Ok thank you
<companion_cube> tobiasBora: are you reinventing an option module? :D
<tobiasBora> companion_cube: Yes I do :D
<companion_cube> oh god :D
* companion_cube looking forward to seing new wheels
prsn has joined #ocaml
<tobiasBora> ^^
<tobiasBora> You mean I should use this one : http://ocaml-lib.sourceforge.net/doc/Option.html ?
<companion_cube> well there's a lot of choice
<Drup> use containers >_>
<companion_cube> where is this from? never heard of ocaml-lib
<companion_cube> is this... the internal ocaml library?
<whitequark> no
<whitequark> extlib
<tobiasBora> What ? O_o
<companion_cube> oh, ok
reem has quit [Remote host closed the connection]
<Drup> companion_cube: it's far too organized to be the internal ocaml library
<Drup> in it, you have twice as many functions
<Drup> but each define 3 time, in 3 different part of the compilers
ggole has quit []
reem has joined #ocaml
<Drup> with different names
<tobiasBora> Which one should I use so ?
<Drup> tobiasBora: use containers and start inventing new wheels instead of redoing obvious ones
<companion_cube> tobiasBora: it's the first time you wonder which stdlib/stdlib extension to use?
<tobiasBora> And I have an excuse to rebuild the wheels : I want to define also some clients values in eliom
<Drup> I don't see how the option module as anything to do with eliom
<Drup> especially since there is an option module in ocsigen_lib
<tobiasBora> companion_cube: I tried during an hour to get the documentation of Eliom_lib.option, I didn't find it, so I do my own :P
<Drup> you didn't try very hard
<tobiasBora> *Drup ^
<Drup> http://ocsigen.org/eliom/4.1/api/server/Eliom_lib <- first link in the page leads to Ocsigen_lib. just after there is "include Ocsigen_lib"
<Drup> http://ocsigen.org/ocsigenserver/2.5/api/Ocsigen_lib <- include Ocsigen_lib_base
<Drup> Just clicking links. It's not as good as it should, I agree, but one hour ? really ?
<yminsky> There’s no question that doc generation is a real problem, though.
<yminsky> Hopefully Leo and Sheets’ work will land and will be good.
<yminsky> I’m tired of being embarrassed by the poor quailty of generated docs...
<Drup> yminsky: totally agreed
<companion_cube> tobiasBora: take a look at ocamloscope
<Anarchos> companion_cube no idea for my coq compile error ?
<companion_cube> no, sorry :/
<companion_cube> I'll try myself once Ive cloned cq
<companion_cube> coq
<Drup> yminsky: though, to be honest, core is subpar in this matter, even compared to the rest of the ocaml ecosystem. I think bunzli has proven very well that ocamldoc is not as intractable as everyone say it is.
<yminsky> drup: Core makes heavy use of the module system, and that is poorly supported by the tools.
<yminsky> The docs themselves need improvement, but the complete inability of the current system to handle packed modules are a real issue.
<Drup> come one, you don't even have an organized index and comments in the .mli ...
<tobiasBora> Drup: whooo... There are 4 links to follow, and go to the bottom of the page, it's well hidden ^^ And it works both in client side/server side ?
<Drup> tobiasBora: Yes
romildo has quit [Quit: Leaving]
<companion_cube> Drup: at least Core has a consistent naming convention, come on
<Drup> yminsky: we have complicated functors in eliom too, I fought with ocamldoc too :D
<yminsky> Given that the doc toolchain doesn’t really work, we don’t really use it. We just read the mli’s internally, and so we don’t put a lot of energy into making those docs good.
Submarine has quit [Quit: Leaving]
<tobiasBora> companion_cube: ocamloscope ? No I don't know that ^^
<Drup> I didn't won to my entire satisfaction, though.
<whitequark> i find the module system a kind of a failure. it's just barely good enough so that you don't throw it away entirely
<Drup> yminsky: it works, It's not pretty and it's broken on complicated functors, but it works.
<yminsky> Drup: There are many bugs we’ve fought with. And packed modules don’t work correctly at all.
<companion_cube> tobiasBora: it's neat, given ('a -> 'b) -> 'a option -> 'b option, for instance, you should get a list of libraries that define this function
<tobiasBora> Really ? Nice...
<tobiasBora> I should try to install it
<whitequark> sure, it gives you particular typing things you want. in exchange it forces an awkward structure onto your code, doesn't work with docs, can't be used in toplevel ml/mli files, doesn't work with packing, ...
<yminsky> Drup: camlp4 I believe introduces some of the problems. Soon we’ll be rid of both camlp4 (for ppx) and packed modules (for module aliases), and a bunch of things will get simpler.
shinnya has joined #ocaml
<Drup> yminsky: camlp4 add a lot of issues, yes
<tobiasBora> companion_cube: is it still maintened ?
<yminsky> It is maintained, but not deeply loved.
<yminsky> Jeremie Dimino is the current maintainer, but I think his ambitions are merely to keep it working correctly.
prsn has quit [Ping timeout: 272 seconds]
<Drup> whitequark: it works fine with docs, that's FUD, don't blame the module system for the shortcoming of ocamldoc é~
<yminsky> Jane Street (and I think the vast majority of users) are simply jumping ship.
<companion_cube> tobiasBora: errr, I can't find it, only its code on github :s
<whitequark> Drup: assumed broken until proven fixed
<whitequark> :p
<yminsky> Drup: What’s the FUD? That camlp4 introduces doc generation bugs? That the doc system doesn’t cope well with all module system features?
<companion_cube> I'd b curious about 1ML in practice
<Drup> yminsky: no, whitequark's nonsense
<Drup> yes, the later
<Drup> or rather, he's saying that the module is bad because ocamldoc is bad
<Drup> which is nonsense
prsn has joined #ocaml
<Drup> whitequark: try codoc.
<whitequark> [ERROR] No package named codoc found.
<Drup> yes, in beta, not released yet.
<whitequark> ... it requires a custom switch?
<Drup> yeah
<companion_cube> why so?
<Drup> like your m17, if I might say so.
<Drup> companion_cube: .cmt
<whitequark> Drup: not anymore
<companion_cube> you mean regular .cmt don't contain enough info?
<Drup> whitequark: well, .cmt has not been merged, since the relevant PR
<Drup> yes
<yminsky> whitequark: codoc isn’t fully ready for prime time yet. Leo is working on getting a patch accepted upstream, and Sheets is working on generating high quality CSS and the like.
<Drup> +is still in discussion
<Drup> it's not ready, but it's already really great
<Drup> yminsky: what are you though on namespaces ?
<companion_cube> so codoc will only work with 4.03 ?
<yminsky> I don’t see an obvious need for namespaces, given that we have module aliases.
<yminsky> Not saying there isn’t one, but I’ve yet to understand what it is.
<Drup> yminsky: wouldn't you lack to ditch the whole Core_kernel/Core distinction ?
<Drup> like* ~~
<Drup> You would have a Core and an Async namespace only
<Drup> and no need for these *_kernel *_extra silly affixes
<Drup> if you cut down Core further, which other library do, you can see how it can be useful :p
<Drup> (Lwt is a good example)
<yminsky> Well, wouldn’t you want to be able to open up a more minimal namespace so you know what dependencies you’re hitting?
<yminsky> If I open Core_kernel, I know I’m portable.
<mrvn> Drup: a namespace is open though while module aliases are closed
<yminsky> But with aliases, it doesn’t require me to actually link everything in.
<whitequark> -package core.kernel
<Drup> yminsky: it wouldn't require any more linking
<yminsky> I only link in the modules I actually use. What else should I want?
<Drup> as whitequark, you link the minimal one anyway ...
<yminsky> Wait, but it doesn’t require linking now!
<yminsky> (or rather, it won’t, when we publish a version that uses module aliases. We’re still testing it internally.)
<Drup> yes, but you still need to distinguish between Core_kernel. and Core.
<Drup> which doesn't have any semantic meaning
<yminsky> But, if you want to be able to express the fact that you’re not depending on the unix bits, you need to say that somewhere, don’t you?
<Drup> you are already saying you are portable by choosing the right library.
<Drup> well, in the build system ?
<Drup> (or the project description, rather)
<companion_cube> I found http://lambda-the-ultimate.org/node/5079 very interesting (unrelated)
<Drup> you already have this information in the project description, why do you want to *also* have it in the module opening
<yminsky> What you’re saying isn’t crazy.
<Drup> err, thanks, I guess :D
<yminsky> But the cost of saying “Core_kernel” instead of “Core” seems relatively modest to me. I wouldn’t spend time designing a new language feature to get rid of it.
<tobiasBora> Does anyone knows why the function has this type val bind : 'a t -> ('a -> 'b t) -> 'b t
<yminsky> (sorry, that’s my lingo for “seems like a reasonable idea”. I pathologically default to faint praise.)
<companion_cube> tobiasBora: this is the very classical "monadic bind"
<tobiasBora> and not this : val bind : ('a -> 'b t) -> 'a t -> 'b t
<Drup> yminsky: the benefit is small for core because your package architecture is not very module
nze has joined #ocaml
<Drup> modular*
<yminsky> So yeah, I could see some benefits to a better namespace system, but I’m not sure it’s worth either the time to create or the complexity.
<Drup> consider Lwt, or mirage ...
<companion_cube> oh, it's a convention of putting the "main type" first
<tobiasBora> companion_cube: but why this convention ? After it's not possible the chain it with something like |> ...
<yminsky> Drup: we have 1000’s of packages that people use in many combinations. it’s perfectly modular. We just think it’s useful to have a core library with a fair amount as part of the “batteries included” style base.
<companion_cube> tobiasBora: it's older than |> afaict
<Drup> yminsky: I mean that the "Core" namespace effectively have 3 package
<Drup> the rest don't need to be in this namespace.
<Algebr> Which language has a model module/namespace?
<Algebr> or rather a good one
<Drup> yminsky: also, I would add that the patch is already written and rather lightweight. :)
<mrvn> Anarchos: good enough to set the destination in the self driving car
<mrvn> ups, ewin
<yminsky> Drup: which patch? I’ve seen several proposals.
sheijk has quit [Quit: .]
<Drup> the last one, from ocamlpro.
<yminsky> It’s been a long time since I read the proposal, but I was not convinced that it was a good design at the time. I’d have to go back and think about it carefully to remember why, though....
sheijk has joined #ocaml
<Drup> it was not completely ironed out
<Drup> but the patchset was very small.
<companion_cube> I have a bad memory of the proposal for namespaces at a recent OUPS
<companion_cube> it looked very hacish
<companion_cube> hackish
<yminsky> This was my memory as well....
<yminsky> Anyway, I don’t think it should be the highest priority. So much other good stuff on the horizon: docs, inlining, multicore, GC improvements, implicits....
<yminsky> Oh, and improvements to the compiler toolchain to make it easier to maintain Merlin.
<Drup> fore core, maybe, for small libraries, solving the issue of optional dependencies is rather important
<companion_cube> agreed
<companion_cube> (agree with yminsky I mean)
<companion_cube> Drup: what do you mean, optional dependencies?
<companion_cube> doesn't opam solve this?
<Drup> no, the module architecture issue
<yminsky> optional dependencies seem like a tricky thing — hard to reason about. I htink I’d prefer a system without optional dependencies.
<tobiasBora> companion_cube: indeed your CCOpt lib is great, I'll pick it !
<Drup> I don't think you can do such thing yminsky.
<Drup> the issue is the same as usual
<Drup> I have a library Foo
<yminsky> they make me uneasy in opam as well. I don’t know why cohttp had optional dependencies on Async and Lwt. It seems better to have three packages: a base package, one that supports cohttp, and one that supports async.
<companion_cube> tobiasBora: if it's for Eliom, there's already one, I think
<companion_cube> bu anyway, you can depend on containers or copy the source file (BSD)
<tobiasBora> companion_cube: The Eliom one is really poor
<Drup> I want to optionally a gtk interface
<Drup> +provide*
<yminsky> Great. Make it a new package.
Haudegen has quit [Ping timeout: 264 seconds]
<yminsky> Or rather, why not make it a new package? I like the idea that a single package has an immutable meaning. Optional depdenencies feel, well, imperative.
<Drup> let me finish, new package or not, it doesn't change anything
<yminsky> OK, sorry for interrupting.
<Drup> I can't provide Foo.Gtk
<Drup> it has to be Foo_gtk
<Drup> which is silly.
<Drup> we have a nice module system
reem has quit [Remote host closed the connection]
<Drup> what do we do ?
prsn has quit [Ping timeout: 246 seconds]
<Drup> We encode hierarchy in underscores.
<yminsky> I think I understand your concern.
freling has joined #ocaml
<yminsky> What we do in our libraries is to rewrite the hierarchies.
<Drup> yes, I noticed
<Drup> and it's barely better, tbh ;)
<yminsky> So Core_kernel has one namespace, and Core does an extension and minimal rewrite of it.
<yminsky> Similarly with Async. I agree it’s somewhat awkward.
<Drup> It's a rather enormous misuse of the module hierarchy
<yminsky> And I agree that a more flexible namespace construct would make it nicer.
<flux> soo.. open modules?-)
<Drup> I mean, isn't it very weird that the modules hierarchies in OCaml are very flat ?
<yminsky> I won’t go so far as “enormous misuse”. It seems to me a very natural use.
ygrek has quit [Ping timeout: 246 seconds]
prsn has joined #ocaml
<Drup> we use _ in a lot of libraries
<Drup> to encode this
<Drup> but it's an encoding, and not an especially nice one, on top of it.
<yminsky> So, to go back to what I said before: I agree this would be nice. But it strikes me as a small compared to other improvements we could be making.
<Drup> yminsky: well, as I said, it's already written and the patchset is rather small :p
<Drup> (and clearly, Core is the one that would benefit from it the less, in the OCaml community)
<Drup> (jst in general*)
<yminsky> yminsky: As I said, my distinct memory is that it didn’t seem like a paritcularly clean design to me.
<yminsky> I agree that we have fewer optional dependencies than most.
<Drup> yeah, I know, I would argue that the presentation didn't do the patch justice :p
<yminsky> My belief is that no one has designed a really good solution to this. If someone designs (and carefully writes up) a good one, I suspect there will be a real chance of acceptance.
reem has joined #ocaml
<Drup> ok.
<yminsky> Mimic Alain Frisch: he’s over the years written careful and patient descriptions of changes he’s wanted to make (like extension points), and won people over, and got them through. That work has yet to be done for namespaces.
<Drup> (as a side note, it's not completely innocent from my parent, this would help eliom greatly)
<Drup> parts*
<Drup> ~~
<Drup> my english is getting less good as time goes
reem has quit [Read error: Connection reset by peer]
<Drup> and I have exam to grads
reem has joined #ocaml
<Drup> yminsky: thanks for the discussion.
<companion_cube> +1
<yminsky> No problem! Cheers.
<companion_cube> Drup: well, you should talk to Fabrice and get him to write a nice description of his patch
<companion_cube> or eve write it for him if you can sell it better ;)
Haudegen has joined #ocaml
<Drup> I'm probably going to reimplement a special purpose version of it in eliom anyway. =')
boogie has quit [Remote host closed the connection]
oscar_toro has quit [Quit: Lost terminal]
<companion_cube> .
reem has quit [Ping timeout: 252 seconds]
WraithM has quit [Ping timeout: 250 seconds]
WraithM has joined #ocaml
sinelaw has joined #ocaml
ollehar has quit [Remote host closed the connection]
ollehar has joined #ocaml
<sinelaw> what's a good purely functional tree structure for fast adding new leaves, and then fast traversal from root?
oscar_toro has joined #ocaml
<companion_cube> adding new leaves at the end?
<sinelaw> yes
<companion_cube> a functional queue
<sinelaw> new nodes
<sheijk> maybe finger trees, too
<companion_cube> a lot of variations exist, the simplest is: type 'a queue = { head : 'a list; tail : 'a list}
<companion_cube> finger trees are complicated
<sinelaw> companion_cube, nodes can have more than one child (hence a tree)
<sinelaw> *need to have
<companion_cube> there are probably other alternatives on the web
<companion_cube> this is from Okasaki's book, btw
<sinelaw> companion_cube, neat, but...I need multiple children per node
<companion_cube> sure, that's the case here
<sinelaw> oh?
<companion_cube> what you want is good complexity, right?
prsn has quit [Ping timeout: 256 seconds]
<sinelaw> yes
<sinelaw> not having to copy the whole tree over every time a new child node is added
nullcat_ has joined #ocaml
<sinelaw> in non-pure it would just be replacing a pointer
prsn has joined #ocaml
reynir is now known as kdd1b
<sheijk> 20:36 < yminsky> Anyway, I don't think it should be the highest priority. So much other good stuff on the horizon: docs, inlining, multicore, GC improvements, implicits.... <- this sounds nearly too good to be true. any good places to learn more about it, especially docs, implicits and multicore?
<companion_cube> sinelaw: well sure, every functional queue does it, in some way
<sinelaw> queue of queues?
<companion_cube> sheijk: for doc, lookup "codoc"
<companion_cube> implicits and multicore are both ocamllabs projects afaik
<apache2> oh, and dead code elimination? will we get that?
<apache2> concurrency / message passing sounds really really nice too
<companion_cube> sinelaw: the point is, people have been thinking about efficient functional queues
<apache2> what's the status on that?
<apache2> mlton has some ... but not quite erlang yet?
kdd1b is now known as KDDLB
<companion_cube> multicore is not finished afaik, implicits aren't either (no theoreticalsoundnss proof)
KDDLB has quit [Disconnected by services]
<companion_cube> soundness*
<Anarchos> apache2 does the compiler introduce dead code ??
reynir has joined #ocaml
<apache2> companion_cube: I'm curious as to whether the multicore thing will be implemented in a way that will make it easier to run things distributed across multiple devices as well
<apache2> or if it'll "only" be local
Algebr has quit [Ping timeout: 245 seconds]
<companion_cube> multiple devices sounds really hard
<companion_cube> I don't think it's the plan
<apache2> erlang does that :D
<companion_cube> yes, but taht was their point from the beginning, wasn't it?
<apache2> sure
c74d has quit [Read error: Connection reset by peer]
prsn has quit [Ping timeout: 244 seconds]
paradoja has quit [Remote host closed the connection]
prsn has joined #ocaml
paradoja has joined #ocaml
c74d has joined #ocaml
c74d has quit [Read error: Connection reset by peer]
larhat has quit [Quit: Leaving.]
sinelaw has quit [Quit: Leaving]
reem has joined #ocaml
paradoja has quit [Ping timeout: 272 seconds]
prsn has quit [Ping timeout: 265 seconds]
prsn has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
<jbrown> ggole, companion_cube: https://github.com/puppeh/js_of_ocaml/commit/cc42c058a2e0b59c0aff964a1b33e30d2d2f0296 if you're interested -- seems to work! Thanks for the help earlier
<jbrown> ...oh, ggole left
<Drup> jbrown: nice, I'll take a look tomorrow
<jbrown> Drup: thanks!
c74d has joined #ocaml
Haudegen has quit [Ping timeout: 245 seconds]
yminsky has quit [Quit: yminsky]
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
c74d has quit [Read error: Connection reset by peer]
prsn has quit [Ping timeout: 265 seconds]
prsn has joined #ocaml
reem has quit [Remote host closed the connection]
c74d has joined #ocaml
Haudegen has joined #ocaml
reem has joined #ocaml
c74d has quit [Read error: Connection reset by peer]
RossJH has quit [Quit: Textual IRC Client: www.textualapp.com]
reem has quit [Ping timeout: 264 seconds]
jprakash has joined #ocaml
swgillespie has joined #ocaml
yminsky has joined #ocaml
yminsky has quit [Client Quit]
madroach has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 264 seconds]
prsn has quit [Ping timeout: 244 seconds]
prsn has joined #ocaml
tane has quit [Quit: Verlassend]
freling has quit [Quit: Leaving.]
kakadu has quit [Remote host closed the connection]
c74d has joined #ocaml
TheLemonMan has quit [Quit: leaving]
matason has quit [Ping timeout: 252 seconds]
madroach has quit [Ping timeout: 264 seconds]
prsn has quit [Ping timeout: 264 seconds]
madroach has joined #ocaml
prsn has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
madroach has joined #ocaml
prsn has quit [Ping timeout: 264 seconds]
madroach has quit [Ping timeout: 264 seconds]
xificurC has quit [Ping timeout: 255 seconds]
madroach has joined #ocaml
mort___ has quit [Quit: Leaving.]
madroach has quit [Ping timeout: 264 seconds]
prsn has joined #ocaml
beginner has quit [Ping timeout: 255 seconds]
beginner has joined #ocaml
yminsky has joined #ocaml
dsheets has quit [Ping timeout: 265 seconds]
madroach has joined #ocaml
lnich has quit [Ping timeout: 256 seconds]
lnich has joined #ocaml
beginner has quit [Ping timeout: 252 seconds]
boogie has joined #ocaml
beginner has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
prsn has quit [Ping timeout: 264 seconds]
prsn has joined #ocaml
yminsky has quit [Quit: yminsky]
prsn has quit [Ping timeout: 250 seconds]
prsn has joined #ocaml
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
ghostpl_ has quit [Remote host closed the connection]