<adrien>
finally got cross-compiler to windows with 4.03.0 beta1
<Anarchos>
adrien congratulations
<orbitz>
I wonder how hard it would be to make some kind of type annotation that guarantees a value is immutable
<orbitz>
adrien: Nice
lokien_ has joined #ocaml
<Anarchos>
orbitz you will end like hongwei xi ....
<orbitz>
Anarchos: ATS?
<orbitz>
Specifically I'm thinking for multicore it would be nice to mak eit so only immutable things can pass between whatever unit of parallel work is
<orbitz>
I don't know what the multicore work is doing though
<orbitz>
any good way to keep up with the active multicore work?
mysiticity has joined #ocaml
<flux>
uh oh, again a pause of one month in ocaml-multicore commits!
jgjl has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<orbitz>
oh noes
<orbitz>
flux: have you been following ocaml-multicore much/
<flux>
not really
<flux>
sometimes I check the most recent commit log messages :)
<orbitz>
flux: do you have any idea what they are doing to not make the memory model pure insanity?
<flux>
what is the pure insanity part?
<orbitz>
like teh C++ or Java memory model in the face of threads is near impossible to understand
<flux>
I would certainly hope "use mutexes and everything is just fine" would work ;)
<orbitz>
You need to understand when writes will actually be seena cross threads, it's easy to do operations which make values make no sense.
<flux>
(of course, preferably use message passing)
<orbitz>
No, mutexes suck
<flux>
certainly there can be no problems if all you do is pass immutable messages
<orbitz>
At several State of the union messages, a big thing Xavier brought up was trying ot avoid a memory model as insane as Java's. It'd be a shame if, after all this time, we got something just as bad.
<flux>
you're afraid of seeing half-constructed objects?
<orbitz>
It's difficult to enumerate all the things I'm afraid of given a complicated memory model
<Anarchos>
what about the old multithreaded GC from the original Damien Doligez's thesis ?
<orbitz>
I wa shoping that after all these years, someone would have figured out a way to give Ocaml what Haskell has for parallelism.
dsheets has joined #ocaml
<orbitz>
hi dsheets, have you been following multicore well?
<ggole_>
OCaml doesn't have linearity or purity to save it from the madness
<orbitz>
ggole_: Indeed, which is why I'm curious exactly how multicore is attacking it. Do you know?
dsheets has quit [Ping timeout: 250 seconds]
<ggole_>
Nope.
dsheets has joined #ocaml
dsheets has quit [Remote host closed the connection]
dsheets has joined #ocaml
dsheets has quit [Remote host closed the connection]
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
TheLemonMan has joined #ocaml
Emmanuel` has quit [Client Quit]
Emmanuel` has joined #ocaml
jbrown has quit [Remote host closed the connection]
Anarchos has quit [Remote host closed the connection]
<ggole_>
OCaml's top level mutual recursion seems rather misdesigned to me
<ggole_>
If you want a mixture of modules, classes, types etc to mutually recur you get to jump through ridiculous hoops
<mrvn>
yeah, let rec ... should allow classes
<ggole_>
Recursive modules allow arbitrary mutual recursion between all forms, which is why I suggested them
<mrvn>
they also require a full signature so all the type inference goes out the window.
<ggole_>
Yep
<mrvn>
hard to read too
<ggole_>
And occasionally they refuse to compile
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
octachron has joined #ocaml
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
<mrvn>
method centralWidget : 'd OWidget.oWidget OWidget.oWidget
<mrvn>
The method centralWidget has type 'd OWidget.oWidget OWidget.oWidget where 'd is unbound. Is there a way to make that allowed?
<mrvn>
I realy have no idea what 'd might be. It should be left ubound and unbindable.
<mrvn>
Works fine as function but not as method.
<mrvn>
small example: class foo = object method any x = Obj.magic x end;;
<malc_>
mrvn: I think Jacques Garrigue is your man for those questions
<ggole_>
class foo = object method any : 'a 'b . 'a -> 'b = fun x -> Obj.magic x end
<mrvn>
*slap* I added the "'d ." in the signature but not in the actualy class.
<mrvn>
Here is an error I have never seen before: type t = unit oMainWindow oMainWindow
<mrvn>
Error: This type unit should be an instance of type 'a C.oMainWindow
mxv has joined #ocaml
butts_butts has quit [Ping timeout: 244 seconds]
<mrvn>
I remember something about errors when a method of "class ['a] foo" uses a "'b foo" then type inference guesses 'a == 'b. But I can't find how to solve that. Ideas?
lokien_ has quit [Quit: Connection closed for inactivity]
<ggole_>
More info?
nuuit has joined #ocaml
<mrvn>
method setCentralWidget : 'b . 'b OWidget.oWidget -> unit = fun w -> let widget_proxy = w#proxy in E.setCentralWidget proxy widget_proxy
<mrvn>
Error: This method has type 'a OWidget.oWidget OWidget.oWidget -> unit which is less general than 'b. 'b OWidget.oWidget -> unit
<mrvn>
val setCentralWidget : 'a C.oMainWindow Proxy.t -> 'b OWidget.oWidget Proxy.t -> unit
<mrvn>
I think the "w#proxy" makes ocaml think 'a == 'b
<ggole_>
Looks like it isn't polymorphic enough
<ggole_>
(Programming with these half-assed rank-n types is a pain in OCaml.)
<mrvn>
class ['a] oClass (proxy : 'a Proxy.t) = object(self : 'self) val proxy = proxy method proxy = proxy end
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
<mrvn>
Woth OMainWindow and OWidget are based on OClass eventually.
<mrvn>
Both
djellemah has quit [Ping timeout: 240 seconds]
<ggole_>
Yeah, that won't satisfy a forall constraint
<mrvn>
which part?
<ggole_>
Here's a short example of the problem:
<ggole_>
type t = { id : 'a . 'a -> 'a } let test = function (f : 'a -> 'a) -> { id = f }
<ggole_>
This won't type check because of pretty much the same problem
malc_ has quit [Quit: ERC (IRC client for Emacs 25.0.50.2)]
<ggole_>
forall means that type variables *must* be rigidly polymorphic: the caller of test cannot be allowed to select any particular type for 'a (it would be unsound), which is why it is rejected
<mrvn>
I'm not selecting anyway.
<ggole_>
You might be able to use a wrapper record to provide the polymorphism
butts_butts has joined #ocaml
<ggole_>
(You need the wrapper because OCaml requires that all such polymorphism be in record fields or object methods.)
<ggole_>
That is, something like type poly_widget = { 'a . 'a OWidget.oWidget }
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
<ggole_>
Hmm.
orbifx has joined #ocaml
<mrvn>
hah, got it.
foolishmonkey has joined #ocaml
<mrvn>
"method with_foo : 'b . 'b foo foo" and the right constraint on the class 'a itself.
<mrvn>
I hate doing type inference on objects myself.
<mrvn>
Surprisingly that simple file actually takes noticable time to compile.
<ggole_>
Yeah, recursive modules aren't really very nice
<mrvn>
I wonder: When I connect one widgets signal to another widgets slot should that keep the widgets alive as long as one lives? Or should that be a Weak.t?
rossberg has quit [Ping timeout: 264 seconds]
<tobiasBora>
ggole_: It works, great, thank you !
<tobiasBora>
ggole_: the 'a . is like "for all type 'a ... " right ?
<ggole_>
Yep
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
<tobiasBora>
Ok thank you !
rossberg has joined #ocaml
djellemah has joined #ocaml
<mrvn>
Anyone have a bit of myocamlbuild.ml source that uses "ocamlc -i" to save the infered types?
djellemah_ has joined #ocaml
<octachron>
mrvn, ocamlbuild *.inferred.mli does not work for you?
<mrvn>
Ocamlbuild cannot find or build *.inferred.mli. A file with such a name would usually be a source file. I suspect you have given a wrong target name to Ocamlbuild.
djellemah has quit [Ping timeout: 240 seconds]
<octachron>
even with expanding the glob pattern?
<mrvn>
Ocamlbuild cannot find or build OMainWindow.inferred.mli. A file with such a name would usually be a source file. I suspect you have given a wrong target name to Ocamlbuild.
<mrvn>
I'm using oasis and tried: ocaml setup.ml -build OMainWindow.inferred.mli
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
butts_butts has quit [Ping timeout: 268 seconds]
<octachron>
mrvn, it seems that oasis doesn't pass the right options onto ocamlbuild, depending on what you need, you could call ocamlbuild directly
mysiticity has joined #ocaml
struk|desk|away is now known as struk|desk
octachron has quit [Read error: Connection reset by peer]
mysiticity has quit [Ping timeout: 246 seconds]
malc_ has joined #ocaml
<mrvn>
% ocamlbuild OMainWindow.inferred.mli
<mrvn>
Solver failed: Ocamlbuild cannot find or build OMainWindow.inferred.mli. A file with such a name would usually be a source file. I suspect you have given a wrong target name to Ocamlbuild.
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
xvw has joined #ocaml
sh0t has joined #ocaml
<xvw>
Hi
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
mysiticity has joined #ocaml
sz0 has quit [Quit: Bye.]
sh0t has quit [Ping timeout: 240 seconds]
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
Emmanuel` has quit [Client Quit]
Emmanuel` has joined #ocaml
struk|desk is now known as struk|desk|away
sz0 has joined #ocaml
sh0t has joined #ocaml
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
struk|desk|away is now known as struk|desk
butts_butts has joined #ocaml
dhil has joined #ocaml
djellemah_ is now known as djellemah
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
butts_butts has quit [Ping timeout: 244 seconds]
butts_butts has joined #ocaml
struk|desk is now known as struk|desk|away
malc_ has quit [Ping timeout: 248 seconds]
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
lokien_ has joined #ocaml
beginner has joined #ocaml
<beginner>
is there some minimal example how to use bin_prot?
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has joined #ocaml
please_help has quit [Ping timeout: 268 seconds]
please_help has joined #ocaml
malc_ has joined #ocaml
aantron has joined #ocaml
<orbitz>
Where does ocamlnet fit in with Lwt and Async?
jeffmo has joined #ocaml
seangrove has joined #ocaml
Maelan has quit [Ping timeout: 250 seconds]
tobiasBora has quit [Ping timeout: 268 seconds]
Haudegen has quit [Ping timeout: 276 seconds]
StatelessCat has quit [Changing host]
StatelessCat has joined #ocaml
sh0t has quit [Ping timeout: 250 seconds]
xvw has left #ocaml [#ocaml]
seangrove has quit [Remote host closed the connection]
averell has joined #ocaml
<jyc>
orbitz: it doesn't require either of them
<jyc>
its a pretty big collection of stuff and I haven't used most of it, but there is useful stuff in there for HTML parsing etc.
<orbitz>
is it complimentary? I sit like a 3rd concurrency option?
seangrove has joined #ocaml
sh0t has joined #ocaml
Haudegen has joined #ocaml
<seangrove>
Algebr`: Do you have a good example of calling objective-c functions from ocaml? Looking through Tallgeese, but having a hard time finding anything
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
<flux>
orbitz, I don't think ocamlnet provides anything in the concurrency part, except for multiprocessing
FreeBirdLjj has joined #ocaml
<flux>
orbitz, if you use ocamlnet in a concurrent setting, you're expected to use possible the OCaml Thread module
<flux>
afaik it doesn't support any monadic concurency
Emmanuel` has quit [Quit: Konversation terminated!]
Emmanuel` has quit [Quit: Konversation terminated!]
lobo has quit [Quit: leaving]
Emmanuel` has joined #ocaml
tizoc has joined #ocaml
jerith has joined #ocaml
cschneid has joined #ocaml
<flux>
why of course, sympa.inria.fr is chosen to not let google visit its pages.
doppsko has joined #ocaml
_habnabit has joined #ocaml
<flux>
and its search is completely useless or I don't know how to use it.
jyc has joined #ocaml
Simn has quit [Quit: Leaving]
<flux>
and apparently the data is not provided as mail boxes. do I have permission to be annoyed of this level of informatino lock down?-(
<Drup>
There is a thread about that :D
Emmanuel` has quit [Quit: Konversation terminated!]
doppsko has left #ocaml [#ocaml]
<flux>
I guess the heroic way to go about this would be to write a new mailing list archive front in eliom and point it to one's personal caml archive :)