<oni-on-ion>
sry i suck at relations. good to see you
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
mfp has quit [Ping timeout: 272 seconds]
kvda has joined #ocaml
ziyourenxiang_ has joined #ocaml
<readyready15728>
How good are older OCaml books (e.g. OCaml for Scientists) today?
flx_ has joined #ocaml
flux has quit [Remote host closed the connection]
flx_ is now known as flux
quarters has quit [Ping timeout: 258 seconds]
clockish has quit [Quit: bye]
clockish has joined #ocaml
quarters has joined #ocaml
hio has quit [Quit: Connection closed for inactivity]
Jeanne-Kamikaze has joined #ocaml
slice has joined #ocaml
ygrek has joined #ocaml
Mayoi has joined #ocaml
erkin has quit [Quit: Ouch! Got SIGIRL, dying...]
sarahzrf has quit [Ping timeout: 246 seconds]
sarahzrf has joined #ocaml
jack5638 has quit [Ping timeout: 246 seconds]
ygrek has quit [Ping timeout: 248 seconds]
dhil has quit [Quit: Leaving]
jack5638 has joined #ocaml
rosterok has quit [Quit: Connection closed for inactivity]
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
kvda has joined #ocaml
kvda has quit [Client Quit]
AtumT has quit [Quit: AtumT]
kvda has joined #ocaml
RaycatWhoDat has joined #ocaml
<RaycatWhoDat>
Why would #require'ing a package cause an "Error: Reference to undefined global `Base__Fieldslib`"?
<RaycatWhoDat>
`#require "base"` seems to work but for some reason, this error shows up when I `#require "cohttp"`
<RaycatWhoDat>
Not quite sure what step I missed.
ggole has joined #ocaml
RaycatWhoDat has left #ocaml ["ERC (IRC client for Emacs 26.1)"]
gravicappa has joined #ocaml
vicfred has quit [Quit: Leaving]
Vikfret has quit [Quit: Leaving]
gareppa has joined #ocaml
gareppa has quit [Client Quit]
<dmbaturin>
readyready15728: The code from books that stick to the standard library will usually compile, except string mutation, now that -safe-string is the default (replacing String with Bytes fixes it). There's quite a lot of features they don't cover because they are old though.
<dmbaturin>
And we have no new ones. :)
<readyready15728>
dmbaturin, The OCaml from the Very Beginning or w/e is from 2013 I think and there's a WIP update to Real World OCaml
<dmbaturin>
Especially when it's not summer. My past year's effort came to a halt when the semester started. I don't know if it's going to get easier this year. :)
<readyready15728>
dmbaturin, Wait what year are you in
<dmbaturin>
Well, the posts are from 2018, now it's 2019. Or so I think. That school year felt like forever.
Jeanne-Kamikaze has quit [Quit: Leaving]
<readyready15728>
dmbaturin, No I mean like sophomore, junior etc.
<dmbaturin>
readyready15728: Ah. Sophomore now. Well, a second time student, so that's telling nothing about my age. :)
<readyready15728>
dmbaturin, What was the first major and what is it now
<dmbaturin>
The first one was organic chemisty (I dropped out to become a programmer). The current major is clarinet performance, at a classical music school.
<dmbaturin>
That "book" is under CC-BY-SA by the way, so it can be a collaborative effort if anyone is willing to join. My goal is to explicitly make it a living document that other people can update if I stop maintaining it.
narimiran has joined #ocaml
<readyready15728>
dmbaturin, Renaissance man huh? Nice!
<readyready15728>
dmbaturin, I'd be interested in contributing if I knew more but I'm a n00b
<dmbaturin>
Well, even then you can proofread it... which it needs badly as it suffers from artifacts of late night writing. :)
<dmbaturin>
I should make a repository for it.
<xvilka>
does anyone know why ocaml-protoc project is not updated for a couple years already?
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
kvda has joined #ocaml
traviss has joined #ocaml
Travis__ has joined #ocaml
Travis__ has quit [Client Quit]
<dmbaturin>
xvilka: Is there anything knowingly broken there?
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
andreas303 has quit [Remote host closed the connection]
kvda has joined #ocaml
andreas31 has joined #ocaml
mfp has joined #ocaml
andreas31 has quit [Remote host closed the connection]
andreas31 has joined #ocaml
rsmith has joined #ocaml
gareppa has joined #ocaml
freyr69 has joined #ocaml
gareppa has quit [Quit: Leaving]
rsmith has left #ocaml [#ocaml]
themsay has quit [Ping timeout: 245 seconds]
zolk3ri has joined #ocaml
<Leonidas>
xvilka: probably because the author moved on, like often with FOSS software
<Leonidas>
dmbaturin: ocaml-protoc is broken in so many countless ways, everyone is implementing alternatives to that
<Leonidas>
like it fails on some directives in proto files, it generates record types with overlapping fields in the same module (thus forcing to coerce the desired type in ocaml).
<Leonidas>
also it should probably be implemented as plugin for protoc so there isn't much that can be salvaged, reviving it makes little sense to me.
Bahman has quit [Quit: Ave atque vale]
themsay has joined #ocaml
Bahman has joined #ocaml
AtumT has joined #ocaml
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
themsay has quit [Ping timeout: 245 seconds]
kvda has joined #ocaml
kvda has quit [Client Quit]
themsay has joined #ocaml
<xvilka>
Leonidas: are there any working alternatives? I use ocaml-protoc in my project
<dmbaturin>
So do I, but the needs are simple. A protoc plugin sounds like a good idea.
Mayoi is now known as erkin
Haudegen has quit [Quit: Bin weg.]
<Leonidas>
xvilka: we recently saw two, both of them unfit so the plan is to write another one :/ ocaml-protoc is what we use at the moment
igitoor_ has joined #ocaml
niceplace_ has joined #ocaml
nicooo has quit [Ping timeout: 260 seconds]
timeless has quit [*.net *.split]
robmyers has quit [*.net *.split]
bytesighs has quit [*.net *.split]
cemerick has quit [*.net *.split]
niceplace has quit [*.net *.split]
monad_cat has quit [*.net *.split]
adrianbrink has quit [*.net *.split]
stux|RC has quit [*.net *.split]
igitoor has quit [*.net *.split]
jyc has quit [*.net *.split]
rfv has quit [*.net *.split]
lynn has quit [*.net *.split]
lopex has quit [*.net *.split]
stephe has quit [*.net *.split]
alexelcu has quit [*.net *.split]
andreypopp has quit [*.net *.split]
l1x has quit [*.net *.split]
Xizor has quit [*.net *.split]
sspi__ has quit [*.net *.split]
rjungemann has quit [*.net *.split]
bjs has quit [*.net *.split]
nicooo has joined #ocaml
igitoor_ has quit [Changing host]
igitoor_ has joined #ocaml
bjs has joined #ocaml
l1x has joined #ocaml
cemerick has joined #ocaml
adrianbrink has joined #ocaml
monad_cat has joined #ocaml
rfv has joined #ocaml
stux|RC has joined #ocaml
stephe has joined #ocaml
jyc has joined #ocaml
lynn has joined #ocaml
lopex has joined #ocaml
andreypopp has joined #ocaml
alexelcu has joined #ocaml
bytesighs has joined #ocaml
robmyers has joined #ocaml
timeless has joined #ocaml
rjungemann has joined #ocaml
Xizor has joined #ocaml
sspi__ has joined #ocaml
stux|RC has quit [Max SendQ exceeded]
igitoor_ is now known as igitoor
stux|RC has joined #ocaml
Bahman has quit [Quit: Ave atque vale]
octarin has quit [Ping timeout: 245 seconds]
octarin has joined #ocaml
Haudegen has joined #ocaml
<xvilka>
I can't understand how to get the string error value out of Ezgzip.pp_gzip_error
<xvilka>
For some reason 'Printf.printf "%a" Ezgzip.pp_gzip_error e' doesn't work
<octachron>
Format.printf
<ggole>
pp_ suggests that it is a formatter, not an output to channel
<xvilka>
yes, I always managed to avoid pretty printers
<xvilka>
still can't understand
<xvilka>
quite weird types
<xvilka>
and google is not quite helpful
<xvilka>
is there any ready oneliner?
<xvilka>
nvm, just patched ezgzip
<xvilka>
it is easier
<Drup>
People already gave you the solution. Use Format.printf, instead of Printf.printf...
<Drup>
patching software is not "easier" than fixing your lack of knowledge about fundamental parts of the OCaml ecosystem :)
<shenghi>
It isn't? I thought that is how things worked in this day and age. Undestanding fundamentals is something for relics of the past. =]
<xvilka>
Drup: I simply don't have time to learn all fundamentals
<xvilka>
time constraints are the priority
<dmbaturin>
Drup, octachron: When you make a PR against ocaml, you add the Changes entry after it's reviewed and approved and add everyone who reviewed it?
<Drup>
xvilka: you write a lot of forum posts for someone so time-constrained :p
<Kitambi>
a few hours of trial and error can save you several minutes of learning fundamentals
<Kitambi>
also, you can't update from upstream anymore since you patched that library :)
<Kitambi>
not worth it, imo
<octachron>
dmbaturin, you can either add it later, once the PR is approved, or add it with "review by ?"
<Drup>
dmbaturin: yes, that is fine. My usual way is to make a placeholder entry with holes, and patch later
<dmbaturin>
Then the maintainer squash'n'merges it?
<xvilka>
Drup: haha, you got me. Sadly I have to admit, I spent more time trying to understand Format.* and pretty printer, than understanding how to write ppx extensions
<xvilka>
So the part of my mind that can understand this is too dumb
<Drup>
dmbaturin: I prefer to squash myself, but that depends
<dmbaturin>
Also, when you make a PR without creating an issue first (which seems common), what do you put in the #\d+ entry initially? :)
<Drup>
dmbaturin: you use git-based time-traveling :D
<Drup>
(or you just wait for the issue to be created and push a new commit for CHANGES)
<dmbaturin>
Curiously, appveyor doesn't have a Changes test.
<dmbaturin>
Only Travis does.
<Drup>
well, you don't really need to test it twice ...
<dmbaturin>
Good point.
<dmbaturin>
I completely missed the section about Changes in contributing.md initially, but it was very late at night.
<xvilka>
Switching to the raw decompress anyway. I used ezgzip for gzip format only, but it is not very flexible
<dmbaturin>
A PR checklist may be a good idea perhaps.
<octachron>
dmbaturin, note that it is completely fine to miss the Change entry at first. After all, either the test or the reviewer will remind you of the change entry before merging
spew has joined #ocaml
<shenghi>
Speaking of my jest on learning fundamentals. What resource would you suggest for learning writing ppx rewriters? What little I've found is either outdated, chaotic or fragmented.
<Leonidas>
shenghi: I would not recommend doing that now.
<Leonidas>
shenghi: otherwise I would suggest you look at ppxlib and how other code uses ppxlib, and the types of ppxlib and ask on IRC.
<Leonidas>
I don't really consider "writing ppx rewriters" to be fundamentals really.
<cemerick>
I seem to remember reading a discussion/proposal re: constructors being available as functions, but can't find it now. Anyone know what I saw?
<Leonidas>
It does teach you a lot on OCamls syntax though
<Leonidas>
cemerick: tl;dr: Caml Light and SML have them, Caml does not, there are 3 ppxes if you want it.
<cemerick>
Leonidas: right, I thought I saw a proposal to extend the language thusly though
<Leonidas>
I think Xavier explained why they were removed in Caml, but I forgot the explanation because I remember not being very convinced.
<Leonidas>
Maybe it was because Caml has n-argy constructors and currying on constructor functions is weird?
<ggole>
The syntax of OCaml's datatypes does make it look like constructors are tupled
<companion_cube>
juste use inline records everywhere ;)
<Leonidas>
oh, it was Caml Heavy which had it and Caml Light where it was removed
<ggole>
I don't think there's any good technical reason, it would be easy to treat constructors in much the same way as primitives (rewrite a primitive `f` of arity 2 as fun a b -> f a b unless it is fully applied).
<Leonidas>
> remember that Caml Light was really a minimal, stripped-down version of Caml
<cemerick>
"C of int * int is really a constructor with two integer arguments" whoa, didn't expect that
<Leonidas>
Guess whe better rename OCaml to Caml Ultraheavy
<ggole>
It actually stands for Obese Caml already!
<Leonidas>
cemerick: C of (int * int) OTOH is a constructor with 1 argument
<Leonidas>
and the syntax is mostly the same for tuples and variadic constructors but in some cases (matching afair) it makes a difference