<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.]
<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.
<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
<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>
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....
<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)
<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]