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.]
<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.]
* 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
<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 :(
<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
<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
<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]