ChanServ changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | http://www.ocaml.org | OCaml 4.01.0 announce at http://bit.ly/1851A3R | Logs at http://irclog.whitequark.org/ocaml
shinnya has quit [Ping timeout: 264 seconds]
sad0ur has quit [Ping timeout: 245 seconds]
shinnya has joined #ocaml
sad0ur has joined #ocaml
_cody_ has joined #ocaml
travisbrady has quit [Quit: travisbrady]
jprakash has quit [Ping timeout: 245 seconds]
jprakash has joined #ocaml
philtor_ has joined #ocaml
travisbrady has joined #ocaml
gustav___ has quit [Ping timeout: 244 seconds]
gustav___ has joined #ocaml
mmq has joined #ocaml
parcs has joined #ocaml
gustav___ has quit [Remote host closed the connection]
gustav___ has joined #ocaml
troutwine is now known as troutwine_away
BitPuffin has quit [Ping timeout: 264 seconds]
parcs has quit [Remote host closed the connection]
jprakash has quit [Ping timeout: 240 seconds]
dereinzige has quit [Ping timeout: 255 seconds]
jwatzman|work has quit [Quit: jwatzman|work]
hhugo has quit [Quit: Leaving.]
philtor_ has quit [Ping timeout: 255 seconds]
_cody_ has quit [Quit: Leaving]
lordkryss has quit [Quit: Connection closed for inactivity]
eikke__ has joined #ocaml
rz has joined #ocaml
eikke__ has quit [Ping timeout: 264 seconds]
rz has quit [Quit: Ex-Chat]
huza has joined #ocaml
philtor has quit [*.net *.split]
mrpantou1le has quit [*.net *.split]
jpdeplaix has quit [*.net *.split]
bcucciol1 has quit [*.net *.split]
fold has quit [*.net *.split]
misv_ has quit [*.net *.split]
pollux has quit [*.net *.split]
_`_ has quit [*.net *.split]
jzelinskie has quit [*.net *.split]
Mandus has quit [*.net *.split]
robink has quit [*.net *.split]
_twx_ has quit [*.net *.split]
hbar has quit [*.net *.split]
maufred has quit [*.net *.split]
relrod has quit [*.net *.split]
Valdo has quit [*.net *.split]
alinab has quit [*.net *.split]
isomorphismes has quit [*.net *.split]
mrvn has quit [*.net *.split]
gargawel_ has quit [*.net *.split]
hnrgrgr has quit [*.net *.split]
relrod has joined #ocaml
robink has joined #ocaml
fold has joined #ocaml
malc_ has left #ocaml ["ERC Version 5.3 (IRC client for Emacs)"]
badon has joined #ocaml
badon has quit [Ping timeout: 264 seconds]
mrpantou1le has joined #ocaml
pollux has joined #ocaml
misv_ has joined #ocaml
Mandus has joined #ocaml
_`_ has joined #ocaml
jzelinskie has joined #ocaml
bcucciol1 has joined #ocaml
jpdeplaix has joined #ocaml
jao has joined #ocaml
hnrgrgr has joined #ocaml
Valdo has joined #ocaml
maufred has joined #ocaml
alinab has joined #ocaml
gargawel_ has joined #ocaml
mrvn has joined #ocaml
hbar has joined #ocaml
isomorphismes has joined #ocaml
_twx_ has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
srcerer has quit [Ping timeout: 272 seconds]
oriba has quit [Quit: oriba]
jprakash has joined #ocaml
jprakash has quit [Client Quit]
q66 has quit [Quit: Leaving]
samrat has joined #ocaml
araujo has quit [Quit: Leaving]
samrat has quit [Quit: Computer has gone to sleep.]
travisbrady has quit [Quit: travisbrady]
samrat has joined #ocaml
samrat has quit [Ping timeout: 255 seconds]
yacks has joined #ocaml
samrat has joined #ocaml
koderok has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
natrium1970 has joined #ocaml
<natrium1970> I’m trying to build the documentation for the packages I installed using opam, but I’m having trouble.
<natrium1970> The closest I could find was http://pw374.github.io/posts/2013-09-24-01-50-14-opamdoc-take1.html but that seems too old. It fails on my system trying to run “opam switch 4.01.0beta1+opamdoc” (clang bombs out with # clang: error: unknown argument: '-fno-defer-pop' [-Wunused-command-line-argument-hard-error-in-future])
<natrium1970> I also tried just installing the package “opam-doc”, but it does not seem to do anything useful.
samrat has joined #ocaml
<natrium1970> Since I can’t find a downloadable version of the Core documentation, I was hoping to generate it myself, but that seems to be impossible.
samrat has quit [Client Quit]
natrium1970 has quit [Quit: natrium1970]
_0xAX has joined #ocaml
yacks has quit [Ping timeout: 240 seconds]
claudiuc_ has quit [Remote host closed the connection]
jao has quit [Ping timeout: 255 seconds]
ollehar has joined #ocaml
yacks has joined #ocaml
ollehar has quit [Quit: ollehar]
samrat has joined #ocaml
MercurialAlchemi has joined #ocaml
Simn has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
_0xAX has quit [Remote host closed the connection]
koderok has quit [Quit: koderok]
Kakadu has joined #ocaml
WraithM has joined #ocaml
samrat has joined #ocaml
huza has quit [Quit: WeeChat 0.3.8]
axiles has quit [Ping timeout: 264 seconds]
axiles has joined #ocaml
WraithM has quit [Ping timeout: 264 seconds]
dereinzige has joined #ocaml
ggole has joined #ocaml
ontologiae has joined #ocaml
fraggle_laptop has joined #ocaml
badon has joined #ocaml
thomasga has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 250 seconds]
ggole has quit []
samrat has quit [Ping timeout: 250 seconds]
MercurialAlchemi has joined #ocaml
samrat has joined #ocaml
thomasga has quit [Quit: Leaving.]
mmq has left #ocaml ["ERC Version 5.3 (IRC client for Emacs)"]
hhugo has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
njcomsec has joined #ocaml
samrat has joined #ocaml
thomasga has joined #ocaml
thomasga has quit [Client Quit]
MercurialAlchemi has quit [Ping timeout: 272 seconds]
fold has quit [Ping timeout: 240 seconds]
badon has quit [Ping timeout: 250 seconds]
rand000 has joined #ocaml
ontologiae has quit [Ping timeout: 240 seconds]
ebzzry has quit [Remote host closed the connection]
ggole has joined #ocaml
ggole has quit []
hhugo has quit [Quit: Leaving.]
hhugo has joined #ocaml
sad0ur has quit [Ping timeout: 272 seconds]
sad0ur has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
samebchase has quit [Ping timeout: 250 seconds]
samebchase has joined #ocaml
samrat has joined #ocaml
hhugo has quit [Quit: Leaving.]
chris2 has quit [Ping timeout: 250 seconds]
vincom2 has quit [Ping timeout: 250 seconds]
chris2 has joined #ocaml
vincom2 has joined #ocaml
ebzzry has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
samrat has joined #ocaml
badon has joined #ocaml
rand000 has quit [Quit: leaving]
foo__ has joined #ocaml
foo__ is now known as Guest45827
samrat has quit [Quit: Computer has gone to sleep.]
BitPuffin has joined #ocaml
hm1 has joined #ocaml
ontologiae has joined #ocaml
parcs has joined #ocaml
hm1 has left #ocaml [#ocaml]
hm1 has joined #ocaml
Guest45827 has quit [Quit: Page closed]
romildo has joined #ocaml
Thooms has joined #ocaml
<romildo> I cannot find a link to download the latest release of OCamlEditor in its home page: http://ocamleditor.forge.ocamlcore.org/
<romildo> Does anyone know where a tar.gz (or similar) distribution file is made available?
hm1 has left #ocaml [#ocaml]
hm1 has joined #ocaml
_0xAX has joined #ocaml
alexxxx has joined #ocaml
alexxxx has quit [Client Quit]
hm1 has quit [Quit: Leaving.]
pminten has joined #ocaml
jbrown has joined #ocaml
darkf has quit [Quit: Leaving]
eikke__ has joined #ocaml
BitPuffin has quit [Ping timeout: 240 seconds]
pminten has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
gasche has joined #ocaml
<gasche> Hi folks
<gasche> the machine than runs screen+irssi has a flaky ethernet cable, which disconnected me for good a while ago (will be fixed on Monday I hope)
<gasche> so what's new under #ocaml? ^^
<gasche> I heard whitequark will be coming to France shortly, cool!
BitPuffin has joined #ocaml
lordkryss has joined #ocaml
ggole has joined #ocaml
pgomes has joined #ocaml
yacks has quit [Ping timeout: 240 seconds]
<gasche> (def`, ping merlin mail)
<def`> (gasche, pong)
yacks has joined #ocaml
<gasche> I'm tempted to have a go at a menhir grammar for OCaml this week-end
<gasche> but I think I'll rather fix bugs
<gasche> (no no, the pong should go in my mailbox!)
pgomes has left #ocaml ["Leaving"]
<ggole> Speaking of merlin, I have a workaround for that C-g problem. It's a complete hack though.
<rks`> <3
<def`> oh, ok sorry
<asmanur> ggole: did you write on the mailing list ?
<gasche> I've used merlin recently and I noticed that memory usage could get quite high, repeatedly modifying a single file of code (which depends on Batteries)
<gasche> at some point it got to 50% of my RAM, but merlin-restart-process fixed the problem for me
<ggole> No, I've been a bit busy. I'm also not sure whether the behaviour is actually a bug.
<gasche> (also it would get dead slow at each file save)
<rks`> gasche: I think def` noticed that this week (and fixed it?)
<ggole> I'll do so since it might be nice to get the design of set-temporary-overlay-map changed a bit to cover this case if it is not a bug.
travisbrady has joined #ocaml
<def`> gasche: there was a leak in emacs mode at some point, and the speed problem was fixed this week
<asmanur> v
<asmanur> ggole: ok, let me know
<gasche> so should we use the merlin2 branch, or did you backport the change in the master branch, or should we just wait for the next release?
<def`> gasche: all of this is actually backport to merlin1
<gasche> (it's not an important problem for me as it's easy to work-around, and because I can't use merlin for most of my OCaml development that happens to be on the compiler itself)
<Drup> what's wrong with using merlin on the compiler itself ? :)
<gasche> it says "bad magic number"
<Drup> even with merlin2 ?
<def`> gasche: for magic numbers of 4.02.0, merlin2 branch works
<gasche> I don't usually use unreleased bleeding-edge branches of software
<gasche> I would have tried merlin2 if there was documentation somewhere recommending its use, and an easy way to install it
<rks`> you have to when you want to work on unreleased bleeding-edge branches of the compiler gasche
<gasche> well to my knowledge most of the people working on unreleased bleeding-edge branches of the compiler don't use merlin2
BitPuffin has quit [Ping timeout: 264 seconds]
<Drup> (potentially drop the "add" if you use an old version of opam)
<gasche> Drup, you should mark that in the Merlin documentation somewhere
<Drup> you do know I'm not on the merlin team, do you ?
<asmanur> humanity is on the merlin team
<whitequark> gasche: indeed! I'll have most of Aug 30 free (it's saturday)
<Drup> 30 aug
<Drup> hum
<Drup> I will not be in paris anymore already
<whitequark> I'm staying in Nanterre btw
<Drup> and gasche probably the same, since he goes to icfp
<whitequark> oh
<whitequark> bad timing, I see
_`_ has quit [Remote host closed the connection]
<rks`> (no one will care but: i'm free on aug30, we could probably meet with def` or something?)
<whitequark> gasche: I'm going to use (more) of merlin2 ;p
<gasche> Drup, it's not that hard to make a pull request to change the documentation ^^
_`_ has joined #ocaml
<whitequark> rks`: not a bad idea too
travisbrady has quit [Quit: travisbrady]
<gasche> as Drup I'll be away between a-week-from-now and mid-September
<gasche> but we'll certainly meet then
<gasche> hm
<Drup> 2 weeks from now*
<gasche> does anyone know an easy way to "test all the OPAM software" against a given private OPAM switch?
<whitequark> I'll quite certainly will be travelling more in Schengen area, so it is not really an issue
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
<gasche> Leo suggested that I do that for formats, but I don't actually know of a way to ask OPAM to "install as much as possible and I'll see what breaks"
<Drup> gasche: isn't what ocamlot is for ?
<def`> Drup: I won't go te ICFP, I'll be in Moscow (world upside down, yeah…)
<gasche> in theory yes, but in practice I don't have much idea of how to deploy it
<gasche> I'd need a "run this and this and this command and it'll test your switch" guide to ocamlot
travisbrady has joined #ocaml
<gasche> (and I think ocamlot is more geared towards continuous monitoring of the packages, less the testing of a switch, so there may exist simpler scripts for that latter purpose)
<gasche> def`, btw., I asked Jacques about your arrow_flag patch
<Drup> gasche: ask ocp people how they did that http://ows.irill.org/index.html. You have handy access to them on week days :)
<gasche> and his answer was "I'm in holidays right now so not the good time, in principle why not but I'll read the patch first"
<whitequark> gasche: opam list -a | awk '{print $1}' | tail -n+2 | xargs opam install ?
<Drup> poor solver
<whitequark> hm, it actually fails
<gasche> Drup, note that they don't actually install the packages to compute installability
<gasche> but yeah, I could try using their output
<whitequark> so nevermind
<Drup> whitequark: I doubt the whole universe is consistent
<whitequark> Drup: it immediately fails on extlib
<def`> gasche: ok.
<whitequark> why is there even extlib and extlib-compat?..
<gasche> also they don't return connected components, just sets of installable packages
<gasche> so it's not really what I want (but they could possibly give it)
BitPuffin has joined #ocaml
travisbrady has quit [Quit: travisbrady]
travisbrady has joined #ocaml
studybot has quit [Ping timeout: 264 seconds]
studybot has joined #ocaml
jao has quit [Ping timeout: 255 seconds]
<whitequark> Drup: oh I forgot to mention, I delivered a talk about Eliom a few hours ago
<Drup> ah, it's done !
<Drup> :D
<whitequark> out of ~350 who attended, four starred my example repo
<whitequark> I consider that a failure
<Drup> well, it was a talk about a statically typed languages on a ruby convention
<Drup> what did you expect ?
<whitequark> no, nno
<Drup> -s
<whitequark> that would be in late September
<whitequark> this one was on an FP meetup
<Drup> oh
<whitequark> sandwiched between Clojure, Erlang and Haskell
<Drup> :(
<whitequark> indeed
<whitequark> well
<whitequark> it's mostly people who heard of FP and mostly use dynlangs
<def`> I wouldn't have starred an example repo, I am not sure it's a reliable metric.
<whitequark> I think there was zero people in audience who actually write FP code for money?
<whitequark> maybe one or two
<def`> … and that kind of bias.
<NoNNaN> that's sad
<Drup> I technically don't write FP code for money x)
<NoNNaN> it is possible to make an array pinned (non-movable by gc) in ocaml ?
<whitequark> NoNNaN: use a bigarray
samrat has joined #ocaml
travisbrady has quit [Quit: travisbrady]
eikke__ has quit [Ping timeout: 245 seconds]
samrat has quit [Quit: Computer has gone to sleep.]
eikke__ has joined #ocaml
njcomsec has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
* ggole has a giggle at type t = [`premiums|`squigglier]
travisbrady has joined #ocaml
MercurialAlchemi has joined #ocaml
q66 has joined #ocaml
samrat has joined #ocaml
shinnya has quit [Ping timeout: 250 seconds]
_0xAX has quit [Remote host closed the connection]
Hannibal_Smith has joined #ocaml
shinnya has joined #ocaml
samrat has quit [Ping timeout: 272 seconds]
samrat has joined #ocaml
<gasche> Drup, will you be starting your PhD research now? Or did you already last year?
<Drup> now
samrat has quit [Client Quit]
BitPuffin has quit [Ping timeout: 272 seconds]
travisbrady has quit [Quit: travisbrady]
shinnya has quit [Ping timeout: 245 seconds]
<gasche> Drup, as you probably guessed, we won't touch the more syntactic-oriented GPRs (github pull requests) before the release
<Drup> of course
<gasche> (and I have *no* idea how's the temperature on infix constructors, sorry)
<Drup> I didn't expect it any way
<whitequark> gasche: what about 83, 84, 89? and especially 80
<gasche> (do you actually remember the number->content mapping?)
<whitequark> gasche: no, I just went through ocaml/ocaml/pulls. I could paste links here, but it's probably a bit annoying
shinnya has joined #ocaml
<gasche> I don't think any of those can or need to be acted upon for 4.02
<whitequark> hm, I see, no new features after freeze. it makes sense.
<whitequark> although I think Obj.extension_slot still should be merged
<whitequark> as it is done simultaneously with the representation change
<gasche> 80 (UChar) and 84 (equal functions): feature freeze, 89 (eta-expansion) can wait
<gasche> 83 (extension_slot) would be doable I think but that's not for me to decide
<gasche> yep
<whitequark> ok
<gasche> I'm curious: why do you care about this one particularly?
<whitequark> I have stumbled on it more than once but I do not remember the exact use cases right now
<whitequark> I'll probably need to use it in pry.ml
<gasche> I'll try to synch mantis with the GPRs, which I've failed to do properly for a long time know (apologies), then maybe email Alain about this one, I can cc: you if you're interested
<gasche> pry.ml?
<gasche> (you hack on too many things, how am I supposed to follow?)
<whitequark> a REPL that has access to context of where it's called, or of a breakpoint
<whitequark> Ruby has a thing called pry which greatly helps with exploratory programming and debugging. it's not a direct port, but sort of an "inspired by" one
<gasche> looks like there could be an overlap with Mark Shinwell's work on DWARF and associated gdb goodness
<whitequark> I have a proof of concept already, in fact
<whitequark> no, not at all
<whitequark> pry.ml works purely on bytecode
<gasche> well of course that's easier there :-'
<gasche> hm
<whitequark> (and it does terrible, terrible things to ocamlrun to make it do what it wants. I mean completely hideous.)
<gasche> I have two questions, one related one not
<gasche> related: do you have any idea about how merlin could better integrate with the toplevel?
<gasche> I think that's the number one major feature missing from merlin
<gasche> unrelated: I forgot the details of the bytes-compat + ocamlfind integration, what should I (or you?) do now that the interface has changed wrt. what we sent to Gerd?
<whitequark> humm, I use Sublime-REPL with utop in emacs mode, so that utop itself manages completion
<whitequark> it works really well. so, why not replicate that in Merlin?
<gasche> (and also: is it possible to *also* release bytes-compat as an OPAM package for the poor souls that don't use ocamlfind?)
<gasche> hm
<gasche> what does not work for me in Emacs is that I have send the buffers manually to the toplevel window
<gasche> and manually re-send when the code changed
<gasche> and I just want to tell Merlin "ok I want to execute code in the environment of this fragment of the buffer you just type-checked"
<whitequark> oh, I don't actually have a workflow like that. I never send buffers into REPL
<whitequark> so I'm a wrong person to ask
<Drup> gasche: you mean ou would like a merlin-like interface that actually execute the code ?
<gasche> but it's unclear to me (or to asmanur , rks` and def` I believe) what the semantics should be
<Drup> you*
<gasche> Drup, just deciding what's the right thing to (re-)send to the separate toplevel would be fine
<ggole> Like a live-coding type of thing? Show the result of all the code that type-checks?
<gasche> whitequark, so you use #load from the toplevel to work inside the project you're hacking on?
<whitequark> gasche: nay. I make a .mltop file.
<Drup> personally, I opam pin and #require
<whitequark> ^ and that too.
<ggole> I usually .mltop, yeah
fold has joined #ocaml
<whitequark> if it's a library, #require. if not, .mltop.
<gasche> but then what happens if some of the modules don't build fully?
<ggole> I have a shortcut to make then kill and reload the toplevel
<whitequark> gasche: um. I fix the type errors? :)
<rks`> you're so down to earth whitequark
<rks`> :)
<Drup> for the "let's design a quick and dirty solution to some irc-question", I use ocaml-top
<gasche> merlin has a good knowledge of the parts that work, it could communicate that to the toplevel somehow
<whitequark> Drup: I use utop, but, yes
<gasche> (it could even place "failwith <...>" in the leaves that are broken, that would be kind of cool)
<whitequark> gasche: so like that mode in Haskell?
<gasche> yeah
<ggole> The one that type constructor patterns for you?
<gasche> except as a hack rather than a beautiful implementation in the type-checker :-'
<whitequark> ;D
<gasche> ggole, no, the one that turns unification errors into runtime errors
<ggole> Oh, right.
<whitequark> gasche: regarding bytes. bytes-compat now lives inside ocamlfind tree.
<gasche> so I should directly send any updates to Gerd
<Drup> gasche: "beautiful"
<whitequark> indeed
<gasche> not saying all of GHC is beautiful
<gasche> the type-checker engine is nice though, don't you agree Drup?
<whitequark> gasche: regarding ocamlfind-less. I am not sure.
<def`> gasche: add this to the typechecker then?
<whitequark> there is a base-bytes package that depends on nothing on 4.02 and ocamlfind on pre-4.02
<Drup> gasche: oh, sure. But the "let's delegate type error to runtime" is not something I would qualify "beautiful"
<gasche> def`, what "this"?
<gasche> I don't know if you read the paper
<whitequark> gasche: is there any circumstances where one would actively avoid installing ocamlfind at all?
<gasche> it's a beautiful trick
<gasche> me, no
<gasche> hm
<gasche> let's forget about that
<whitequark> Drup: (type error to runtime) I really wonder how that would play with Rails-like autoreloading
<whitequark> in fact, go further, catch syntax errors too and delegate them to runtime
<whitequark> (not a joke)
<Drup> err
<gasche> the beautiful trick in Haskell's case is that this mode still only manipulate well-typed programs
<Drup> why ? :(
<whitequark> the idea is that you ^S (or maybe :w), then switch to the browser and do F5
<whitequark> and no matter what kind of crap do you have, you can see it all nicely formatted in one place
<gasche> by adding a pattern-matching on an error of the type "GADT witness of the equality that doesn't actually hold"
<Drup> and watch the world explode in your browser instead of the output window of the typechecker ?
<whitequark> indeed
<Drup> I don't see that as an improvement, tbh
<whitequark> I suppose it depends on where are you coming from
<Drup> even simply for the fact that I have jump to error in my editor, not in my browser
<whitequark> in Rails, it's an accidental implementation detail. I'm not convinced it is much good myself, I was just thinking of exploring this direction
<whitequark> hm, good point
<Drup> (and other goodies)
<whitequark> I don't use that because jump-to-error is broken in Sublime, because compiler outputs the columns off by one and in some silly format
<Drup> fix the regex used by sublime ?
<whitequark> I used to have it fixed somewhere, I need to pull that out
<whitequark> it is still uber annoying that it is off by one, though
<gasche> Drup, one difference between type-checking and syntax errors is that the former is non-local
<whitequark> and no fix for that, sans patching the binary in IDA
<whitequark> well. I can do that. it will take just a few hours.
<whitequark> maybe I should
<gasche> I mean, "I'm refactoring this data-type and I'd like to test the result on this reworked part of my code while that other isn't done yet" is a valid use-case
* ggole mumbles something about closed source editors
<gasche> it's rare that a change to some module creates *syntax* errors in others
<whitequark> ggole: it's only closed-source if you let it be so
<whitequark> or something
<gasche> (well it can happen with macros, but Ruby people find monkey patching much more fun)
<whitequark> gasche: nonono that would not lead to a syntax error ever
<whitequark> you can parse Ruby file without any environment knowledge whatsoever
<ggole> whitequark: that's quite a thirst for pain you have there
<rks`> true dat.
<whitequark> ggole: my software obeys me.
<whitequark> it is out of question that it would not.
<whitequark> or was that remark about the fact that I wrote a Ruby parser? then yes.
<whitequark> I am still amazed that thing actually works
<ggole> It was about both, really
<Drup> also, whitequark, I'm not sure how Rail's autoreloading work
<gasche> I think the remark generally applies to your projects whitequark
<whitequark> haha
<Drup> but you could have autoreloading after compilation for ocsigenserver
<whitequark> Drup: it is uh
<gasche> I'm not sure whether IDA patching a closed-source editors displays more or less sanity than jumping on -ppx before it's even released
samrat has joined #ocaml
<gasche> (less I'd say)
<whitequark> gasche: well, but now -ppx is actually usable in 4.02
<whitequark> *someone* had to do it
<rks`> I love you.
<Drup> x)
<whitequark> :D
<rks`> « But what was this for? I don’t think I ever needed to type ಠ_ಠ in Sublime Text.
<rks`> I think I just like the sense of control over my tools. »
<rks`> <3
BitPuffin has joined #ocaml
<whitequark> Drup: it assumes that every file defines a constant with the same path/name in the global namespace
<whitequark> and when it reloads, it removes those constants from the global namespace
<whitequark> it doesn't care about any other side effects or objects instantiated from now-unloaded classes at all
* Drup blinks of disbelieve
<whitequark> then, it just load's all the files in search path again
<whitequark> you may ask how it performs dependency resolution
<whitequark> the answer is that it intercepts the method that Ruby calls when it cannot find a constant in the global namespace and it tries to load a file with the corresponding name from there
<whitequark> and it doesn't load the same file twice
* whitequark widely grins
<whitequark> rks`: I now also have (╯°□°)╯︵ ┻━┻ and /人◕ ‿‿ ◕人\ and (ノಠ益ಠ)ノ in my .XCompose
<gasche> I have a final request
<whitequark> the first and the last accurately describe my emotions while working with Ruby
<gasche> I promised the "OCaml Wokshop" at ICFP that I would talk (briefly) about the experience of accepting github pull requests
<Drup> whitequark: in case of ocsigenserver, simply dynlink
<gasche> to do that I'll browse the data, but I'd also like to get personal feedback from people
<whitequark> Drup: yes, I know, but there's still autorecompilation
<gasche> if you have an opinion on what github pull requests change (good or bad) for OCaml development, could you send me an email about that?
<whitequark> I think OMake has something to that end, but then it's OMake
<gasche> jenga supports file-watching and recompilation
<gasche> I actually considered adding that to ocamlbuild but I'm not sure it's worth the trouble
<whitequark> is there any tool more duplicated in OCaml ecosystem than build systems?
<Drup> gasche: I have the feeling that you are the only one taking care of closing accepted PR and updating the author about the status
<gasche> Drup, email, email
<Drup> and that, when you are not here, nobody is doing it
<Drup> right
<whitequark> ocp-build, OMake, OCamlMakefile, ocamlbuild, OASIS, jenga, corebuild, um, I think I missed a few
<gasche> whitequark, does "standard library" count as a tool?
<whitequark> gasche: there's not nearly enough of them!
<whitequark> (also, glad to have you back on IRC)
<ggole> Option module?
* ggole has written a few himself
<whitequark> ggole: I gave up on that and just expand the match everywhere now
<Drup> I don't count the number of time I wrote Option.map
<Drup> well, now I will just depend on containers everywhere and be done with it
<ggole> map and iter, yep
<whitequark> containers has Option?!
<Drup> of course
<Drup> CCOpt
<whitequark> companion_cube: ♥
<Drup> the opposite would be .. surprising
<ggole> Rather, [(♥)]
<Drup> it doesn't have |?, which I like (it's in batteries)
<gasche> I won't stay on IRC very long I think
<whitequark> Drup: |?
<whitequark> er, |? ?
<Drup> "x |? y" ≡ "match x with Some x -> x | None -> y"
<whitequark> so, Option.default
<Drup> yes, it's named in various ways depending on the library
<def`> (I was afk, about ppx: at best it is palliative care, not a proper remedy)
<ggole> This is probably heresy, but I miss Lisp's magic or for that
<whitequark> I'm not sure a proper remedy could ever be merged
<gasche> I'm less productive in my OCaml hacking when I'm too much on IRC, and less productive on what I actually get paid for when I do too much OCaml hacking
<gasche> I used Batteries recently
<gasche> so it's a nuisance squared :-'
<gasche> (one problem I have is that, given I don't do much more than hacking the OCaml compiler itself these days, I obviously don't use much third-party libraries)
<gasche> it's quite pleasant :p
<gasche> I hoped I'd have time to better integrate batteries-light in master this summer, but it's going to be hard to fit
<gasche> (the time, not the code)
<def`> whitequark: I don't know what a remedy could be, still it's not a solution
<Drup> integrate batteries-light would be really cool
<Drup> def`: what are you talking about ? :o
<def`> (but still, I appreciate you took the time to solve the immediate problems with it )
<def`> Drup: ppx
<Drup> sure, but which problems are you talking about exactly ?
<whitequark> gasche: sent you an email about PRs
<gasche> def`, you mean that *ppx* is palliative care, or di I miss the topic?
<def`> gasche: yes
<def`> Drup: meta programming in ocaml
<Drup> right
<Drup> what would you prefer instead ?
<def`> Drup: < def`> whitequark: I don't know what a remedy could be
<gasche> I think Alain would be open to improvement suggestions
<gasche> at some point I decided that maybe I didn't have the time to care too much about camlp4/ppx and could let the other people handle that by themselves
<gasche> ( and whitequark here has been doing that very well )
<whitequark> that reminds me, multiple people asked me for Json in ppx_deriving
<whitequark> last time I was looking at it, I was unsure if I should make it return ADTs (Yojson) or do it with a streaming codec (Jsonm)
<def`> gasche: ppx is close to local improvement, my main complaint is that the processing should be part of the language, not done by an arbitrary external binary
<whitequark> def`: do you think processing should be turing-complete?
koderok has joined #ocaml
koderok has quit [Client Quit]
<whitequark> I mean, I'm looking at Rust--which usually designs these things pretty well--and it has a system nearly identical to ppx
<Drup> well, they have two level in Rust, one very similar to ppx, and another which is much more local
<whitequark> there's a bit more integration with package manager, because there is a bit more integration with package manager overall, and there's some minor differences in how it handles syntax
<whitequark> Drup: yeah, I mean the #[phase(syntax)]
<Drup> yes
<rks`> could you guys give me a link to a description of these features in rust?
<whitequark> Drup: note macro_rules in OCaml could be implemented via ppx!
<Drup> indeed
<Drup> rks`: "I discussed with one of the guy working on rust" is my reference, sorry :(
<rks`> ty
<rks`> oh god, that thing.
<whitequark> I couldn't easily find something more comprehensible, sorry
<whitequark> yes, sorry :(
<whitequark> I [beep] [beep] the guts of whoever came up with the [beep] rotating cube idea
<whitequark> it's like Comic Sans MS of 2013
<Drup> don't forget the idea of bidimensional presentations
<whitequark> Drup: I am usually so blinded by the rage that I can't actually see any of the content anyway, bidimensional or not
<gasche> (Reminder: do send me email feedback on the github pull requests!)
<Drup> oh, also
<Drup> they have proper hygienic rules in their macro, which we don't.
<Drup> (and I'm pretty sure it's going to bite us)
<whitequark> Drup: ... time for ppx_syntax_rules?
<def`> whitequark: no opinion on whether it should or should not be turing complete
<whitequark> def`: I will definitely say yes, deriving-protobuf is impossible in non-TC environment
<gasche> Drup, I'm planning to write a blog post about that, but I think what you say is not quite true
<def`> that rust has no solution either is not an argument in favor of ppx :P
<whitequark> and just deriving is just barely doable I think
<gasche> there are two parts to hygiene
<whitequark> gasche: we had a discussion about hygiene with someone who actually used ppx_deriving (there are such people! color me surprised)
<whitequark> (I am apparently not alone in masochistic tendencies)
<gasche> (1) that local bindings in macros do not shadow user-written bound identifiers (2) that user bindings in macro-using code do not shadow in-macros bound identifiers
<Drup> I will answer by experimental evidences.
<gasche> (1) can be pretty effectively worked-around using "let .. and ... in"
<gasche> (2) is very hard to solve if the macro system is not very tightly integrated in the language
<gasche> (so I'd be surprised if Rust solved it)
<Drup> whitequark: I was surprised too :D
<Drup> gasche: Rust solves 2, yes
<gasche> that's an example of (2), indeed
<whitequark> it does, indeed, but only in non-procedural macros
<whitequark> with Rust's equivalent of ppx, you are on your own
<whitequark> gasche: the problem is that there is no way to get a clean scope.
<gasche> (but whitequark sucked on that part :-' in that case it's quite easy to use an absolute-in-practice name)
<gasche> I don't know what you mean
<Drup> gasche: would it be possible to have "root" module ?
<whitequark> ^
<Drup> I'm not sure how doable is that
<whitequark> there's currently no way to get *the* Pervasives
<whitequark> there is always a chance that something shadowed it
<gasche> well
<gasche> that's a good language design question
<gasche> I don't know how to do that
Simn has quit [Ping timeout: 240 seconds]
<whitequark> that's going to bite ppx_deriving users for sure.
<gasche> the way it's done in Scheme is that code and macro-decls are consumed by the same language implementation at the same time, which generates unique names on the fly (the OCaml type-checker does that internally as well) and can use those names in the macros
<gasche> there is no phase separation between macro-expansion and interpretation/compilation
<whitequark> it uses dozens of identifiers, quite some of which cannot be easily obtained
<gasche> to have a proper phase separation, you have to have proper language support for those unique references
rand000 has joined #ocaml
<gasche> whitequark, you could distribute a library that defines those in a more stable way
<whitequark> for example, you can't get int, float, or option from anywhere
<whitequark> gasche: well, yes, though that invokes a different problem
<whitequark> hm
<Drup> gasche: the name of the library could be overwritten too
<whitequark> no, it doesn't in fact. I probably should do that.
<gasche> Drup, but it's less likely in practice
<Drup> sure
<gasche> I mean if you call that Ppx_deriving_lib, that's fine in actual practice
njcomsec has joined #ocaml
<whitequark> gasche: so I think this would work, I could lift all user-specified declarations in one parallel bind at the top of the generated function
<whitequark> and right after that, locally open UnshadowedPervasives
<gasche> it's not as strong a guarantee as language-level hygiene, but you have to consider that the phase separation is also a good and important design property
<whitequark> or something like that
<gasche> yes, that's what I do in my own syntax extensions
<gasche> there are slight performance concerns because sometimes you don't want to evaluate there so you have to "let x () = $x"
<gasche> but that's ok in most cases
<gasche> you might also be in trouble if you try to simultaneously define term, type and module names
<whitequark> oh?
<whitequark> what do you mean?
<gasche> well there is no (let x = $x and module M = $M in ...)
<gasche> or is there?
<whitequark> hm
<gasche> no there isn't, we should add that :p
<whitequark> :D
<gasche> (that possibly requires non-totally-obvious changes in the type-checker though)
<whitequark> do you really need that though?
<Drup> module Bla = struct let x = $x end and module M = $M ?
<whitequark> I'm not sure of any case that requires it
<gasche> I haven't encountered it in the wild either
<gasche> but that would be one case where OCaml's scoping language is not flexible enough
<gasche> oh
<gasche> wait
<gasche> you can do
<gasche> let module X = struct let x = $x end and module M = $M in ...
<Drup> that's what I just said :(
<gasche> hm
<gasche> I didn't read it but in fact
<gasche> let module .. and ... in ... isn't supported, it seems
<gasche> hum
<gasche> but you can probably functorize that, yes
* whitequark pulls gasche down to earth
<Drup> gasche: whitequark has functor phobia :3
jbrown has quit [Remote host closed the connection]
<gasche> let module Result = (functor (M : MS) (X : sig val x : xt end) -> let foo = ...)($M)(struct let x = $x end) in Result.foo
<gasche> but that requires you to know the signatures and types
<gasche> let's keep it to "we don't often need that in practice" :-'
<gasche> heh
<gasche> let module Result = (functor (M : MS) -> struct let foo x end)($M) in Result.foo $x
<gasche> you have to provide the signatures for the modules (you can't do without that anyone) but it will infer the value types; ain't that swell?
<gasche> (I missed the parentheses: (let module Result ... in Result.foo) )
romildo has quit [Quit: Leaving]
SethTisue has joined #ocaml
eikke__ has quit [Ping timeout: 240 seconds]
BitPuffin has quit [Ping timeout: 272 seconds]
_cody_ has joined #ocaml
Simn has joined #ocaml
_0xAX has joined #ocaml
Anarchos has joined #ocaml
typedlambda has quit [Ping timeout: 250 seconds]
<gasche> fixing ocamlbuild bugs is kind of nice
<whitequark> functors ._.
typedlambda has joined #ocaml
<whitequark> I indeed seem to have functor phobia, I do not even have rational arguments against them anymore
<whitequark> I just hate the sight of them
<gasche> you feel like the brave guy that goes where nowhere else dares
<gasche> and it's actually not that bad
<gasche> (ocamlbuild's testsuite is really cool)
<whitequark> hehe
<ggole> Functors are too often used to work around things instead of straightforwardly standing for a thing that you want.
<ggole> Well, I guess that's true of many language constructs.
_cody_ has quit [Remote host closed the connection]
eikke__ has joined #ocaml
shinnya has quit [Ping timeout: 246 seconds]
<Drup> whitequark: apparently, I forgot to push the documentation for lwt_ppx I did a week ago, so now it's done, you can proofread
<gasche> I seem to remember that Drup was to write some documentation on oasis; how did that go?
<Drup> it was done and on ocaml.org before you even went on vacation
<gasche> cool :)
<gasche> you should have a blog
<Drup> maybe
<gasche> (I haven't taken much holidays so far, I'm planning to do tourism after ICFP)
<gasche> (but I had a POPL deadline that very much looked like a vacation ocaml-hacking-wise)
<gasche> (not in any other respect, though)
<gasche> I'll have a wek in Göteborg, Turku and then Stockholm
<Drup> my point was that I linked it to you, and you answered :D
kalzz has joined #ocaml
Submarine has joined #ocaml
_0xAX has quit [Remote host closed the connection]
fold has quit [Ping timeout: 250 seconds]
Submarine has quit [Ping timeout: 264 seconds]
lordkryss has quit [Quit: Connection closed for inactivity]
Anarchos has quit [Ping timeout: 272 seconds]
Submarine has joined #ocaml
axiles has quit [Ping timeout: 250 seconds]
gustav___ has quit [Ping timeout: 244 seconds]
tizoc has quit [Quit: Coyote finally caught me]
tizoc has joined #ocaml
Tekk_ has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
romildo has joined #ocaml
<romildo> opam-installer wants to install libraries in /usr/lib/pkgname but on gentoo linux that should be /usr/lib/ocaml/pkgname. How can I fix that?
<Drup> --prefix
axiles has joined #ocaml
<romildo> That would change all dirs, not only the lib dir, I suppose.
<nicoo> --libdir ?
<nicoo> Drup: Definitely not prefix :(
Anarchos has joined #ocaml
<nicoo> No libdir option
<nicoo> romildo: Cheat and sed -i the hell out of the install file ? :(
gustav___ has joined #ocaml
<gasche> send a patch to opam-installer
<gasche> ( nicoo , no romildo :-' )
<gasche> *not, unless you feel particularly motivated of course
<nicoo> gasche: I should feel motivated and finish my SipHash patch :(
xvilka has left #ocaml [#ocaml]
<gasche> well yes, but adding --libdir will take you less time and feel satisfying in the meantime
<gasche> (also it has a higher level of urgency, opam 1.2 being just about to be released)
<gasche> (at the very least post a bugreport! we're counting on you here)
Thooms has quit [Quit: WeeChat 0.4.3]
<nicoo> gasche: You are evil
<nicoo> Let me finish this IPSec thing and I'm all yours (well, opam-install's)
<nicoo> This might help unuglyfy my OPAM paludis backend too :3
<romildo> Another one: man pages are being installed at /usr/man instead of /usr/share/man
badon has quit [Ping timeout: 250 seconds]
badon has joined #ocaml
<nicoo> romildo: Burp
njcomsec has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
<Drup> whitequark: Ok, now it actually generates the documentation and I fixed the opam package
fold has joined #ocaml
oriba has joined #ocaml
rand000 has quit [Quit: leaving]
travisbrady has joined #ocaml
philtor_ has joined #ocaml
Submarine has quit [Ping timeout: 244 seconds]
_cody_ has joined #ocaml
badon has quit [Ping timeout: 272 seconds]
Submarine has joined #ocaml
philtor_ has quit [Ping timeout: 255 seconds]
badon has joined #ocaml
badon has quit [Ping timeout: 240 seconds]
whirm has joined #ocaml
romildo has quit [Quit: Leaving]
Hannibal_Smith has quit [Quit: Sto andando via]
Submarine has quit [Quit: Leaving]
_twx_ has quit [*.net *.split]
hbar has quit [*.net *.split]
maufred has quit [*.net *.split]
Valdo has quit [*.net *.split]
alinab has quit [*.net *.split]
isomorphismes has quit [*.net *.split]
mrvn has quit [*.net *.split]
gargawel_ has quit [*.net *.split]
hnrgrgr has quit [*.net *.split]
mrpantou1le has quit [*.net *.split]
jpdeplaix has quit [*.net *.split]
bcucciol1 has quit [*.net *.split]
tizoc has quit [*.net *.split]
SethTisue has quit [*.net *.split]
samebchase has quit [*.net *.split]
misv_ has quit [*.net *.split]
pollux has quit [*.net *.split]
jzelinskie has quit [*.net *.split]
Mandus has quit [*.net *.split]
_twx_ has joined #ocaml
hbar has joined #ocaml
Valdo has joined #ocaml
maufred has joined #ocaml
isomorphismes has joined #ocaml
alinab has joined #ocaml
hnrgrgr has joined #ocaml
gargawel_ has joined #ocaml
mrvn has joined #ocaml
mrpantou1le has joined #ocaml
jpdeplaix has joined #ocaml
bcucciol1 has joined #ocaml
tizoc has joined #ocaml
SethTisue has joined #ocaml
samebchase has joined #ocaml
pollux has joined #ocaml
misv_ has joined #ocaml
jzelinskie has joined #ocaml
Mandus has joined #ocaml
oriba_ has joined #ocaml
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
oriba has quit [Ping timeout: 250 seconds]
_cody_ has quit [Remote host closed the connection]
araujo has joined #ocaml
araujo has joined #ocaml
gasche has quit [Quit: Leaving]
oriba_ is now known as oriba
ggole has quit []
travisbrady has quit [Quit: travisbrady]
BitPuffin has joined #ocaml
path[l] has joined #ocaml
<path[l]> Hi everyone, I have a question. I’m trying to create some utility functions for my own use that operate over lists. Is there a way for me to add it to the list module?
eikke__ has quit [Ping timeout: 260 seconds]
eikke__ has joined #ocaml
<Drup> no
<Drup> but you can create a new List module that includes the "normal" one
fold has quit [Ping timeout: 244 seconds]
path[l] has quit [Ping timeout: 272 seconds]
q66_ has joined #ocaml
q66 has quit [Ping timeout: 260 seconds]
jprakash has joined #ocaml
travisbrady has joined #ocaml
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
travisbrady has quit [Quit: travisbrady]
tautologico has joined #ocaml
Kakadu has quit [Quit: Konversation terminated!]
MercurialAlchemi has quit [Ping timeout: 264 seconds]
ontologiae has quit [Ping timeout: 245 seconds]
marvin-hh has quit [Ping timeout: 250 seconds]
marvin-hh has joined #ocaml
jprakash has quit [Quit: leaving]
pyon has quit [Quit: Fiat justitia ruat caelum.]
shinnya has joined #ocaml
Simn has quit [Quit: Leaving]
cdidd has quit [Ping timeout: 244 seconds]
whirm has quit [Quit: WeeChat 0.4.3]
madroach has quit [Ping timeout: 250 seconds]
rand000 has joined #ocaml
madroach has joined #ocaml
_cody_ has joined #ocaml
cdidd has joined #ocaml
travisbrady has joined #ocaml
pyon has joined #ocaml
NoNNaN has quit [Remote host closed the connection]
NoNNaN has joined #ocaml
oriba has quit [Quit: oriba]