mrvn changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | http://www.ocaml.org | http://ocaml.org/releases/4.02.0.html | Logs at http://irclog.whitequark.org/ocaml
q66 has joined #ocaml
jwatzman|work has quit [Remote host closed the connection]
jwatzman|work has joined #ocaml
jwatzman2 has joined #ocaml
jwatzman|work has quit [Read error: Connection reset by peer]
jwatzman2 has quit [Remote host closed the connection]
jwatzman|work has joined #ocaml
waneck has joined #ocaml
shinnya has joined #ocaml
philtor has joined #ocaml
ontologiae has joined #ocaml
troutwine is now known as troutwine_away
keen________ has quit [Read error: Connection reset by peer]
keen________ has joined #ocaml
jao` has joined #ocaml
jao` has quit [Changing host]
jao` has joined #ocaml
oriba has quit [Quit: Verlassend]
philtor has quit [Ping timeout: 264 seconds]
jwatzman|work has quit [Quit: jwatzman|work]
ustunozgur has quit [Remote host closed the connection]
ontologiae has quit [Ping timeout: 246 seconds]
NoNNaN has quit [Remote host closed the connection]
darkf has joined #ocaml
shinnya has quit [Ping timeout: 245 seconds]
shinnya has joined #ocaml
philtom has quit [Ping timeout: 240 seconds]
shinnya has quit [Ping timeout: 252 seconds]
shinnya has joined #ocaml
cody__ has joined #ocaml
philtor has joined #ocaml
philtor has quit [Ping timeout: 276 seconds]
cody__ has quit [Quit: Leaving]
q66 has quit [Quit: Leaving]
claudiuc has quit [Remote host closed the connection]
dnm has quit [Ping timeout: 264 seconds]
rishabhjain has joined #ocaml
rishabhjain has quit [Client Quit]
rishabhjain has joined #ocaml
samrat has joined #ocaml
rishabhjain has quit []
troutwine_away is now known as troutwine
troutwine is now known as troutwine_away
philtor has joined #ocaml
fold has joined #ocaml
jao` has quit [Ping timeout: 272 seconds]
darkf has quit [Read error: Connection reset by peer]
darkf has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
axiles has quit [Quit: Quitte]
samrat has quit [Quit: Computer has gone to sleep.]
fold has quit [Ping timeout: 252 seconds]
fold has joined #ocaml
vanila has quit [Quit: Leaving]
zwer_ has joined #ocaml
mcclurmc has joined #ocaml
samrat has joined #ocaml
fold has quit [Ping timeout: 272 seconds]
zwer_ has left #ocaml [#ocaml]
philtor has quit [Ping timeout: 272 seconds]
ygrek has joined #ocaml
axiles has joined #ocaml
Submarine has joined #ocaml
Simn has joined #ocaml
pyon has quit [Quit: brb]
pyon has joined #ocaml
rgrinberg has joined #ocaml
shinnya has quit [Ping timeout: 245 seconds]
samrat has quit [Quit: Computer has gone to sleep.]
BitPuffin has quit [Ping timeout: 264 seconds]
MercurialAlchemi has joined #ocaml
<whitequark> type json = [%import: Yojson.Safe.json] [@@deriving Show]
<whitequark> expected: `Int (42) but got: `Intlit ("42")
<whitequark> awesome.
samrat has joined #ocaml
WraithM has quit [Ping timeout: 272 seconds]
ggole has joined #ocaml
lbaan has quit [Quit: sleeping device]
ygrek has quit [Ping timeout: 245 seconds]
WraithM has joined #ocaml
ollehar has joined #ocaml
Intensity has joined #ocaml
tane has joined #ocaml
<Intensity> Hi. I'm trying to update libdose3-ocaml on Debian 7 so that I can backport opam, so that I can more easily install google-drive-ocamlfuse. I'm having trouble with ocamlfind: Package `re.pcre' not found.
Submarine has quit [Remote host closed the connection]
<whitequark> it's a component of https://github.com/ocaml/ocaml-re
<Intensity> whitequark: Thanks for the reference. I'm wondering if there's been a rename (from re.pcre |-> pcre) lately, and what the statement "module Pcre = Re_pcre" in common/cudfSolver.ml might really mean, given that Re_pcre is only referenced dose3-3.2.2, and not otherwise defined/declared.
WraithM has quit [Ping timeout: 252 seconds]
<whitequark> no, there was not a rename
<whitequark> the package is called re.pcre, the library is called Re_pcre
<whitequark> the statement you refer to creates a module alias
<whitequark> i.e. after that statement, it is possible to refer to Re_pcre as Pcre
<Intensity> whitequark: If there was not a rename, do you know why I got ocamlfind: Package `re.pcre' not found, when ocamlfind ocamldep was run, or why I may have gotten "Error: Unbound module Re_pcre" when compiling common/cudfSolver.ml?
<whitequark> because re is not installed
<whitequark> as you can see here: https://github.com/ocaml/ocaml-re/blob/master/_oasis#L61-L62, the latest version of re includes re.pcre package
<whitequark> try `ocamlfind query re`
<Intensity> Then do you know why "ocamlfind ocamldep -package pcre" might return success? query re indicates re is not installed. So is it possible that I have pcre but not re.pcre, and I somehow need the latter?
<whitequark> this is exactly what happened
<whitequark> pcre and re.pcre are completely unrelated
<whitequark> pcre is a binding for libpcre; re (and re.pcre) are purely in OCaml
<whitequark> I admit that it is confusing.
<Intensity> whitequark: Okay, so then does that mean they can coexist? I'm wondering if there is a Debian package for the ocaml "re". Maybe in testing or in wheezy.
<whitequark> try installing the package libre-ocaml-dev
<whitequark> yes, they can coexist
<whitequark> re is in jessie/sid
<Intensity> Cool, found that. I'm getting that now.
rgrinberg has quit [Quit: Leaving.]
<Intensity> Hmm. Seems that I get "Error: Unbound module Graphml" even though libocamlgraph-ocaml-dev-1.8.2-2 is installed.
<Intensity> Maybe I need 1.8.5. I'll try that.
<whitequark> you may need to add the corresponding -package
WraithM has joined #ocaml
<whitequark> in this case ... seems to be just -package ocamlgraph
<Intensity> Yes, "-package ocamlgraph" was included in the command line that failed.
cdidd_ has joined #ocaml
cdidd has quit [Ping timeout: 260 seconds]
A1977494 has joined #ocaml
A1977494 has quit [Quit: Leaving.]
martintrojer has quit [Max SendQ exceeded]
martintrojer has joined #ocaml
Hannibal_Smith has joined #ocaml
martintrojer has quit [Read error: Connection reset by peer]
martintrojer has joined #ocaml
dsheets has joined #ocaml
Kakadu has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
<whitequark> tl;dw?
<Drup> fetch it and pass it on 1.2 speed
<whitequark> well, no, that's still 25 minutes. if it was an article, I'd be done in three.
<whitequark> in those 30 minutes I could write the deserializer part of ppx_deriving_yojson instead
<Drup> ahah
<Drup> "I could"
<whitequark> I *am* writing it
<whitequark> fwiw, serializer and testsuite are already done
araujo has quit [Quit: Leaving]
<Drup> we will have fibers bolted in the compiler for concurrency, and domains for big grain parallelism, with auto balancing of fibers across domains.
<whitequark> I see, thanks
<whitequark> this is an odd decision
<whitequark> but interesting
<Drup> native code, lazy, and various stuff are broken, but bytecode is working :p
ygrek has joined #ocaml
samrat has joined #ocaml
burgobianco has quit [Remote host closed the connection]
burgobianco has joined #ocaml
WraithM has quit [Ping timeout: 252 seconds]
shinnya has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
ygrek has quit [Ping timeout: 264 seconds]
MercurialAlchemi has quit [Ping timeout: 268 seconds]
hhugo has joined #ocaml
tobiasBora has joined #ocaml
<tobiasBora> Hello,
<tobiasBora> I've a little problem with a fresh install of opam
<tobiasBora> I have a project which is based on oasis, but when I do ./configure I've the error E: Cannot find findlib package unix
<tobiasBora> E: Cannot find findlib package str
<tobiasBora> And same thing for lot's of packages that have already been installed by opam.
<tobiasBora> In my ~/.bashrc I have at the end
<tobiasBora> # OPAM configuration \n . /home/tobias/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true \n eval `opam config env`
<tobiasBora> And I reboot several times since I installed opam and some libraries
<tobiasBora> And same idea, when I load ocaml and run #use "topfind" I've an error : Cannot find file topfind.
<def`> what is your PATH ?
<def`> what is the outut
<def`> of opam config env ?
<tobiasBora> And I don't know if it could be the reason of the problem, but which ocaml gives /usr/bin/ocaml
<tobiasBora> Well... In fact the error of #use "topfind" occurs only when I load it in emacs. But the ./configure problem occurs everywhere
<tobiasBora> hum
<tobiasBora> The error of ./configure contains : /home/tobias/.opam/4.01.0/bin/ocamlfind' query -format %d str > '/tmp/oasis-2071f3.txt'' terminated with error code 127
<ggole> Environment difference between emacs and your shell, maybe
hhugo has quit [Quit: Leaving.]
<tobiasBora> But the folder ~/.opam/4.01.0 doesn't exists...
<ggole> Start an emacs from that shell and see if that works
<tobiasBora> ggole: Yes, when I run emacs from this shell the #topfind problem is solved.
<ggole> There you go: you need to execute the opam environment setting thing in the environment which your emacs inherits
<tobiasBora> Ok thank you, I will !
<tobiasBora> But the ./configure problem is still present...
<tobiasBora> Should I re-install ocaml with opam, even if it's already installed in the system ?
dsheets has quit [Ping timeout: 264 seconds]
<ggole> You should be able to have opam-installed and system-installed versions of ocaml side-by-side
<tobiasBora> And oasis should be able to choose the good one ?
<ggole> Um, not sure what you mean
hhugo has joined #ocaml
<tobiasBora> Hum...
<tobiasBora> Ok I understand now...
<tobiasBora> I have an old oasis project that I built with another computer
<tobiasBora> However the path to the compiler is stored in setup.data, and I forgot to clean this folder.
<tobiasBora> So the path was wrong, and produce an error.
<tobiasBora> Now I removed this file and it works !!!
<whitequark> yes, oasis has this habit
<tobiasBora> I think it's quite strange, but why not... Anyway thank you !
rand000 has joined #ocaml
dsheets has joined #ocaml
adrien changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org and http://caml.inria.fr | http://ocaml.org/releases/4.02.0.html | Public channel logs at http://irclog.whitequark.org/ocaml
<adrien> hmmmmmmmmmmmmmmm
<adrien> Drup: are you aware of a non-youtube hosting for the workshop videos?
<adrien> and a dedicated page that links to all the available resources about that?
Hannibal_Smith has quit [Quit: Sto andando via]
<Drup> Not yet, but youtube-dl.
<adrien> would be nice to have that on ocaml.org :)
<adrien> I wanted to link to such a page in /topic but too many links that are too long
<adrien> and the right fix is a page on ocaml.org :P
<adrien> github account? :D
cdidd_ has quit [Ping timeout: 252 seconds]
<Drup> create a dummy one only to report issues and stop whining ? :p
<adrien> ah
<whitequark> adrien: does your religion forbid you to use github?
<adrien> create a dummy account so I can whine so I stop whining :P
<adrien> crap ToS
<Drup> I have one on mantis and the ocaml forge, even if they are crappy tool written in languages I dislike. I'm sure you can overcome your dislike for github's license.
<whitequark> uhhh, what exactly is broken in GitHub's TOS?
zpe has joined #ocaml
<whitequark> they have probably the sanest ToS out of ... pretty much all ones I have read
ustunozgur has joined #ocaml
<whitequark> I think they had some weird clause back in 2008, which is why I didn't use it back then
<adrien> https://help.github.com/articles/github-terms-of-service - F3 G7 G11 (G100 could match too) G15 (california law)
<adrien> but overall it looks better than it used to
<whitequark> uhhh, what?
tobiasBora has quit [Remote host closed the connection]
<whitequark> I can understand F3, but what's your problem with G*?
<adrien> "sole discretion"
<adrien> G11 is also clearly subjective
<adrien> and a call to unlink() fits in it
<adrien> s/G100/G10/ btw
<whitequark> sole discretion, of course
<adrien> california law: I don't feel like doing stuff the california way
<whitequark> ahem
<whitequark> so what's the *real* reason you avoid it?
<adrien> these and I dislike the software UI
dsheets has quit [Ping timeout: 252 seconds]
<whitequark> so, do you use Google? ;P
<adrien> no
<adrien> or extremely rarely
<adrien> (and most of the time I don't get the answer I want from it anyway)
cdidd_ has joined #ocaml
tobiasBora has joined #ocaml
BitPuffin has joined #ocaml
hhugo has quit [Quit: Leaving.]
cthuluh has quit [Remote host closed the connection]
ollehar has quit [Ping timeout: 264 seconds]
<whitequark> def`: huh, merlin fails with Error_forward on OUnit2 too
rgrinberg has joined #ocaml
rgrinberg has quit [Client Quit]
oscar_toro has joined #ocaml
rand000 has quit [Ping timeout: 268 seconds]
gperetin has quit [Ping timeout: 260 seconds]
esden has quit [Ping timeout: 260 seconds]
abbe has quit [Ping timeout: 260 seconds]
Leonidas has quit [Ping timeout: 260 seconds]
Leonidas has joined #ocaml
rand000 has joined #ocaml
abbe has joined #ocaml
AltGr has joined #ocaml
gperetin has joined #ocaml
hexo has quit [Ping timeout: 260 seconds]
ygrek has joined #ocaml
hexo has joined #ocaml
esden has joined #ocaml
rgrinberg has joined #ocaml
rgrinberg has quit [Quit: Leaving.]
hhugo has joined #ocaml
ontologiae has joined #ocaml
koderok has joined #ocaml
ustunozgur has quit [Remote host closed the connection]
ygrek has quit [Ping timeout: 245 seconds]
fold has joined #ocaml
samrat has joined #ocaml
Thooms has joined #ocaml
q66 has joined #ocaml
leowzukw has joined #ocaml
hhugo has quit [Quit: Leaving.]
oscar_toro has quit [Quit: oscar_toro]
msaegesser has joined #ocaml
tobiasBora has quit [Ping timeout: 264 seconds]
dsheets has joined #ocaml
darkf has quit [Quit: Leaving]
MercurialAlchemi has joined #ocaml
<whitequark> def`: nevertheless, merlin makes me *much* more productive
<Drup> btw whitequark
<Drup> are you aware on the initiative to make ocaml work with gdb ?
<whitequark> uh. it works with gdb
<whitequark> I have used it :)
<Drup> better :D
<whitequark> okay. no, I'm not
<whitequark> it sounds straightforward but extremely tedious
<whitequark> *I've not
<whitequark> *I'm not
<whitequark> ARGH
<Drup> apparently, it has type reconstruction and breakpoing and stuff
<whitequark> not aware.
<whitequark> breakpoints work
<whitequark> type reconstruction? what do you mean?
<whitequark> gdb is quite skewed to C/C++
<Drup> don't know the details
<Drup> just reporting what anil said, since you were working on your own debuger
<whitequark> my one is bytecode only and will forever remainso
<ggole> So it traces pointer paths through the program in order to print, say, constructor names accurately?
<whitequark> you can't meaningfully turn gdb into an ocaml repl
<ggole> No, but you can (probably) print shit.
<whitequark> at most you could make it execute simple expressions, but even that is extremely hard
<whitequark> (simple as in, pure)
<ggole> Even floats would be hard
<ggole> "Oops, need to GC now."
<whitequark> with an LLVM backend though you could use lldb and JIT OCaml code
<whitequark> (but I'm not convinced that a native-code REPL is useful enough to warrant that)
<def`> whitequark: I fixed the Error_forward error that escaped yesterday (error management is more displicined in 4.02_, but I was still doing it <=4.01 way)
<whitequark> def`: btw can you add src/ocaml to gitignore
<whitequark> I have this commit dangling on my local copy of merlin2 and it's annoying
<def`> which commit ?!
<def`> I will push this change wait
<whitequark> it's just locally
hhugo has joined #ocaml
<whitequark> ooooooo
<whitequark> it now works properly
<whitequark> well, almost, it is angered by uninterpreted extensions
<def`> Ok, I pushed both
pyon has quit [Quit: brb]
pyon has joined #ocaml
<whitequark> great, thanks
lbaan has joined #ocaml
<ggole> whitequark: what do you use most? Completion and jump-to-def?
<whitequark> ggole: neither
<ggole> Oh? Just errors?
<whitequark> I didn't remember that jump-to-def exists, and completion only half works on this install
<whitequark> well, I use completion, but the most productivity comes from errors
<whitequark> actually, no, it's errors and completion for sure. I'm just used to completion, since I used ocp-index for so long
<ggole> Hmm, I find them a bit annoying and usually have them off.
<whitequark> I mismatch parens, braces and brackets every damn time
koderok has quit [Ping timeout: 268 seconds]
<ggole> Probably just what I'm used to.
<whitequark> and merlin indicates this both quicker and visually more convenient than make
<whitequark> merlin will work even better for me once def` adds the ppx magic :p
<ggole> Your editor doesn't do matching?
<whitequark> it does
<whitequark> it doesn't complain about mismatched parens though
<whitequark> and also some mismatches are sensible from editor's POV but not ocaml's parser
<ggole> Mmm, I see
<ggole> Interesting how differently people use their tools
<ggole> Emacs will highlight a mismatched paren, but only under point.
<whitequark> I wrote a lot of C/C++ (and a bit of Java) without any kind of IDE features whatsoever
<ggole> (Or if you invoke a matching tool, but that's no easier than simply compiling.)
<whitequark> so I suppose it's hard to scare me with a little OCaml code
<whitequark> not to mention Ruby, where you can barely have any kind of IDE at all
<ggole> Yeah. I dunno how I'd handle having to write a ton of something like Javascript.
<ggole> Probably by making a large number of mistakes.
<whitequark> you will suffer
<whitequark> it's normal.
<Drup> I wrote tons of javascript
<Drup> :>
<ggole> Did you suffer?
<whitequark> you know the collective noun thing, right? "the suffering of JavaScript developers"
<Drup> not that much.
* Drup totally didn't cheat.
<Drup> I didn't wrote css yet, because I can't cheat for that, hence the crappy GUI :D
<ggole> Cheating doesn't count!
<Drup> :(
<Drup> It's the only sane way to write javascript anyway
<ggole> Heh.
osa1 has joined #ocaml
<osa1> I'm trying to install `llvm` from opam but it's failing with `/usr/lib64/gcc/x86_64-suse-linux/4.8/../../../../x86_64-suse-linux/bin/ld: cannot find -lLLVM-3.4`. I have llvm 3.4 installed but I guess it's name is just LLVM instead of LLVM-3.4. Is there a way to tell opam that?
<whitequark> sigh~
AltGr has left #ocaml [#ocaml]
<whitequark> osa1: no, there is not
ustunozgur has joined #ocaml
<osa1> cool. any other ideas how to fix this?
fold has quit [Ping timeout: 255 seconds]
<whitequark> is your system LLVM only available as libLLVM.so* ?
mhi^ has joined #ocaml
<osa1> I have libLLVM*.so files for 3.4 in /usr/lib
<whitequark> so libLLVM.so or libLLVM-3.4.so ?
<osa1> libLLVM.so
<whitequark> ok
<def`> whitequark: I forgot to push jumpnto def
<whitequark> osa1: this is a bit odd
<whitequark> the configure script seems to recognize both llvm-config-3.4 and llvm-config
<def`> whitequark: pushed to sublime-text-merlin repo
<whitequark> osa1: do you have both of these executables around or only one of them?
<whitequark> cc jpdeplaix
<osa1> whitequark: I have only llvm-config
<whitequark> osa1: ok, can you post the full build log somewhere?
<whitequark> opam tells you where it is located, at failure
<whitequark> e.g. gist.github.com
<osa1> ok
<whitequark> def`: aha, thanks
<osa1> whitequark: this is stderr
<jpdeplaix> whitequark: mmh ?
<whitequark> jpdeplaix: see discussion above
<jpdeplaix> yes yes
<whitequark> opam llvm buildscript broke on suse, can't find -lLLVM-3.4
<jpdeplaix> osa1: are you sure you have the 3.4 ?
dsheets has quit [Ping timeout: 276 seconds]
<osa1> jpdeplaix: my OS package manager says yes
<osa1> jpdeplaix: clang --version says 3.4.2
<osa1> both llvm-dev and clang installed from OS package manager which uses same repo
<jpdeplaix> osa1: what's the result of llvm-config ?
<osa1> jpdeplaix: it prints stuff ... which part are you interested in?
<whitequark> llvm-config --ldflags --libs core
<osa1> -L/usr/lib64 -lrt -ldl -ltinfo -lpthread -lz
<osa1> -lLLVMCore -lLLVMSupport
<whitequark> oooh, I just realized the problem
leowzukw_ has joined #ocaml
leowzukw has quit [Ping timeout: 260 seconds]
<whitequark> jpdeplaix: the soname for the big .so isn't returned by llvm-config
<whitequark> it's pulled out somewhere deep from within the guts of llvm buildsystem
fold has joined #ocaml
<jpdeplaix> yes of course
<jpdeplaix> but the name should remain the same
<whitequark> I think suse patches it to be libLLVM.so instead of -3.4
<whitequark> I think debian *used* to
<jpdeplaix> LOL…
<jpdeplaix> nope
<whitequark> no?
<jpdeplaix> works fine on debian
<whitequark> /usr/lib/x86_64-linux-gnu/libLLVM-3.4.so.1
<whitequark> all recent LLVM, I think since 3.2, has this in the name
<osa1> so is there hope?
<whitequark> but before that it used to not have it
<jpdeplaix> osa1: what's in /usr/lib64/libLLVM*
<jpdeplaix> ?
ontologiae has quit [Ping timeout: 272 seconds]
samrat has quit [Ping timeout: 246 seconds]
Simn has quit [Ping timeout: 268 seconds]
yacks has quit [Read error: Connection reset by peer]
samrat has joined #ocaml
Ptishell has joined #ocaml
Thooms has quit [Quit: WeeChat 0.4.3]
yacks has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
ygrek has joined #ocaml
<whitequark> function `List ((`String "B")::x::[]) -> (function `Int y -> `Ok | _ -> `Error) x
<whitequark> why does this fail to typecheck?
hhugo has quit [Quit: Leaving.]
<ggole> x is being inferred as [< `String of string], I think
<whitequark> but why?
<whitequark> if I constrain the outer function argument to Yojson.Safe.json, it works properly
<whitequark> some bizarre subtyping behavior
<Drup> whitequark: the second function is assumed to be total
<Drup> oh, hum, doesn't change the weird behavior
<Drup> that's strange
jao` has joined #ocaml
jao` has quit [Changing host]
jao` has joined #ocaml
cthuluh has joined #ocaml
osa1 has left #ocaml ["Konversation terminated!"]
leowzukw_ has quit [Quit: leaving]
samrat has joined #ocaml
ontologiae has joined #ocaml
NoNNaN has joined #ocaml
libertas has joined #ocaml
Simn has joined #ocaml
fold has quit [Ping timeout: 252 seconds]
hhugo has joined #ocaml
hhugo has quit [Client Quit]
rand000 has quit [Quit: leaving]
ygrek has quit [Ping timeout: 252 seconds]
tg has quit [Ping timeout: 240 seconds]
tg has joined #ocaml
hhugo has joined #ocaml
mads- has joined #ocaml
<mads-> Can anyone recommend a good resource for learning OCaml? I don't really have any background in functional programming other than a few months of Haskell
<Drup> real world ocaml, I suppose
<mads-> Thanks a bunch :)
<mads-> I was just at a lecture yesterday where there was some live coding using OCaml. Looked pretty awesome.
<whitequark> you can live code in OCaml?
<mads-> Might have been the wrong.
<mads-> wrong term*
<mads-> He was coding during the lecture, building up his interpreter.
<Drup> whitequark: with a modified merlin, you could !
<whitequark> Drup: I kinda want an OCaml-ish language with live coding built-in
<whitequark> true live coding
<whitequark> so that you would be able to change the code of a closure that has been allocated, for example
<Drup> I'm completely uninterested by live coding
<Drup> oh
<Drup> that's not livecoding as the usual meaning.
<whitequark> what do you consider the usual meaning?
<Drup> as I've always seen it practiced, fancy editor to code live during a presentation, hence why I'm not really interested :>
<Drup> you just want that for debuging (or step by step execution, which is always nice for education), I presume ?
<whitequark> no, pry.ml is not what I consider live coding
<adrien> live feedback
<whitequark> what I want is a radical shortening of the feedback loop
<whitequark> this is not noticeable for batch apps, but much more important for things with GUIs
<whitequark> (and webapps, to a degree)
<adrien> you want timetravelling debugging basically
<whitequark> uh, no
fold has joined #ocaml
<whitequark> I want to preserve and update state, not rollback it
<adrien> preserve state is what timetravelling debugging does
<whitequark> I have zero interest in timetravelling debugging, it doesn't work with sockets
<whitequark> and anyway, it's not about debugging
<whitequark> Drup: YES
<whitequark> I FINISHED ppx_deriving_yojson
<Drup> it took you more than half an hour
<whitequark> true that
<Drup> :D
<Drup> (but well done)
ustunozgur has quit [Remote host closed the connection]
<whitequark> took me 12 hours from first commit to first release.
<ggole> Sounds like you want smalltalk, or maybe lisp
<whitequark> ggole: I want types though
<ggole> Typed languages never seem to have the same facilities
<def`> whitequark: it's quite easy to monkey patch module functions
<whitequark> def`: I know
<def`> if you accept not modifying the types, then patching functions isbreachable (in bytecode)
<whitequark> but I want modifying types
<whitequark> and staying safe as well
<whitequark> it's not a trivial request.
<def`> :D interesting subject ...
<ggole> There was a project like that for Haskell, iirc
<ggole> "Dynamic Extension of Typed Functional Languages"
<whitequark> mhm
<ggole> I'm not sure if "extension" covers your use cases or not.
<whitequark> no, too narrow
<orbitz> Type holes seem nice for live programming in haskell
<Drup> whitequark: ah, you want somehting similar to erlang's hot swapping ?
<whitequark> Drup: still too narrow... def`'s solution covers hot swapping
<whitequark> if not very type safe (but it can be wrapped in a safe interface)
<whitequark> I want being able to arbitrarily modify the program and have the heap and stack state adjusted, basically.
<whitequark> how? you provide the conversions that are typechecked and executed.
<Drup> I see
<whitequark> this probably implies some kind of transactionality, I'm not sure
<Drup> well, good luck.
<whitequark> it's a wild ambitious idea that I may once pursue
<ggole> Seems easier to be able to restart and write some code to get to a particular state
<ggole> Although that doesn't play well with things like connections.
ontologiae has quit [Ping timeout: 245 seconds]
<whitequark> yes.
<whitequark> or GUIs.
<ggole> CLOS has something a lot like this built in, but of course no types
hhugo has quit [Quit: Leaving.]
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
<whitequark> Drup: now I should do the same to sexplib
<whitequark> but sexplib kinda scares me, they have rather intricate error messages
Hannibal_Smith has joined #ocaml
<flux> hmph, too bad the ocaml2014 videos are not 1080p, nor has there been DPS magic to remove background humming :)
<mads-> flux: where can I found those?
zpe has quit [Ping timeout: 246 seconds]
<flux> the multicore with fibers and domains seems pretty interesting.
<flux> but I think it's not the only ongoing project for multi-core?
<flux> infact, is that the third one?-o
<Drup> yes indeed
<Drup> it's the only *ongoing* one
<Drup> the others one are dead
<flux> so new projects pop up while the old ones get abandoned ;)
<Drup> I really hope it's the last one.
<flux> well, doesn't need to be the last one but at least it should reach production quality
<Drup> more than production quality, I want it to be merged >_>
<whitequark> is it the one with third heap generation?
<whitequark> minor - major - shared ?
<Drup> no
<Drup> at least, not anymore
<Drup> the major is shared
<whitequark> O_o
<whitequark> that got abandoned?
<Drup> I think it was the initial plan, but they changed it
<ggole> Soon we'll have as many multicore projects as build systems.
<whitequark> tbh I liked that more than the weird fiber thing
<whitequark> I mean, we will now have: lwt threads, normal threads, fibers and multicore domains
<flux> yeah, I think the some folks don't really get it, we don't want to run a different multicore system per each core :P
<whitequark> what?
<Drup> whitequark: "that" = ?
<flux> ;-)
<whitequark> Drup: that = third generation
<Drup> ah, right
<Drup> don't see the link to the fact that you have a notion for concurency and one for //
<Drup> (which is why fibers ≠ domains)
<whitequark> why do you even *need* fibers?
<flux> whitequark, compared to real operating system threads you mean?
<flux> whitequark, they are super fast for contect switching of course, not to mention the GC aspects..
<whitequark> flux: we already have lwt though
<Drup> whitequark: go watch the video already, instead of making us play the repeating game, with partial informations and that takes as much time for everyone.
<whitequark> Drup: I'll rather just shut up
<flux> I suppose you could use lwt instead of fibers. I'm not going to say it's more convenient, though.
<flux> I think fibers don't need to be co-operative like lwt does
<Drup> (fibers are not monadic)
<flux> process a big data structure without inserting yielding points inside it -> boom, core is blocked
<Drup> (and don't suffer the whole "just use a tight loop that do not yield to make the whole thing block")
<whitequark> everything in the ocaml ecosystem currently uses lwt
<whitequark> (except those parts which use async but I pretend they don't exist)
<flux> well, you can still use LWT I think
<whitequark> and this is nice, because you don't have five different incompatible ways to do concurrency
<whitequark> as in, there aren't really any libraries written around blocking IO with Thread.
<Drup> (I'm pretty sure you can implement lwt in terms of fibers and make the whole thing compatible)
<flux> of course, then there is the chance that programs written to use LWT may not be really compatible with the non-co-operative task switching
<flux> but instead they may assume that code without interruption points is executed atomically
<flux> how is that going to be compatible with real threading?
<flux> I do hope the folks introduce more concurrency primitives than just MVar.take and put, though, but I suppose that's given
<Drup> flux: there's a question about that at the end
<flux> (for example waiting for .taking and/or .putting multiple MVars would seem critical to me)
<Drup> (by the parmap author, so not completely innocent :D)
<whitequark> I fear the system with fibers will be more broken than the current state :?
<Drup> why ?
<whitequark> doesn't seem to map / interoperate well with existing usage
<Drup> ah, well
<Drup> raise your concerns to stephen dolan
<whitequark> well
<Drup> personally, I would just be happy to have parallelism and concurency properly integrated
<whitequark> I assume that if those people are smart enough to make a multicore runtime, they're smart enough to not screw up integration
<whitequark> so my concerns are probably unfounded
<Drup> :p
<Drup> I consider ocamllabs people quite smart in general =')
<libertas> hi, I want to start witha functional PL, but have a question about something important to me.
fraggle_ has quit [Remote host closed the connection]
<libertas> in C++, I can traverse a vector and change element with different functions according to the values of elements
<Drup> libertas: don't ask to ask :)
<libertas> and it happens in place, so the data is not copied
<Drup> yes, you can do that in ocaml
<libertas> but I read that ocaml needs to copy data
<libertas> because its immutable
<Drup> not everything is immutable
<Drup> it's immutable *by default*
<ggole> OCaml provides mutable records, strings and arrays
<Drup> but you can use mutability when you feel it needed
<libertas> and its speed is equivalent to C++?
<libertas> I don't mind +10% of delay
tane has quit [Quit: Verlassend]
<Drup> precise speed comparison is a game I don't like to play, but let's say it's in the same order of magnitude
mort___ has joined #ocaml
<libertas> ok, that's enough for me
<Drup> (and also, C++ speed depends a lot of the coding style)
<libertas> of course
<whitequark> the GC write barrier (invoked at every mutation) can be unexpectedly slow compared to C/C++
<whitequark> but in general it's not that bad unless your workload is heavily dominated by mutation
philtom has joined #ocaml
<libertas> in my case I'm building a clustering algorith for datastreams, so speed is important
fraggle_ has joined #ocaml
<Drup> but mutability is not necessarily the good answer :)
<libertas> when appling the same function to all elements of a vector, I guess we can use some 'map' function
<libertas> with different functions I don't know if we can do it as well in OCaml
<whitequark> you can. List.map or Array.map
<Leonidas> BatList.map/Core_list.map %)
mort___ has quit [Quit: Leaving.]
shinnya has quit [Ping timeout: 264 seconds]
<libertas> I'm also looking forward for concurrency and parallelism support which seem near
<Drup> soon™©
<Leonidas> yep, described here, session 1: http://www.syslog.cl.cam.ac.uk/2014/09/05/ocaml-2014/
<libertas> ok, thanks, bbl
ygrek has joined #ocaml
tobiasBora has joined #ocaml
pgomes has joined #ocaml
pgomes has quit [Quit: Leaving]
pgomes has joined #ocaml
tobiasBora has quit [Ping timeout: 268 seconds]
<Drup> whitequark: ldmb's interface is annoying
<whitequark> ldmb?
<Drup> lmdb*
<whitequark> ah
<Drup> I don't know if it's idiomatic C, but it's very painful to make a typesafe binding that doesn't remove some interesting features
<adrien> not really idiomatic C imho
<adrien> well
<adrien> there's nothing such as idiomatic C
<adrien> but I found the API to be a bit annoying
zpe has joined #ocaml
<Drup> what annoys me is the whole "you can pass MDB_FOO to some function to do something widely different, but you have the right to do that only if you passed MDB_BAR at the db creation, or the env opening, or somewhere else"
<whitequark> oh :/
<whitequark> no, it's not really very idiomatic C, it's just poor API
<Drup> it's especially visible for the cursor operations
<Drup> whitequark: do you think I should really expose cursor things or just some iter/map functions ?
<whitequark> both
<whitequark> cursor things as unsafe_* API
<Drup> it's not really unsafe
<Drup> just annoying
Thooms has joined #ocaml
<whitequark> annoying_*
<Drup> x)
zpe has quit [Ping timeout: 260 seconds]
<orbitz> Drup: phantom types!
<Drup> orbitz: well
<Drup> I would, if it was only one or two things
<Drup> but I don't want to have 6 or 7 phantom parameters >_>
<Drup> especially for stuff that is only a configuration parameter
<orbitz> ah i see
<orbitz> it didn't realize it was a product
<orbitz> off to explore the city, have a good night.
<Drup> I do have a phantom type for read-only or write transaction, though
toroidalcode_ has joined #ocaml
toroidalcode has quit [Ping timeout: 252 seconds]
<Drup> to prevent you from being stupid and write during a read only transaction
<Drup> because that's quite common
pgomes has quit [Quit: Leaving]
<whitequark> hahaha caml-list
<whitequark> "I must say there's a strange feeling about creating more type definitions while breaking the type system."
<Drup> this thread is pretty golden :p
robink_ has joined #ocaml
cdidd_ has quit [*.net *.split]
zarul has quit [*.net *.split]
robink has quit [*.net *.split]
mfp has quit [*.net *.split]
asmanur has quit [*.net *.split]
def` has quit [*.net *.split]
teiresias has quit [*.net *.split]
<whitequark> some extensive use of deriving in testing
<whitequark> I say this makes tests great
<Drup> gaah, companion_cube contaminated me
<Drup> I read "yolojson" systematically T_T
<whitequark> me too.
<Drup> I'm surprised you managed not to typo it.
rand000 has joined #ocaml
<whitequark> there's another silly joke in that codebase already
<Drup> unhelpful comment 101
<Drup> :D
<whitequark> it used to be ser/des
<whitequark> then I did s/des/desu/
<whitequark> /g
sivteck has joined #ocaml
sivteck has left #ocaml ["To Infinity and Beyond."]
cdidd_ has joined #ocaml
<Drup> whitequark: @encoding doesn't seem to be documented
<whitequark> Drup: there's a paragraph at the bottom
hhugo has joined #ocaml
teiresias has joined #ocaml
def` has joined #ocaml
asmanur has joined #ocaml
<Drup> oh, indeed. It's easy to miss
<Drup> not sure why you are using the poly variant syntax here, though
<whitequark> I ... don't know actually
<Drup> :D
zarul has joined #ocaml
zarul has joined #ocaml
zarul has quit [Changing host]
<whitequark> I did put some thought into it back when I made it
<whitequark> don't remember any of it whatsoever
hhugo has quit [Quit: Leaving.]
<Drup> in case you don't want a normal identifier, for whatever reason, "String" seem better to me
fold has quit [Ping timeout: 255 seconds]
<Drup> or `String, if you want to be consistent with YoJson
mfp has joined #ocaml
<Drup> but `string seems akward
<whitequark> nono, strings are off
<whitequark> that's just dirty
<whitequark> it should be some kind of variant
<whitequark> String, `String or `string
<Drup> yes, I meant String
<pippijn> `string is deprecated, I thought
<Drup> yes
<Drup> hum
<Drup> I think
<Drup> whitequark: you can use "string" too, it will just be an identifier
Submarine has joined #ocaml
<whitequark> Drup: it was the first thing I used
<whitequark> but it's kinda horrible, it looks like a variable
<whitequark> but it is not
<whitequark> I hate such non-semantic use of AST, it should die in a fire
<Drup> to me [@encoding string] look nothing more than an annotation
<whitequark> other annotations include actual code though.
<whitequark> [@encoding string] [@printer foobar]
<whitequark> ewwwww
<Drup> ok, that's a good argument
<Drup> use String
<Drup> :D
<whitequark> well
<whitequark> String is a module name.
<whitequark> but `String is completely unambiguous
<Drup> String is a variant
<Drup> you can't put a module name there
<whitequark> a longident :p yes, I know, but you also have a module named String, which is also a longident
<Drup> I mean the good answer is to be consistent with YoJson
<Drup> the json type contains `String, so use that
<Drup> and in the future, you may add other encoding (for example, for list-like data structure that you want to be encoded like lists), and you could keep the same technique
<Drup> s/mean/string/
<Drup> graa
<Drup> I should not multi task
<Drup> I keep crossing the flows of information in my brain >_>
<whitequark> hrm
<whitequark> I was using the types of JSON itself there
<whitequark> e.g. JSON doesn't have ints actually
pgomes has joined #ocaml
<pippijn> make a deriving (Proto) or Protobuf
<Drup> that's already done x)
<pippijn> nice
<pippijn> oh
<pippijn> not nice
<Drup> x)
<Drup> pippijn: why ?
<pippijn> "You should be very careful about marking fields as required"
<pippijn> "Some engineers at Google have come to the conclusion that using required does more harm than good"
Hannibal_Smith has quit [Quit: Sto andando via]
<whitequark> pippijn: what about it?
<whitequark> see the guidelines for protocol compatibility below
<whitequark> errr no
pgomes has left #ocaml ["Leaving"]
<pippijn> ok
<pippijn> whitequark: yeah, it's good
tobiasBora has joined #ocaml
<whitequark> that's even worse
<Drup> ahah xD
samrat has quit [Quit: Computer has gone to sleep.]
msaegesser has quit [Read error: Connection reset by peer]
msaegesser has joined #ocaml
zpe has joined #ocaml
ygrek has quit [Ping timeout: 268 seconds]
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
msaegesser has quit [Ping timeout: 276 seconds]
zpe has quit [Ping timeout: 245 seconds]
axiles has quit [Remote host closed the connection]
Submarine has quit [Remote host closed the connection]
zpe has joined #ocaml
msaegesser has joined #ocaml
hhugo has joined #ocaml
robink_ is now known as robink
ggole has quit []
shinnya has joined #ocaml
Kakadu has quit [Quit: Konversation terminated!]
hhugo has quit [Quit: Leaving.]
zwer_ has joined #ocaml
zwer_ has left #ocaml [#ocaml]
darkf has joined #ocaml
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
zpe has quit [Ping timeout: 272 seconds]
msaegesser has quit [Ping timeout: 245 seconds]
MercurialAlchemi has quit [Ping timeout: 260 seconds]
msaegesser has joined #ocaml
Arsenik has joined #ocaml
rz has joined #ocaml
Arsenik has quit [Ping timeout: 246 seconds]
Simn has quit [Quit: Leaving]
zpe has joined #ocaml
zpe has quit [Ping timeout: 272 seconds]
rand000 has quit [Quit: leaving]
madroach has quit [Ping timeout: 250 seconds]
hhugo has joined #ocaml
madroach has joined #ocaml
<philtom> how does one try the modular implicits branch? From watching the very blurry slides in the video I saw something like:opam switch 4.02.0+modular-implicits
<philtom> But: [ERROR] "4.02.0+modular-implicits" is not a valid compiler.
NoNNaN has quit [Remote host closed the connection]
<Drup> can't see it either.
NoNNaN has joined #ocaml
rz has quit [Ping timeout: 245 seconds]
rz has joined #ocaml
Thooms has quit [Quit: WeeChat 0.4.3]
mhi^ has quit [Quit: Lost terminal]
malo_ has joined #ocaml
hhugo has quit [Quit: Leaving.]