flux changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | OCaml 4.01.0 http://bit.ly/1851A3R | http://www.ocaml.org | Public logs at http://tunes.org/~nef/logs/ocaml/
thomasga has quit [Quit: Leaving.]
tulloch has joined #ocaml
yminsky has joined #ocaml
tulloch has quit [Ping timeout: 240 seconds]
talzeus has quit [Remote host closed the connection]
talzeus has joined #ocaml
yminsky has quit [Quit: yminsky]
talzeus has quit [Ping timeout: 246 seconds]
cesar_ has joined #ocaml
cesar_ is now known as Guest87415
ygrek_ has joined #ocaml
Guest87415 has quit [Ping timeout: 272 seconds]
jonludlam has quit [Remote host closed the connection]
csakatoku has joined #ocaml
talzeus has joined #ocaml
cricri_ has joined #ocaml
mcclurmc has joined #ocaml
cricri has quit [Ping timeout: 265 seconds]
BitPuffin has quit [Ping timeout: 272 seconds]
nikki93 has joined #ocaml
everyonemines has quit [Quit: Leaving.]
manud_ has quit [Ping timeout: 264 seconds]
justdit has quit [Ping timeout: 272 seconds]
tulloch has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
tulloch has quit [Ping timeout: 272 seconds]
Xenasis has quit [Remote host closed the connection]
strobegen has joined #ocaml
nikki93 has quit [Remote host closed the connection]
nikki93 has joined #ocaml
nikki93 has quit [Remote host closed the connection]
pango_ has quit [Ping timeout: 252 seconds]
csakatoku has quit [Remote host closed the connection]
nikki93 has joined #ocaml
csakatoku has joined #ocaml
stomp has joined #ocaml
csakatoku has quit [Ping timeout: 272 seconds]
pango has joined #ocaml
boogie has quit [Remote host closed the connection]
csakatoku has joined #ocaml
nikki93 has quit [Remote host closed the connection]
cesar_ has joined #ocaml
cesar_ is now known as Guest79111
nikki93 has joined #ocaml
manud_ has joined #ocaml
tulloch has joined #ocaml
mcclurmc has joined #ocaml
tulloch has quit [Ping timeout: 252 seconds]
pkrnj has quit [Ping timeout: 240 seconds]
mcclurmc has quit [Ping timeout: 272 seconds]
pkrnj has joined #ocaml
manizzle has quit [Ping timeout: 245 seconds]
osa1 has joined #ocaml
Guest79111 has quit [Remote host closed the connection]
nikki93 has quit [Remote host closed the connection]
pkrnj has quit [Quit: Textual IRC Client: www.textualapp.com]
darkf has quit [Ping timeout: 240 seconds]
darkf has joined #ocaml
nikki93 has joined #ocaml
WraithM has joined #ocaml
tulloch has joined #ocaml
yacks has quit [Ping timeout: 252 seconds]
tulloch has quit [Ping timeout: 252 seconds]
mcclurmc has joined #ocaml
manud_ has quit [Quit: Leaving]
mcclurmc has quit [Ping timeout: 272 seconds]
tulloch has joined #ocaml
nikki93 has quit [Remote host closed the connection]
Neros has quit [Read error: Operation timed out]
cesar_ has joined #ocaml
cesar_ is now known as Guest62219
mcclurmc has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
Guest62219 has quit [Ping timeout: 246 seconds]
mcclurmc has joined #ocaml
csakatoku has quit [Remote host closed the connection]
ggole has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
ggole has quit [Ping timeout: 246 seconds]
nikki93 has joined #ocaml
nikki93 has quit [Remote host closed the connection]
nikki93 has joined #ocaml
tulloch has quit [Ping timeout: 264 seconds]
ggole has joined #ocaml
csakatoku has joined #ocaml
tulloch has joined #ocaml
nikki93 has quit [Remote host closed the connection]
tulloch has quit [Ping timeout: 264 seconds]
nikki93 has joined #ocaml
tulloch has joined #ocaml
mcclurmc has joined #ocaml
tulloch has quit [Ping timeout: 272 seconds]
mcclurmc has quit [Ping timeout: 264 seconds]
cricri has joined #ocaml
cricri_ has quit [Ping timeout: 245 seconds]
mcclurmc has joined #ocaml
ygrek_ has quit [Ping timeout: 272 seconds]
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
manizzle has joined #ocaml
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
WraithM has quit [Ping timeout: 248 seconds]
Simn has joined #ocaml
WraithM has joined #ocaml
cesar_ has joined #ocaml
cesar_ is now known as Guest82960
manizzle has quit [Remote host closed the connection]
manizzle has joined #ocaml
rand000 has joined #ocaml
Guest82960 has quit [Ping timeout: 265 seconds]
mcclurmc has quit [Remote host closed the connection]
Kueken_2 is now known as Kueken
gour has joined #ocaml
nikki93 has quit [Remote host closed the connection]
tulloch has joined #ocaml
ygrek_ has joined #ocaml
csakatok_ has joined #ocaml
tulloch has quit [Ping timeout: 264 seconds]
csakatoku has quit [Ping timeout: 246 seconds]
wormphlegm has quit [Ping timeout: 272 seconds]
ttamttam has joined #ocaml
mcclurmc has joined #ocaml
cesar_ has joined #ocaml
chambart has joined #ocaml
cesar_ is now known as Guest15289
baz_ has joined #ocaml
mcclurmc has quit [Ping timeout: 245 seconds]
tulloch has joined #ocaml
chambart has quit [Remote host closed the connection]
w0rm_x has joined #ocaml
tulloch has quit [Ping timeout: 245 seconds]
csakatok_ has quit [Remote host closed the connection]
csakatoku has joined #ocaml
w0rm_x has left #ocaml []
csakatoku has quit [Ping timeout: 252 seconds]
djcoin has joined #ocaml
wormphlegm has joined #ocaml
wormphlegm has quit [Ping timeout: 272 seconds]
Guest15289 has quit [Remote host closed the connection]
csakatoku has joined #ocaml
NoNNaN has quit [Remote host closed the connection]
cago has joined #ocaml
zpe has joined #ocaml
mika1 has joined #ocaml
mika1 has quit [Read error: Connection reset by peer]
AltGr has joined #ocaml
mika1 has joined #ocaml
BitPuffin has joined #ocaml
BitPuffin has quit [Read error: Operation timed out]
nikki93 has joined #ocaml
ocp has joined #ocaml
osa1 has quit [Ping timeout: 272 seconds]
rwmjones_afk is now known as rwmjones
mcclurmc has joined #ocaml
Fnar has quit [Ping timeout: 246 seconds]
Fnar has joined #ocaml
mcclurmc has quit [Ping timeout: 245 seconds]
baz_ has quit [Remote host closed the connection]
Kakadu has joined #ocaml
tulloch has joined #ocaml
tulloch has quit [Ping timeout: 240 seconds]
thomasga has joined #ocaml
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
csakatoku has quit [Ping timeout: 272 seconds]
wormphlegm has joined #ocaml
baz_ has joined #ocaml
paolooo has joined #ocaml
paolooo_ has joined #ocaml
ollehar has joined #ocaml
jonludlam has joined #ocaml
csakatoku has joined #ocaml
wormphlegm has quit [Ping timeout: 245 seconds]
paolooo has quit [Ping timeout: 250 seconds]
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
csakatoku has quit [Ping timeout: 264 seconds]
csakatoku has joined #ocaml
dsheets_ has quit [Ping timeout: 245 seconds]
cesar_ has joined #ocaml
cesar_ is now known as Guest92787
csakatoku has quit [Remote host closed the connection]
Guest92787 has quit [Ping timeout: 252 seconds]
csakatoku has joined #ocaml
kyrylo has joined #ocaml
paolooo_ has quit [Quit: Page closed]
csakatoku has quit [Read error: Connection reset by peer]
csakatoku has joined #ocaml
rand000 has quit [Ping timeout: 264 seconds]
_5kg has quit [Ping timeout: 252 seconds]
BitPuffin has joined #ocaml
_5kg has joined #ocaml
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
mcclurmc has joined #ocaml
skchrko has quit [Quit: Leaving]
vanh` has joined #ocaml
csakatoku has quit [Ping timeout: 245 seconds]
mcclurmc has quit [Ping timeout: 248 seconds]
tulloch has joined #ocaml
thomasga has quit [Quit: Leaving.]
csakatoku has joined #ocaml
thomasga has joined #ocaml
avsm has joined #ocaml
avsm has quit [Client Quit]
tulloch has quit [Ping timeout: 272 seconds]
avsm has joined #ocaml
dsheets_ has joined #ocaml
avsm has quit [Client Quit]
adrien_oww has joined #ocaml
adrien_o1w has quit [Ping timeout: 272 seconds]
wormphlegm has joined #ocaml
<Kueken> So I want to write an ocaml system monitor tool as a learning exercise and because I hate conky? Are there any libraries already there that would make getting system info like processor capacity and temperature etc easier?
vanh` has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
wormphlegm has quit [Ping timeout: 245 seconds]
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
csakatoku has quit [Ping timeout: 272 seconds]
<sgnb> Kueken: easier than what? reading in /sys and /proc ?
kyrylo has quit [Ping timeout: 245 seconds]
<Kueken> sgnb, more like if a lib already exists that does it so I don't re-invent something already existing.
csakatoku has joined #ocaml
<sgnb> I would have a look at how similar software is implemented, but I doubt there is an existing library with OCaml bindings
<Kueken> sgnb, so just reading and parsing /proc is the way to go?
<Kueken> I thought maybe a set of system calls would exist
<sgnb> Kueken: if you don't want to spend too much time on this, I would say so
<gasche> a CPU load monitor written in OCaml
<gasche> but it does everything by itself (eg. uses glut for display, etc.)
yacks has joined #ocaml
<sgnb> interesting
<gasche> note that a lot of the low-level bindings apc implemented in C should be part of ExtUnix nowadays
<gasche> ( http://extunix.forge.ocamlcore.org/ has support for nice, getting the number or processors, etc.)
<sgnb> oh, apc also includes a kernel module
<gasche> I think on a linux host I would *still* start by reading/writing /proc, but that could still be inspiration
<Kueken> gasche, extunix is a library?
<sgnb> yes
<Kueken> Hmm
<Kueken> It seems to be a module for low level unix system stuff?
<gasche> yes
<gasche> most of which you shouldn't need
<gasche> but if at some point you think "oh, I wish I could do this system call", you should look into ExtUnix and possibly send a patch there
<Kueken> Ah yes.
<Kueken> And apc is moe an actual system monitor than a library for doing so right?
tulloch has joined #ocaml
<Kueken> I intend to mostly make a command line tool whic queries system data
mchqwerty has joined #ocaml
<gasche> yes, apc is a graphic monitor
tulloch has quit [Ping timeout: 240 seconds]
mort___ has joined #ocaml
nikki93 has quit [Remote host closed the connection]
bjorkintosh has quit [Ping timeout: 265 seconds]
mcclurmc has joined #ocaml
mcclurmc has quit [Ping timeout: 248 seconds]
nikki93 has joined #ocaml
csakatoku has quit [Remote host closed the connection]
rand000 has joined #ocaml
_andre has joined #ocaml
tulloch has joined #ocaml
Kueken has quit [Disconnected by services]
nikki93 has quit [Remote host closed the connection]
Lajjla has joined #ocaml
wormphlegm has joined #ocaml
wormphlegm has quit [Ping timeout: 252 seconds]
cesar_ has joined #ocaml
cesar_ is now known as Guest58135
Guest58135 has quit [Ping timeout: 265 seconds]
mort___ has quit [Quit: Leaving.]
mort___ has joined #ocaml
kthl has joined #ocaml
talzeus has quit [Remote host closed the connection]
Neros has joined #ocaml
mcclurmc has joined #ocaml
talzeus has joined #ocaml
tulloch has quit [Ping timeout: 240 seconds]
thomasga has quit [Quit: Leaving.]
rand000 has quit [Ping timeout: 245 seconds]
mcclurmc has quit [Ping timeout: 248 seconds]
rand000 has joined #ocaml
thomasga has joined #ocaml
tulloch has joined #ocaml
tulloch has quit [Ping timeout: 240 seconds]
ygrek_ has quit [Ping timeout: 272 seconds]
thomasga has quit [Quit: Leaving.]
avsm has joined #ocaml
nikki93 has joined #ocaml
kthl` has joined #ocaml
thomasga has joined #ocaml
wormphlegm has joined #ocaml
kthl has quit [Ping timeout: 272 seconds]
nikki93 has quit [Ping timeout: 245 seconds]
talzeus has quit [Remote host closed the connection]
Kakadu has quit [Ping timeout: 250 seconds]
zpe_ has joined #ocaml
zpe_ has quit [Remote host closed the connection]
zpe_ has joined #ocaml
kthl`` has joined #ocaml
wormphlegm has quit [Read error: Operation timed out]
osa1 has joined #ocaml
zpe__ has joined #ocaml
zpe_ has quit [Read error: Operation timed out]
zpe has quit [Ping timeout: 246 seconds]
zpe__ has quit [Remote host closed the connection]
zpe has joined #ocaml
kthl` has quit [Ping timeout: 272 seconds]
jayprich has joined #ocaml
ttamttam has quit [Quit: ttamttam]
mort___ has quit [Quit: Leaving.]
sbidin` has joined #ocaml
* jayprich "drops pin"
thomasga has quit [Quit: Leaving.]
mfp has quit [Quit: Leaving]
breakds has joined #ocaml
zzz_ has joined #ocaml
zzz_` has quit [Ping timeout: 272 seconds]
_andre has quit [Quit: Lost terminal]
_andre has joined #ocaml
mfp has joined #ocaml
mcclurmc has joined #ocaml
djcoin has quit [Quit: WeeChat 0.4.1]
mcclurmc has quit [Ping timeout: 248 seconds]
bjorkintosh has joined #ocaml
t0yv0 has joined #ocaml
rwmjones has quit [Ping timeout: 246 seconds]
thomasga has joined #ocaml
cesar_ has joined #ocaml
cesar_ is now known as Guest5750
rwmjones has joined #ocaml
tulloch has joined #ocaml
jayprich has left #ocaml []
Guest5750 has quit [Ping timeout: 245 seconds]
darkf has quit [Quit: Leaving]
tulloch has quit [Ping timeout: 245 seconds]
Xenasis has joined #ocaml
tulloch has joined #ocaml
Yoric has joined #ocaml
csakatoku has joined #ocaml
tulloch has quit [Ping timeout: 246 seconds]
breakds has quit [Remote host closed the connection]
csakatoku has quit [Remote host closed the connection]
<Lajjla> The book eal world Ocaml seems to use a 'Float' module, googling fo it seems to imply that it's rather obscure but it has useful functions like Float.of_string, any way to install it with opam?
<companion_cube> it must be included in Core
<companion_cube> since RWO is based on core
<flux> standard ocaml has float_of_string, though
<flux> but sure, it's nice to have the organized under Float
tulloch has joined #ocaml
mcclurmc has joined #ocaml
<mrvn> let float_of_string s = Scanf.sscanf "%f" s (fun x -> x)
<Drup> mrvn: the built in float_of_string is not good enough for you ?
<flux> also there was the word "like"
<flux> the builtin functions are most just put into Pervasives :)
<flux> of course, grepping for 'float' from Pervasives can find them for you
<mrvn> where is the fun in that?
<mrvn> It's nice to have a module for every arithmetic type though so you can make functors over it.
<Drup> mrvn: please, once and for all, keep in mind that you are helping newbies, most of the time.
<mrvn> sorry, wasn't helping. just commenting
<Drup> indeed, you weren't.
* mrvn goes back watching the compiler compile.
kthl``` has joined #ocaml
<Lajjla> companion_cube, hmm, it works in utop but using ocaml itsleef interactively with a script gives me 'erorr, unbound module core'
kthl`` has quit [Ping timeout: 246 seconds]
ygrek_ has joined #ocaml
wormphlegm has joined #ocaml
<companion_cube> Lajjla: to make it work, you need to 1/ install core (opam install core) 2/ compile with core
<Lajjla> companion_cube, well core is in installed, and compile with core?
<companion_cube> I think RWO probably explains how to do that in some "setup" introductory section
<Lajjla> THis is an intereactive session
<companion_cube> ah, so you must #require "core";; or something
<Lajjla> YEah, I tried that and then it complains about an unknown directive require
<Lajjla> To be more exact, I have a file x.ml with a single function in it and I'm running ocaml.ml to try to see if the function works
<thomasga> opam config setup —ocamlinit
<Lajjla> At keast I'm tying to but it complains about all this stuff
<Lajjla> let me see
<Lajjla> Same stuff, unbound module core
tulloch has quit [Ping timeout: 246 seconds]
<Lajjla> Or is it impossible to use core with an interactive session?
tulloch has joined #ocaml
<companion_cube> Lajjla: try #use "topfind";; in your ocaml first
paolooo has joined #ocaml
<companion_cube> if it succeeds, then #require "core";; should succeed too (if core is installed)
<Lajjla> "cannot find file topfind"
<Lajjla> topfind works in utop by the way
<Lajjla> All this stuff works in utop, just not in an interactive ocaml session wherein I have defined a function to test
paolooo_ has joined #ocaml
<companion_cube> oh, I suspect you use a systemwide ocaml, whereas utop is the opam version
<Lajjla> Hmm
<Lajjla> As in there are two different ones installed?
<companion_cube> or it's a path problem
<Lajjla> I read that opam installs in your home instead of in /
<companion_cube> yes
talzeus has joined #ocaml
<companion_cube> that's why you need to "eval $( opam config env)"
<companion_cube> so that the path is properly set to ~/.opam
strobegen has quit [Quit: Leaving.]
paolooo has quit [Ping timeout: 250 seconds]
<Lajjla> The thing told me to do do that but with backticks and I did
<Lajjla> Just did it again, this time with $( ... ), still the same thig, cannot find file topfind
<smondet> Lajjla: so if you have the system-wide ocaml and you want to use it with opam's ocamlfind (the #use "topfind" thing)
<smondet> you need to call: ocaml -I $OCAML_TOPLEVEL_PATH
<smondet> where OCAML_TOPLEVEL_PATH has been set by eval `opam config env`
kthl```` has joined #ocaml
strobegen has joined #ocaml
kthl``` has quit [Ping timeout: 252 seconds]
skchrko has joined #ocaml
<Lajjla> smondet, nope, same error, echoing $OCAML_TOPLEVEL_PATH gives me '/home/laj/.opam/4.01.0/lib/toplevel'
<smondet> if it is ".opam/4.01.0/
<smondet> you're not using the system-wide ocaml
<smondet> what does "which ocaml" give you?
ollehar has quit [Quit: ollehar]
<Lajjla> smondet /home/laj/.opam/4.01.0/bin/ocaml
<Lajjla> But I got core to work now, don't ask me why, but ExtLib still doesn't work
<Lajjla> It works in utop but not in ocaml
<Lajjla> Nevermind, got that too
osa1 has quit [Quit: Konversation terminated!]
WraithM_ has joined #ocaml
mchqwerty has quit [Quit: Odcházím]
<sgnb> maurer: what do you mean by "The situation is worse than the cabal/os package manager situation"?
cesar_ has joined #ocaml
cesar_ is now known as Guest26584
skchrko has quit [Ping timeout: 264 seconds]
<adrien_oww> where?
sbidin` has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
Guest26584 has quit [Ping timeout: 272 seconds]
<maurer> sgnb: The packages which tend to be present in the OS package managers arefrequently out of date / incompatible with the new stuff, and can take >1yr in some cases to receive bugfixes
<mrvn> or just hours.
<Drup> maurer: like what ?
ollehar has joined #ocaml
<sgnb> ocaml itself, for example
<maurer> Drup: There was a bug in the batteries hashtable delete for a while - got fixed pretty quick in batteries proper, as of a few months ago the fix wasn't in debian
<Drup> yeah
<Drup> *debian*
<mrvn> maurer: did you make one?
<mrvn> (debian package)
<maurer> well, the guy in question when I said that was talking about using apt-get to install stuff
<sgnb> well, updating ocaml in debian is painful because it breaks everything
<maurer> mrvn: no, because for our research grant we were required to make a thing that ran on debian stable
<sgnb> but updating individual library is usually straightforward
ollehar has quit [Client Quit]
<maurer> mrvn: so we build batteries into our app instead
<sgnb> ah
<sgnb> of course, if you restrict to debian stable... but the problem is not specific to ocaml
<mrvn> maurer: you can still make a debian package and do a Non-Maintainer-Upload
<maurer> sgnb: Never said it was.
Neros has quit [Ping timeout: 245 seconds]
<maurer> sgnb: All I was trying to do was to tell a haskell guy why he should probably try to install from opam over apt-get :(
<Lajjla> smondet, ehh is '~/.opam/4.01.0/lib/toplevel' supposed to ocntain only one file 'topfind'?
<mrvn> That a batteries with a broken Hashtbl.delete got into stable in the first place is a problem. Shows a lack of good unit tests in batteries.
<sgnb> well, whatever you do with opam can be done with dpkg so it sounds strange to involve opam when debian is an imposed platform
<sgnb> however, using dpkg needs root privileges so this alone might be a reason to use opam depending on circumstances
<mrvn> The advantage of apt/dpkg is that it installed the right C libraries and keeps them at the right version.
<sgnb> indeed
ollehar has joined #ocaml
<mrvn> Mixing package management systems usualy isn't a good idea.
rand000 has quit [Ping timeout: 264 seconds]
<sgnb> C libraries and third-party tools (I remember needing installing m4 explicitly when using opam)
<adrien_oww> with ocaml at least, it's safe :P
skchrko has joined #ocaml
<adrien_oww> won't work :)
<mrvn> adrien_oww: if by work you mean your apps suddenly stop working because some lib got updated.
<smondet> Lajjla: I dependes on what you have installed for that switch (if you have ocamlfind installed "topfind" should be there I think)
<Lajjla> smondet so topfind and nothing more is fine?
<Lajjla> I had the idea that librariers were in there or something
<adrien_oww> mrvn: with static linking and checksums on ABI, you're pretty safe
<mrvn> adrien_oww: C libs are statically linked
<mrvn> not
<adrien_oww> not?
<adrien_oww> yeah
<adrien_oww> I was mostly joking :)
<sgnb> no, C libs are not statically linked
<mrvn> All the ocaml stuff will be in opam, that part is save.
<sgnb> C stubs are
<smondet> Lajjla: that's what I have, only topfind, but other libraries may install stuff specific to the toplevel
<sgnb> so if a C library is updated in an ABI-incompatible way, even OCaml binaries will crash
<sgnb> (or hopefully fail to start)
<mrvn> sgnb: in Debian they will refuse to start because the lib won't be there.
<Lajjla> smondet, hmm, do you otherwise know how to load an x.ml module into utop?
<smondet> Lajjla: usually packages install in <switch>/lib/<package> , <switch>/lib/toplevel is for the toplevel-only scripts
<sgnb> mrvn: if things are done right :-) which is not technically enforced by the toolchain AFAICT
<mrvn> sgnb: Debian is verry good there. Better than any other distribution.
<Lajjla> smondet, no I mean an x.ml file which I creatd myself which sits n a random directory
<Lajjla> Basically to test if the functions I defined in it work
<sgnb> mrvn: I know :-)
<smondet> → #use "x.ml";; ?
* mrvn just uses cut&paste for testing.
<Drup> mrvn, sgnb : I don't :D
ollehar has quit [Quit: ollehar]
amirmc has joined #ocaml
ollehar has joined #ocaml
gour has quit [Disconnected by services]
gour_ has joined #ocaml
gour_ is now known as gour
thomasga has quit [Ping timeout: 246 seconds]
thomasga has joined #ocaml
Kakadu has joined #ocaml
w0rm_x has joined #ocaml
cesar_ has joined #ocaml
cesar_ is now known as Guest76060
talzeus has quit [Read error: Connection reset by peer]
cago has left #ocaml []
mika1 has quit [Quit: Leaving.]
paolooo_ has quit [Quit: Page closed]
Yoric has quit [Ping timeout: 245 seconds]
mcclurmc has quit [Remote host closed the connection]
ollehar has quit [Quit: ollehar]
ygrek_ has quit [Ping timeout: 272 seconds]
BiDOrD_ has joined #ocaml
Kakadu_ has joined #ocaml
BiDOrD has quit [Ping timeout: 260 seconds]
sgnb has quit [Remote host closed the connection]
BitPuffin has quit [Ping timeout: 245 seconds]
<smondet> Lajjla: yes "#use" looks in the current directory and in every directory declared with "#directory", you can give any path
shinnya has joined #ocaml
sgnb has joined #ocaml
mcclurmc has joined #ocaml
ocp has quit [Ping timeout: 248 seconds]
tane has joined #ocaml
Kakadu has quit [Quit: Page closed]
Kakadu_ has quit []
ygrek_ has joined #ocaml
Guest76060 has quit [Remote host closed the connection]
tulloch has quit [Read error: Connection reset by peer]
nikki93 has joined #ocaml
cesar_ has joined #ocaml
cesar_ is now known as Guest88458
baz_ has quit [Remote host closed the connection]
tulloch has joined #ocaml
Guest88458 has quit [Remote host closed the connection]
nikki93 has quit [Ping timeout: 272 seconds]
t0yv0 has quit [Quit: Page closed]
kthl```` has quit [Ping timeout: 272 seconds]
jzelinskie has quit [Ping timeout: 260 seconds]
skchrko has quit [Quit: Leaving]
Yoric has joined #ocaml
jzelinskie has joined #ocaml
t0yv0 has joined #ocaml
kthl```` has joined #ocaml
ygrek_ has quit [Ping timeout: 246 seconds]
jbrown has quit [Remote host closed the connection]
Arsenik has joined #ocaml
adr has joined #ocaml
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
Kakadu has joined #ocaml
adr has quit [Quit: Quitte]
zpe has quit [Ping timeout: 240 seconds]
tulloch has quit [Read error: Connection reset by peer]
boogie has joined #ocaml
kthl```` has left #ocaml []
osa1_ has joined #ocaml
ericbmerritt has joined #ocaml
tristan__ has joined #ocaml
jonludlam has quit [Ping timeout: 252 seconds]
avsm has quit [Quit: Leaving.]
avsm has joined #ocaml
Xenasis has quit [Remote host closed the connection]
tulloch has joined #ocaml
kyrylo has joined #ocaml
contempt has quit [Ping timeout: 252 seconds]
contempt has joined #ocaml
avsm has quit [Ping timeout: 272 seconds]
boogie has quit [Remote host closed the connection]
amirmc has quit [Quit: Leaving.]
AltGr has left #ocaml []
mfp has quit [Read error: Connection reset by peer]
contempt has quit [Remote host closed the connection]
contempt has joined #ocaml
paolooo has joined #ocaml
anderse has joined #ocaml
contempt has quit [Ping timeout: 245 seconds]
contempt has joined #ocaml
Xenasis has joined #ocaml
paolooo_ has joined #ocaml
paolooo has quit [Ping timeout: 250 seconds]
mfp has joined #ocaml
dsheets_ has quit [Read error: Operation timed out]
contempt has quit [Ping timeout: 252 seconds]
contempt has joined #ocaml
anderse has quit [Ping timeout: 272 seconds]
contempt has quit [Ping timeout: 240 seconds]
contempt has joined #ocaml
manizzle has quit [Ping timeout: 264 seconds]
zpe has joined #ocaml
<ddosia> Hi. I am learning ocaml and found some things that I could not understand
contempt has quit [Ping timeout: 240 seconds]
<ddosia> look at the 3rd problem: Find the k'th element of a list
zpe has quit [Ping timeout: 265 seconds]
klltkr has joined #ocaml
<ddosia> is it really good solution that if i pass -1 there I will not get exception?
<Drup> no it's not :)
<Drup> well, actually in this case, it depends of what you want to do
<ddosia> I am comin from erlang world, there we prefer fail as much earlier as possible
contempt has joined #ocaml
<Drup> and you are quite right
<ddosia> so such code could hide more deeper problem
<Drup> in this case, it would not fail too badly
<ddosia> it will not fail at all. And who knows what will be the result
<Drup> it will "only" go trough the whole list to say that there is no element as the -1 index
<Drup> (and return None)
nikki93 has joined #ocaml
<ddosia> another bad example imho: http://ocaml.org/learn/taste.html
<ddosia> fact function
<ddosia> it is allow to pass negative integers as well
<ddosia> and result will be 1.
<Drup> you would throw an exception ?
<ddosia> I would
<Drup> It's not a bad idea, and it would be acceptable too. As I said, it depends of what you are doing
<ddosia> Imagine that I have complex logic to calculate some math, and for some reason there error and negative number passed there
<bernardofpc> you could also have +- infinities for fact
<tristan__> ddosia: welcome fellow Erlanger ;)
<ddosia> Drup: agree, it depends. But when I write arm in function which accepts only positive integers I get compiler's warning
<Drup> ddosia: but it would make the code bigger to handler that, and introduce the concept of exception, whereas it's only a very short snipper for very new beginners
<ddosia> tristan__: _07
<Drup> handle* snippet*
<technomancy> yeah, don't take tutorial code as an example of robust idiomatic real-world code
BitPuffin has joined #ocaml
<technomancy> especially not when the goal of the tutorial is to cover X concepts in 100 lines =)
<ddosia> So in erlang I just handle right clauses and let it fail in wrong clauses. In OCaml compiler complains "this pattern-matching is not exhaustive"
<Drup> it's a warning, not an error
<ddosia> Still, what should I do? I cant just skip this warning or shut it up
contempt has quit [Ping timeout: 245 seconds]
<Drup> and you shouldn't.
<ddosia> And I prefer not to have any compiler complains to feel safety
<flux> some people think you should enumerate all possibilities, to guard avoid not handling the possible future new enumeration
<flux> if you are not one of those people you can add | _ -> failwith "oops"
<tristan__> flux: which is foreign to an erlang in many cases
<tristan__> but yes, ddosia you dont'w ant to do that in ocaml
<ddosia> Could somebody give me idiomatic OCaml example of factorial functions, which will fail if negative integer is passed as value?
contempt has joined #ocaml
<tristan__> depending on how you want to use the function you could reutrn None for a negative number, return an error, throw an exception
paolooo_ has quit [Quit: Page closed]
<ddosia> This None and Some things I still could not understand. But htis is metter of time and practice
<technomancy> ddosia: it's like when you return {ok, X} in erlang
<technomancy> except the compiler can help you with it
<tristan__> yup, thats what I was about ot say :)
<technomancy> probably my favourite thing about ocaml
<Drup> ddosia: do you know about exception already ?
<ddosia> Drup: not yet
<Drup> then you should start by looking at this
wolfnn has joined #ocaml
<ddosia> Drup: I will, just need to clarify couple of things
contempt has quit [Ping timeout: 240 seconds]
<Drup> This is a solution, but it presents a major disadvantage : you need to explicitly handle the fact that it returns an option
<Drup> and sometimes, you don't want to do that
w0rm_x has left #ocaml []
<Drup> in the case of fact, I don't think it's a good idea
<ddosia> Drup: could you point me, what the error there?
contempt has joined #ocaml
<Drup> the type error comes from the fact that fact returns a "int option" and you try to multiply it
<Drup> (end of line 3)
<ddosia> Ahh, I need to handle that with match?
<Drup> yes
<ddosia> I see
mfp has quit [Ping timeout: 245 seconds]
kyrylo has quit [Ping timeout: 272 seconds]
<Drup> also, in your code, you test if it's positive each loop, and handle it that way
<Drup> you can avoid that by using an auxiliary function, that will do the looping
<ddosia> could I somehow put there: | k when k > 1 && is_integer k -> k * fac (k - 1) ?
<Drup> and check it before using this auxiliary function
<flux> (is_integer?)
<Drup> is_integer wouldn't work
<ddosia> flux: I am just inventing a way to check that this is int not an option
<Drup> because k is always an integer, that's the other part of the multiplication who has an issue ;)
kyrylo has joined #ocaml
<flux> ddosia, ah. well k <> None works, but actually you would write it like | Some k when k -> 1 .., but in the line before you say k is not an option value, so that's a no
<Drup> and also, int option doesn't magically became an int if you check if it's "Some X"
<flux> in your case it would make sense indeed to have k always be an integer, not integer option
<flux> it's the return value that would be integer option
<flux> case in point: it is true that 5 = 5, and also Some 5 = Some 5, but it is a compile error to have Some 5 = 5
<ddosia> hmmm
<ddosia> I believe that such complexity will give compiler advantage to optimize my code and prove it's correctness
contempt has quit [Ping timeout: 264 seconds]
<flux> I like to think it's for the benefit of the programmer
contempt has joined #ocaml
<Drup> less debuging = less headache = happy programmer.
<ddosia> Could somebody help me with that pastebin to fix that? So it will return option int ?
_andre has quit [Quit: leaving]
boogie has joined #ocaml
<Drup> I would advice for another way
<Drup> 1) write a "bad" fact function
<Drup> 2) encapsulate this bad fact function in a good one, that will do all the checking
<Drup> (we can try to fix your function "do everything in on go" after, if you really want to)
manizzle has joined #ocaml
mfp has joined #ocaml
contempt has quit [Ping timeout: 246 seconds]
<ddosia> no, I ll try as you suggest
contempt has joined #ocaml
cthuluh has quit [Ping timeout: 245 seconds]
ollehar has joined #ocaml
cthuluh has joined #ocaml
NoNNaN has joined #ocaml
ulfdoz has joined #ocaml
contempt has quit [Ping timeout: 248 seconds]
TDJACR has quit [Ping timeout: 245 seconds]
mort___ has joined #ocaml
<ddosia> Drup: I wrote bad_fac function which works. Bud I could not figure out how to wrap it around with option? http://pastebin.com/wjpm6B2R
<ddosia> It is seems that I some how need to convert k from option int to int
contempt has joined #ocaml
<Drup> "Some bad_fac k" -> you should write "Some (bad_fact k)"
boogie has quit [Remote host closed the connection]
<ddosia> Ah, thanks
<ddosia> Ok I will learn further, thanks for your help
<Drup> (as a bonus point, this is more efficient than your original version)
tulloch has quit [Ping timeout: 272 seconds]
contempt has quit [Ping timeout: 252 seconds]
TDJACR has joined #ocaml
contempt has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
<tristan__> does ocaml not have anything for working with Option in a cleaner way..
dsheets_ has joined #ocaml
<Drup> tristan__: not in the standard library. you can find that in some other general purpose libraries, lik Batteries and Core.
<technomancy> ISTR some libs having monadic option functions
contempt has quit [Ping timeout: 240 seconds]
<tristan__> ah ok, I'll have to look at those
<tristan__> was thinking in haskell could put it together with fmap and <*>
<tristan__> or lift
<Drup> you can find Option.map in those libraries
contempt has joined #ocaml
<technomancy> yeah I wish Option.map came out of the box
<technomancy> but Core is just a different box
<Drup> technomancy: Batteries is not :p
shinnya has quit [Ping timeout: 246 seconds]
<tristan__> not in Core2 either?
<Drup> tristan__: Core2 ?
<tristan__> jane street Core
contempt has quit [Ping timeout: 245 seconds]
contempt has joined #ocaml
<mrvn> What does Option.map do?
<Drup> mrvn: fun f -> function Some x -> f x | None -> None
<Drup> tristan__: sure, that's the "Core" we were talking about. And yes, you have an Option module in it with all the goodies
<tristan__> ooo
<Drup> don't ask me were, I don't know Core and I find it's a huge mess.
<Drup> I know it's somewhere, that's all.
<mrvn> Drup: not "Some (f x)"?
<Drup> mrvn: yeah, sure, typo.
kyrylo has quit [Ping timeout: 252 seconds]
ggole has quit []
tane has quit [Quit: Verlassend]
contempt has quit [Ping timeout: 245 seconds]
contempt has joined #ocaml
cricri_ has joined #ocaml
mcclurmc has joined #ocaml
adr has joined #ocaml
cricri has quit [Ping timeout: 264 seconds]
contempt has quit [Ping timeout: 240 seconds]
contempt has joined #ocaml
adr has quit [Client Quit]
davekong has quit []
boogie has joined #ocaml
contempt has quit [Ping timeout: 240 seconds]
contempt has joined #ocaml
tulloch has joined #ocaml
contempt has quit [Ping timeout: 246 seconds]
contempt has joined #ocaml
contempt has quit [Ping timeout: 272 seconds]
jonludlam has joined #ocaml
contempt has joined #ocaml
contempt has quit [Ping timeout: 265 seconds]
contempt has joined #ocaml
<ddosia> > The concatenation operator is provided as part of the Perva
<ddosia> sives module, which is automatically opened in every OCaml program.
<ddosia> what does it mean?
<bernardofpc> Pervasives is something like "stdlib"
<bernardofpc> being "opened" means that you don't need to prefix any function of it to use
<mrvn> Pervasives is a collection of usefull stuff that has nowhere else to go
<ddosia> is it means that "^" is not part of the ocaml's syntax?
<Drup> ddosia: no, it's a regular operator
<bernardofpc> it's a function, and because it has only funny simbols in its name, it's an infix operator
<Drup> (in particular, you can redefine it, if you really want)
<bernardofpc> you could define all kinds of useful "operators" with that syntax
<bernardofpc> (what is the state of + ?)
<Drup> bernardofpc: same for +, and every other operator
<Drup> the only exceptions are the "named" operator, like "lxor"
<bernardofpc> if I have a module Foo with operator +, how can I use it ?
<bernardofpc> a Foo.+ b ?
<Drup> Foo.(a + b)
<Drup> (local open is magic :p)
<Drup> you can redefined alphanum operators that already exists, but they are hardcoded in the parser
nikki93 has quit [Remote host closed the connection]
<mrvn> Too bad infix operators don't work with module name prefix: 1 M.( + ) 2;;
<Drup> it's like that in haskell
<Drup> and it's horrible to read
<Drup> M.(1 + 2) is far better
contempt has quit [Ping timeout: 248 seconds]
<mrvn> Why doesn't M.+ 1 2;; work?
contempt has joined #ocaml
<Drup> mrvn: + 1 2 doesn't work either,
<Drup> M.(+) 1 2 does work
<mrvn> but there it is an infix. M.+ is not.
<Drup> it is infix
<mrvn> mut I guess that parses as (M.) (+)
<mrvn> s/mut/but/
<Drup> but the parser accept only "char operators" in infix position
<Drup> and M is not one of those
tulloch has quit [Ping timeout: 265 seconds]
<Drup> operator chars*
<mrvn> What was M.( + ) before local modules?
<Drup> M.(+) is not a local open
<mrvn> sure about that? Would work as that and not make it a special case.
<Drup> I'm not completly sure, but I strongly believe so
contempt has quit [Ping timeout: 264 seconds]
<mrvn> I see no reason to make it special. Works fine as local open.
<Drup> it was here before local open
contempt has joined #ocaml
<mrvn> module M = struct end;; let foo x y = x + y;;
<mrvn> # M.(foo) 1 2;;
<mrvn> - : int = 3
<mrvn> # M.(+) 1 2;;
<mrvn> Error: Unbound value M.+
<mrvn> Drup: you seem to be right.
<mrvn> # M.( (+) ) 1 2;;
<mrvn> - : int = 3
BiDOrD_ has quit [Ping timeout: 246 seconds]
<asmanur> M.(+) does not make any sense as a local open as + is not a valid expression
<mrvn> yeah, I realised that. M.((+)) is the corrent syntax
<Drup> or M.(+) :D
<Drup> for + in M, of course
ulfdoz has quit [Ping timeout: 264 seconds]
BiDOrD has joined #ocaml
contempt has quit [Ping timeout: 245 seconds]
contempt has joined #ocaml
ocp has joined #ocaml
<ddosia> type point2d = { x : float; y : float };;
<ddosia> # let p = { x = 3.; y = -4. };;
<ddosia> val p : point2d = {x = 3.; y = -4.}
<ddosia> how the heck compiler knows that I want point2d there?
<mrvn> because of the label.
<ddosia> what label?
<mrvn> x
<ddosia> could I have type point2d = { x : float; y : float };; and type point222d = { x : float; y : float };; same time?
<mrvn> yes
<Drup> uuh, not exactly
<mrvn> the second shadows the first so you have a hard time creating one
gour has quit [Quit: WeeChat 0.4.2]
<Drup> exactly.
<mrvn> type point2d = { x : float; y : float };; let make2d x y = {x;y};; type point222d = { x : float; y : float };; let make222d x y = {x;y};;
<ddosia> I am still not sure, could I end with such situation then I have my own point2d and other module have it's own
<bitbckt> it's better to have a module Point2d and Point222d, each with a type t.
<ddosia> and there will be clash
<mrvn> ddosia: if you open the other module then sure
<ddosia> dx_xb
<Drup> bitbckt: actually, not necesserally. it's far better with the last version of ocaml
<mrvn> The recent ocaml has some magic to detect such cases and warn about it or pick the right one.
<bitbckt> Drup: in general, I remain of that opinion. Even with the latest changes.
<ddosia> every record with to fields, first with label x and second with label y is clash with each otheres?
<ddosia> *two
<mrvn> ddosia: every record with label x will clash, less in recent versions
contempt has quit [Ping timeout: 245 seconds]
<ddosia> boom
<ddosia> thats pretty wired
<bitbckt> ... only if you open those modules. Don't open many modules.
<mrvn> same as "let x = 1 let x = 2"
<nicoo> ddosia: It isn't : how would the compiler guess what you mean ?
<mrvn> or open M open N with both M and N having type t
<ddosia> I consider this as a hashtable with named fields
<bitbckt> it's more like a struct.
contempt has joined #ocaml
<ddosia> why two hashtables should clash with each other
<ddosia> it is like say that you may have only one class with field named "x"
<Drup> ddosia: records are not at al like hashtbl
<mrvn> and only one variable named x
<nicoo> ddosia: What happens is that the compiler cannot be sure you mean “this value is an “hashtable” of type X
<nicoo> (and the analogy with hashtbl feels weird)
<ddosia> compiler could put type mark in each record
<ddosia> lake this is record foo, and this is a record bar
<mrvn> ddosia: let x = 1 let x = 2 let y = x. Should y be 1?
<ddosia> and allow to have any number of fields with same names
<bitbckt> if the type were encoded in the runtime representation, that wouldn't be statically safe... OCaml is not Erlang.
<mrvn> you are allowed to have the same name.
boogie has quit [Remote host closed the connection]
<ddosia> is type point2d = ... simmilar to let x =...
<ddosia> so I actually not create a "type" but a "variable" named point2d?
<mrvn> ddosia: youi create labels for the record fieds. which are like bindings of values.
<mrvn> type r = { a:int; b:int; } is like let a = OFFSET(0) and b = OFFSET(1)
contempt has quit [Ping timeout: 245 seconds]
contempt has joined #ocaml
ollehar has quit [Ping timeout: 272 seconds]
contempt has quit [Ping timeout: 272 seconds]
Simn has quit [Ping timeout: 252 seconds]
Simn has joined #ocaml
contempt has joined #ocaml
t0yv0 has quit [Quit: Page closed]
ocp has quit [Quit: Leaving.]
contempt has quit [Ping timeout: 246 seconds]
contempt has joined #ocaml
tulloch has joined #ocaml
nikki93 has joined #ocaml
kyrylo has joined #ocaml
contempt has quit [Ping timeout: 272 seconds]
contempt has joined #ocaml
nikki93 has quit [Ping timeout: 245 seconds]
<Drup> ddosia: I think all those questions will answer by themself when you will be use to it
<Drup> ddosia: an advantage of record, as they are in ocaml, is that you can do "let f a = a.x"
<Drup> and the compiler willl deduce that a is of the type "point"
<Drup> because the field x is unique
<Drup> (almost)
boogie has joined #ocaml
boogie has quit [Read error: Connection reset by peer]
<mrvn> A good rule with records is to either pick unique names or put the thing in a module.
contempt has quit [Ping timeout: 272 seconds]
mcclurmc has quit [Remote host closed the connection]
contempt has joined #ocaml
mcclurmc has joined #ocaml
darkf has joined #ocaml
wolfnn has quit [Ping timeout: 272 seconds]
contempt has quit [Ping timeout: 272 seconds]
Kakadu has quit [Quit: Konversation terminated!]
contempt has joined #ocaml
<ddosia> If arrays are more compact in terms of memory comparable to lists and have constant access time why could I choose lists?
<technomancy> ddosia: arrays are mutable
<bitbckt> SLLs have constant prepend time.
<bitbckt> data structure choices aren't made in a vacuum.
<mrvn> arrays don't grow or shrink
<ddosia> Is there any capabilities to auto balance my programm execution across different CPU's cores?
contempt has quit [Ping timeout: 265 seconds]
boogie has joined #ocaml
<Drup> the simple answer is no
<Drup> there is a complicated answer, though
contempt has joined #ocaml
<ddosia> Drup: if it is not bother you could you say few words or give some link to read about this subject?
manizzle has quit [Remote host closed the connection]
manizzle has joined #ocaml
<mrvn> ddosia: since only one core is used there is no need to balance. :)
contempt has quit [Ping timeout: 245 seconds]
<technomancy> ddosia: there are experimental ocaml runtimes that have concurrent GCs, but nothing solid enough for mainline yet
<technomancy> concurrent GC with acceptable performance is incredibly difficult; it has only been implemented well a handful of times
klltkr has quit [Read error: Connection reset by peer]
<technomancy> like, in the whole world
contempt has joined #ocaml
ulfdoz has joined #ocaml
<ddosia> mrvn: I am not quite understood. When I want to write ocaml program with some concurrency inside does it means that in terms of OS it will still be on one core (as a scheduler)?
<technomancy> it means hope you like fork+exec =)
<mrvn> ddosia: mostly. There is a global lock that any thread running ocaml code must hold.
<mrvn> You can have many threads running C code but only one doing ocaml.
<mrvn> at a time
strobegen has quit [Quit: Leaving.]
contempt has quit [Ping timeout: 246 seconds]
<ddosia> because of scheduler?
<mrvn> because of GC
contempt has joined #ocaml
<ddosia> nice. I mostly look at ocaml as complement to my erlang nodes thus possible I could live with that
<technomancy> ddosia: yeah, I came to the same conclusion. different tools for different problems.
<mrvn> I think a good concurrent GC will needs compiler support. Have it flag functions that will share data between cores and those that don't and such.
<bitbckt> the compiler (and runtime) support is mostly write barrier correctness.
<ddosia> what do you think about haskell in this perspective? I heard there are a lot of clever ideas
<bitbckt> data sharing isn't typically a problem for a concurrent GC, unless it's thread-local.
<bitbckt> (the GC is TL, that is)
<mrvn> bitbckt: but you have write barriers for the local core and write barriers across cores.
<bitbckt> they aren't core-local.
<mrvn> if a function creates a record and then modifies it before it can ever be shared between threads then the write barrier is only local
<bitbckt> the execution context of the store which fires a write barrier is largely irrelevant in (again) all by thread-local GC.
<bitbckt> it doesn't need to be fired.
<bitbckt> write barrier ellision on initializing stores is a special case.
<bitbckt> but has nothing to do with what core the code is executing on.
<ddosia> also, is there any large contributors in ocaml development as say ericsson in erlang
<bitbckt> Jane Street.
contempt has quit [Ping timeout: 272 seconds]
mort___ has quit [Quit: Leaving.]
contempt has joined #ocaml
<smondet> ddosia: there are many libraries for parallel (or distributed) processing Parmap, Functory, OCamlnet, async_parallel, ...
tulloch has quit [Ping timeout: 272 seconds]
Neros has joined #ocaml
contempt has quit [Ping timeout: 272 seconds]
contempt has joined #ocaml
contempt has quit [Ping timeout: 245 seconds]
saml has quit [Remote host closed the connection]
contempt has joined #ocaml
<Drup> bitbckt: the ocaml fork about parallele doesn't have a concurent GC
<Drup> bitbckt: it only allows to have a shared memory between processus and have a reentrant runtime
<Drup> in pratice, it allows to do message-passing concurency in a very simple way, and without the cost of serialization
<Drup> the work is finished but not yet integrated into the main compiler
WraithM_ has quit [Ping timeout: 265 seconds]
<bitbckt> Drup: I didn't say it did.
<Drup> bitbckt: ah, sorry, it was for technomancy
ollehar has joined #ocaml
<mrvn> In a concurrent GC how do you catch values in registers?
<bitbckt> typically, the compiler emits a map of offset in each stack frame and live registers containing references.
<bitbckt> alternatively, a GC safepoint could flush registers to the stack.
<bitbckt> the latter is a bit slower, obviously.
contempt has quit [Ping timeout: 272 seconds]
<mrvn> well, every allocation is a safepoint.
<bitbckt> semantically, yes.
<bitbckt> but not in practice.
contempt has joined #ocaml
<mrvn> it's what ocaml does now.
<bitbckt> yes.
<mrvn> problem there is that that prevent preemption. I don't like that.
<bitbckt> in order to permit preemption, safepoints inside the runtime must wait for acknowledgement.
<bitbckt> for instance, hotspot write protects a page and inserts bangs at safepoint opportunities.
<technomancy> Drup: cool; I didn't realize that. there are multiple attempts at concurrency though, right?
<Drup> probable
<technomancy> but that one is the most likely to land in the mainline
<mrvn> bitbckt: if you have to wait for acknowledgement then it isn't preemption
<Drup> technomancy: the one I'm talking about is this one : https://github.com/lucasaiu/ocaml
<bitbckt> the underlying pthread is preemptively scheduled; safepoints are not preempting.
<bitbckt> there really isn't any need for them to be. loop backedges and funcalls are sufficiently frequent.
<bitbckt> (those are additional safepoint opportunities)
<mrvn> except when they aren't there and the thread blocks everything.
contempt has quit [Ping timeout: 245 seconds]
<bitbckt> really, that doesn't happen in practice.
<bitbckt> code loops, allocates, calls a function or calls into the runtime with frequency.
<mrvn> look at a mandelbrot fractal. Nice little inner loop that shouldn't do any allocation at all.
contempt has joined #ocaml
<bitbckt> loop.
<bitbckt> backedges are safepoint polls.
<mrvn> there is no safepoint in there
<bitbckt> not in OCaml, but there would have to be if it had a conc. GC.
<bitbckt> just like in Hotspot and other runtimes with one.
<bitbckt> perhaps that's the disconnect between us.
<mrvn> if you dump everthing to memory every iteration that will be horribly slow.
<bitbckt> why would you do that? the dump should only happen if the poll traps.
<bitbckt> which it wouldn't, if there's no allocation.
<bitbckt> anyhow, to your point: OCaml doesn't currently work this way, because it doesn't need to without a more advanced GC.
contempt has quit [Ping timeout: 245 seconds]
contempt has joined #ocaml
<mrvn> does ocamlopt emit dwarf debug stuff?
<bitbckt> not on trunk. there's a branch with some support.
cricri has joined #ocaml
cricri_ has quit [Ping timeout: 246 seconds]
contempt has quit [Ping timeout: 252 seconds]
contempt has joined #ocaml
contempt has quit [Ping timeout: 265 seconds]
jbrown has joined #ocaml
contempt has joined #ocaml
tulloch has joined #ocaml
contempt has quit [Ping timeout: 246 seconds]
contempt has joined #ocaml
contempt has quit [Ping timeout: 272 seconds]
contempt has joined #ocaml
ulfdoz has quit [Ping timeout: 272 seconds]
contempt has quit [Ping timeout: 246 seconds]
contempt has joined #ocaml
mehdid has quit [Quit: Lost terminal]
mcclurmc has quit [Remote host closed the connection]
BitPuffin has quit [Ping timeout: 272 seconds]
nikki93 has joined #ocaml
tulloch has quit [Ping timeout: 264 seconds]
Neros has quit [Ping timeout: 245 seconds]
osa1 has joined #ocaml
jonludlam has quit [Remote host closed the connection]
nikki93 has quit [Ping timeout: 246 seconds]
osa1_ has quit []
imran_sr has quit [Ping timeout: 252 seconds]
<ddosia> could somebody share expirience how to indent ocaml source files with vim? I have installed ocp-indent, set this as an external indent tool, but there couple of nuances I need to ask
<Drup> I think ocp-indent + vim need an external add-on
<ddosia> Vim by default do indentation of ocaml files, but after I compare this with ocp-indent with different presets I see differences
<ddosia> And I want to use community acceptable indentation from the very begining
<Drup> ocp-indent is quite a common tool now
madroach has quit [Ping timeout: 264 seconds]
yminsky has joined #ocaml
<ddosia> Drup: I put switch on ocp-indent inside of the vim, and it works when I select a block and don indent
nikki93 has joined #ocaml
<ddosia> but when I do regular activity, like new line, it put cursor not on the right place
madroach has joined #ocaml
<Drup> ddosia: ok. I know there was some issues before, and that def-lkb has some stuff on that
<Lajjla> Is there some kind of idiom for let ... in let ... in let ... in let ... in ...
<Lajjla> Similar to how scheme has let* for the same?
<ddosia> Drup: thnks
<Drup> Lajjla: what's wrong with let in let in ? :p
Arsenik has quit [Remote host closed the connection]
<Lajjla> Drup, nothing wrong with it, some languages just provide an idiom for it I suppose.
<Lajjla> WAs wondering if ocaml had it
<Drup> not really
<Drup> Lajjla: there is "let .. and ... in" but the semantic is different and probably not exactly what you want
Simn has quit [Quit: Leaving]
NoNNaN has quit [Remote host closed the connection]
<mrvn> let .. and .. in makes no sense. Only makes sense with rec.
<Drup> mrvn: "let x = y and y = x in ..."
<Drup> mrvn: it does make sense.
<Drup> (yes, this exemple is dumb, some other might not be.
<mrvn> Drup: hmm, didn't even know that worked.
<Drup> different semantic ;)
<mrvn> I thought the semantic where the same as let x = y in let y = x in