badkins has quit [Remote host closed the connection]
struk has joined #ocaml
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
chambart has quit [Ping timeout: 258 seconds]
arj has joined #ocaml
sivoais has joined #ocaml
mcclurmc_ has quit [Ping timeout: 244 seconds]
mcclurmc has joined #ocaml
<struk>
pedantic question...what is preferred convention for repo/project names, in regards to delimiters. foo-bar or foo_bar? I've seen both. I noticed the practice of doing ocaml-foo-bar if foo-bar already exists in a different language, which is nice.
arj has quit [Ping timeout: 240 seconds]
<whitequark>
there is none
<Drup>
there is no convention, everyone is doing whatever they want x)
<struk>
opam/ocamlfind doesn't really care right?
<Drup>
oasis care and is very annoying about it
sivoais_ has joined #ocaml
<Drup>
struk: the only real convention is to drop the "ocaml_" in opam, since everyone now we are in ocaml :>
<Drup>
there are one or two exceptions, and they are really annoying.
<struk>
that makes sense, seen that
<struk>
I sort of thought that the rationale for foo_bar is that Foo_bar can be a module, whereas Foo-bar can't be
madroach has quit [Ping timeout: 250 seconds]
madroach has joined #ocaml
cesar_ has joined #ocaml
cesar_ is now known as Guest36265
NoNNaN has quit [Remote host closed the connection]
NoNNaN has joined #ocaml
Guest36265 has quit [Ping timeout: 255 seconds]
travisbrady has joined #ocaml
arj has joined #ocaml
travisbrady has quit [Quit: travisbrady]
arj has quit [Ping timeout: 264 seconds]
yomimono has joined #ocaml
oriba has joined #ocaml
manizzle has quit [Ping timeout: 255 seconds]
hugomg has quit [Ping timeout: 256 seconds]
mcclurmc has quit [Remote host closed the connection]
darkf has joined #ocaml
oriba has quit [Quit: oriba]
oriba has joined #ocaml
arj has joined #ocaml
arj has quit [Ping timeout: 244 seconds]
struk has quit [Ping timeout: 258 seconds]
marcux has joined #ocaml
oriba has quit [Quit: oriba]
struk has joined #ocaml
samuel02 has quit [Ping timeout: 245 seconds]
jwatzman|work has quit [Quit: jwatzman|work]
sivoais_ has quit [Quit: leaving]
arj has joined #ocaml
waneck has quit [Read error: No route to host]
marcux has quit [Quit: marcux]
arj has quit [Ping timeout: 265 seconds]
travisbrady has joined #ocaml
girrig has quit [*.net *.split]
Snark has quit [*.net *.split]
asmanur has quit [*.net *.split]
segmond has quit [*.net *.split]
tristero has quit [*.net *.split]
Reventlov has quit [*.net *.split]
acieroid has quit [*.net *.split]
englishm has quit [*.net *.split]
Khady has quit [*.net *.split]
engil has quit [*.net *.split]
teiresias has quit [*.net *.split]
Intensity has quit [*.net *.split]
martintrojer has quit [*.net *.split]
MrScout has quit [*.net *.split]
jbalnit has quit [*.net *.split]
struktured_ has quit [*.net *.split]
claudiuc has quit [*.net *.split]
mawuli has quit [*.net *.split]
zapu has quit [*.net *.split]
\q has quit [*.net *.split]
mearnsh has quit [*.net *.split]
nox has quit [*.net *.split]
dch has quit [*.net *.split]
vincom2 has quit [*.net *.split]
hcarty has quit [*.net *.split]
_habnabit has quit [*.net *.split]
seliopou has quit [*.net *.split]
yomimono has quit [*.net *.split]
pyon has quit [*.net *.split]
btrace has quit [*.net *.split]
AlexRussia has quit [*.net *.split]
iZsh has quit [*.net *.split]
j0sh has quit [*.net *.split]
bernardofpc has quit [*.net *.split]
arj has joined #ocaml
travisbrady has quit [Quit: travisbrady]
srcerer has quit [Ping timeout: 272 seconds]
MrScout has joined #ocaml
martintrojer has joined #ocaml
arj has quit [Ping timeout: 255 seconds]
MrScout has quit [Ping timeout: 264 seconds]
travisbrady has joined #ocaml
ygrek has joined #ocaml
natrium1970 has joined #ocaml
<natrium1970>
I have functions that take records as parameters, but I want to be able to refer to the fields using specific names because it’s simpler and because my variables will match variable names used in published formulas. To be specific: http://pastebin.com/nMTJt8yQ
<Drup>
let { num = a ; denom = b } = r1 in let { num = c ; denom = d } = r2 in ...
<Drup>
or shorten the name of your fields
<natrium1970>
Drup: The formulas in some of my references are written in terms of a, b, c, d, so it’s kind of convient.
<natrium1970>
I noticed that f1 and f3 produce nearly identical code, but f2 produces a huge amount of code.
<Drup>
I would tend to say that a b c d is not really nice, but ... :)
<Drup>
let f2 { num = a ; denom = b } { num = c ; denom = d } = a*d + b*c
<Drup>
let f*
<Drup>
this is probably the shortest
<Drup>
(with rebinding, I mean)
<natrium1970>
Do the semantics of Ocaml require the huge amount of code that my “f2” generates, or is that just something the compiler doens’t optimize for?
<Drup>
do you mean, the assembly code or ... ?
eridu has joined #ocaml
pyon has joined #ocaml
cesar_ has joined #ocaml
travisbrady has quit [Quit: travisbrady]
<eridu>
Unhammer: hey, did you ever figure out how to link sedlex and menhir?
cesar_ is now known as Guest51705
<natrium1970>
Would it be possible for the compiler to produce the same code for my “f2” as it does for “f1”, since it seems to be a simple renaming in this particular case.
<Drup>
eridu: I linked some code a bit later
<natrium1970>
Drup: Interesting that you last suggest produces identical asm code to my first f1. Thank you.
arj has joined #ocaml
<Drup>
I'm surprised the 3 versions are not exactly the same :O
<eridu>
ironically, I am the maintainer of a project Unhammer linked to in their search for menhir+sedlex, but development has been stymied by my continued nonunderstanding of linking menhir+sedlex
<natrium1970>
I put f1 and f3 first since they’re short and easy to compare. Even though they are similar in length and operations, they are not identical. And f2 is so bizarre.
<natrium1970>
Okay, but I always hate it when grumpy devels put “not a bug” on my bug reports, so I’m reluctant sometimes.
c74d has quit [Remote host closed the connection]
<Drup>
well, OCaml is not know for heavy optimisation, but it's known for predictable performances and f2 and f3 should *really* be the same.
<natrium1970>
OCaml seems awfully competitive with languages that are known for high performance.
<Drup>
(well, maybe a compiler expert will tell you that there is a good reason for f2 not being optimized, but it seems weird)
travisbrady has joined #ocaml
<natrium1970>
I don’t know who is who around here at this point. I would like to learn more about why it’s happening.
c74d has joined #ocaml
<natrium1970>
The /topic lists 4.02.0 as the latest, by the way.
girrig has quit [*.net *.split]
Snark has quit [*.net *.split]
asmanur has quit [*.net *.split]
segmond has quit [*.net *.split]
tristero has quit [*.net *.split]
Reventlov has quit [*.net *.split]
acieroid has quit [*.net *.split]
englishm has quit [*.net *.split]
Khady has quit [*.net *.split]
engil has quit [*.net *.split]
teiresias has quit [*.net *.split]
Intensity has quit [*.net *.split]
<Drup>
ping adrien ^
yomimono has joined #ocaml
btrace has joined #ocaml
AlexRussia has joined #ocaml
bernardofpc has joined #ocaml
iZsh has joined #ocaml
j0sh has joined #ocaml
yomimono has quit [Ping timeout: 255 seconds]
eridu has quit [Ping timeout: 250 seconds]
lordkryss has quit [Quit: Connection closed for inactivity]
<Drup>
natrium1970: the compiler team doesn't hang around here all that much. :)
Simn has quit [Quit: Leaving]
girrig has joined #ocaml
Reventlov has joined #ocaml
Intensity has joined #ocaml
englishm has joined #ocaml
asmanur has joined #ocaml
teiresias has joined #ocaml
Snark has joined #ocaml
engil has joined #ocaml
Khady has joined #ocaml
segmond has joined #ocaml
tristero has joined #ocaml
acieroid has joined #ocaml
BitPuffin has quit [Ping timeout: 244 seconds]
<Drup>
hum, the lambda code is not the same, apparently f2 allocates a tuple and then access the 4 parts of the tuple, while f3 is doing the equivalent of "let a = r1.num in .... "
<natrium1970>
What do you mean by lambda code, in this context?
<Drup>
it's one of the internal representation of the compiler
<Drup>
it's basically where the "high level" optimizations happen (the few of them we have :D).
<Drup>
you can see it with the argument -dlambda
pyon has quit [Ping timeout: 272 seconds]
arj has joined #ocaml
<natrium1970>
The parameter naming does not look very pretty with “{ num = a ; denom = b } { num = c ; denom = d }”, no offense.
<Drup>
no, it's not
<natrium1970>
The interesting thing to me was that the version using “match” produced decent code.
pyon has joined #ocaml
<Drup>
tbh, except if your function is ridiculously small, you don't care
arj has quit [Ping timeout: 264 seconds]
<Drup>
and if your funtion is ridiculously small, you can use the qualified names as in f1.
<natrium1970>
The functions won’t be huge, but they won’t be trivial.
<natrium1970>
The “real” math code is a/b * c/d = p/q, where p = a/gcd(a,d) * c/gcd(b,c), and q = b/gcd(b,c) * d/gcd(a,d).
<natrium1970>
So, I’m having think, “now b, that’s the denominator of the first one, so it’s r1.denom, etc.”
<natrium1970>
But I wanted to find out more for future reference, too.
<Drup>
for future reference, just use zarith anyway x)
<natrium1970>
I can’t depend on Big_int.
<Drup>
zarith≠Big_int
<Drup>
(and why ?)
<natrium1970>
Okay, it’s not Big_int that’s the problem. It’s the dependence on GMP. I want to be able to use js_of_ocaml.
<Drup>
oh, right
<Drup>
you can use big_int/num then
<natrium1970>
I thought the code for Big_int and Num for js_of_ocaml was just stubs and didn’t actually work yet.
<Drup>
afaik, it works.
thomasga has joined #ocaml
<Drup>
(we wouldn't have anything special for it if it was just stubs, those are autogenerated when js_of_ocaml can't find the external anyway)
arj has joined #ocaml
thomasga has quit [Client Quit]
rfk has joined #ocaml
<natrium1970>
If Num works, that would be fine, I guess.
<natrium1970>
Although I was enjoying working on this.
<Drup>
Do a zarith.jsoo instead :]
<natrium1970>
I hate JS. I don’t even want to look at it. I just want to use it as an intermediate language.
<Drup>
I can't argue with that =')
arj has quit [Ping timeout: 272 seconds]
<Drup>
(maybe we could compile gmp to js with emscripten and use the result as stubs for zarith :D)
<natrium1970>
I saw that someone wanted a pure OCaml Big_int.
travisbrady has quit [Quit: travisbrady]
samuel02 has joined #ocaml
samuel02 has quit [Ping timeout: 272 seconds]
mcclurmc has joined #ocaml
ca__ has joined #ocaml
<ca__>
xcc
ca__ has quit [Client Quit]
struk has quit [Ping timeout: 256 seconds]
<natrium1970>
optcomp seems to be incompatible with ocaml 4.02.1
<whitequark>
don't use system compiler if you want camlp4
travisbrady has quit [Quit: travisbrady]
ivan\ has joined #ocaml
yomimono has joined #ocaml
<natrium1970>
I was just wanting to install the “deriving” package, which depends on optcomp. I can do without the deriving package, I guess.
<whitequark>
use ppx_deriving :]
<natrium1970>
I was just following the directions on the js_of_ocaml page. This camlp4 and ppx is so confusing.
<whitequark>
oh, js_of_ocaml.
<vanila>
how is js_of_ocaml done?
badon has quit [Ping timeout: 250 seconds]
arj has joined #ocaml
<natrium1970>
I can print “hello” and print a number with it. Yea!
<natrium1970>
I didn’t intent to imply that that’s the only thing it’s capable of. I just meant that I don’t know much about JS, and I was able to get it to do something, at least.
badkins has quit [Remote host closed the connection]
<natrium1970>
I think I would have designed Ratio differently than what I’m seeing. And there isn’t enough documentation in the .ml or .mli files to explain certain things.
travisbrady has quit [Client Quit]
q66 has quit [Quit: Leaving]
arj has joined #ocaml
<natrium1970>
In case anyone wants to know (and goes searching through the channel logs), js_of_ocaml seems to be able to deal with rational numbers using Num, Ratio, and Big_int.
<whitequark>
yes
<natrium1970>
It was a learning exercise. I still don’t like the API for Num and Ratio, though.
arj has quit [Ping timeout: 272 seconds]
<whitequark>
well, it's horrible
<natrium1970>
Pesonally, I don’t need to use Big_int for numerator and denominator, and even with a simple program, I have conversions between int and Big_int all over the place. It would be nice if maybe there were a way to parameterize the underlying numeric type.
<ggole>
Use Num.num?
arj has joined #ocaml
arj has quit [Ping timeout: 265 seconds]
darkf_ has joined #ocaml
darkf has quit [Ping timeout: 244 seconds]
darkf_ has quit [Ping timeout: 240 seconds]
darkf has joined #ocaml
mcclurmc has quit [Remote host closed the connection]
badon has joined #ocaml
arj has joined #ocaml
darkf_ has joined #ocaml
darkf has quit [Ping timeout: 258 seconds]
arj has quit [Ping timeout: 240 seconds]
arj has joined #ocaml
badon has quit [Remote host closed the connection]
arj has quit [Ping timeout: 240 seconds]
darkf_ is now known as darkf
badon has joined #ocaml
natrium1970 has quit [Quit: natrium1970]
arj has joined #ocaml
arj has quit [Ping timeout: 264 seconds]
shinnya has quit [Ping timeout: 255 seconds]
slash^ has joined #ocaml
emery has quit [Remote host closed the connection]
samrat has quit [Quit: Computer has gone to sleep.]
emery has joined #ocaml
Guest652 has quit [Read error: Connection reset by peer]
cesar_ has joined #ocaml
cesar_ is now known as Guest16852
yomimono has quit [Ping timeout: 245 seconds]
arj has joined #ocaml
darkf_ has joined #ocaml
darkf has quit [Ping timeout: 265 seconds]
arj has quit [Ping timeout: 256 seconds]
<struk>
well, I upgraded lwt-async to latest lwt, I think, but not sure if I will even end up using it. was an interesting exercise at least.
arj has joined #ocaml
darkf has joined #ocaml
darkf_ has quit [Ping timeout: 265 seconds]
arj has quit [Ping timeout: 265 seconds]
vanila has quit [Quit: Leaving]
samuel02 has joined #ocaml
samuel02 has quit [Ping timeout: 264 seconds]
shinnya has joined #ocaml
darkf_ has joined #ocaml
arj has joined #ocaml
darkf has quit [Ping timeout: 272 seconds]
govg has joined #ocaml
arj has quit [Ping timeout: 255 seconds]
tane has joined #ocaml
troydm has quit [Ping timeout: 250 seconds]
samrat has joined #ocaml
arj has joined #ocaml
ygrek has quit [Ping timeout: 264 seconds]
arj has quit [Ping timeout: 258 seconds]
manizzle has quit [Ping timeout: 256 seconds]
darkf has joined #ocaml
darkf_ has quit [Ping timeout: 265 seconds]
manizzle has joined #ocaml
samrat has quit [Quit: Computer has gone to sleep.]
arj has joined #ocaml
arj has quit [Ping timeout: 264 seconds]
ebzzry_ has quit [Remote host closed the connection]
arj has joined #ocaml
mcclurmc has joined #ocaml
arj has quit [Ping timeout: 272 seconds]
mcclurmc has quit [Ping timeout: 240 seconds]
arj has joined #ocaml
ebzzry has joined #ocaml
arj has quit [Ping timeout: 272 seconds]
zwer has quit [Remote host closed the connection]
nojb has joined #ocaml
arj has joined #ocaml
samuel02 has joined #ocaml
arj has quit [Ping timeout: 245 seconds]
samuel02 has quit [Ping timeout: 240 seconds]
nojb has quit [Quit: nojb]
AlexRussia has quit [Ping timeout: 255 seconds]
govg has quit [Quit: leaving]
darkf_ has joined #ocaml
darkf has quit [Ping timeout: 258 seconds]
arj has joined #ocaml
darkf has joined #ocaml
typedlambda has quit [Ping timeout: 250 seconds]
darkf_ has quit [Ping timeout: 265 seconds]
Hannibal_Smith has joined #ocaml
arj has quit [Ping timeout: 256 seconds]
Simn has joined #ocaml
samrat has joined #ocaml
typedlambda has joined #ocaml
chambart has joined #ocaml
samuel02 has joined #ocaml
arj has joined #ocaml
<companion_cube>
so, apparently no good way to make yojson and lwt interact properly :(
typedlambda has quit [Ping timeout: 250 seconds]
arj has quit [Ping timeout: 255 seconds]
pierpa has quit [Ping timeout: 265 seconds]
typedlambda has joined #ocaml
pierpa` has quit [Ping timeout: 265 seconds]
chambart has quit [Ping timeout: 255 seconds]
bezirg has joined #ocaml
cthuluh has quit [Ping timeout: 245 seconds]
cthuluh has joined #ocaml
tane has quit [Quit: Verlassend]
arj has joined #ocaml
arj has quit [Ping timeout: 255 seconds]
govg_ has joined #ocaml
claudiuc has quit [Ping timeout: 258 seconds]
arj has joined #ocaml
arj has quit [Ping timeout: 255 seconds]
chambart has joined #ocaml
psy_ has quit [Quit: Leaving]
typedlambda has quit [Ping timeout: 250 seconds]
darkf_ has joined #ocaml
darkf has quit [Ping timeout: 265 seconds]
darkf_ is now known as darkf
chambart has quit [Ping timeout: 265 seconds]
typedlambda has joined #ocaml
typedlambda has quit [Ping timeout: 250 seconds]
arj has joined #ocaml
typedlambda_ has joined #ocaml
typedlambda_ is now known as typedlambda
samrat has quit [Quit: Computer has gone to sleep.]
arj has quit [Ping timeout: 264 seconds]
<adrien>
argh
<adrien>
qmake is such a piece of crap, down to its design
koderok has joined #ocaml
koderok has quit [Remote host closed the connection]
arj has joined #ocaml
samrat has joined #ocaml
arj has quit [Ping timeout: 255 seconds]
thomasga has joined #ocaml
struk has quit [*.net *.split]
jbalnit has quit [*.net *.split]
struktured_ has quit [*.net *.split]
mawuli has quit [*.net *.split]
zapu has quit [*.net *.split]
\q has quit [*.net *.split]
mearnsh has quit [*.net *.split]
nox has quit [*.net *.split]
dch has quit [*.net *.split]
vincom2 has quit [*.net *.split]
hcarty has quit [*.net *.split]
_habnabit has quit [*.net *.split]
seliopou has quit [*.net *.split]
michipili has joined #ocaml
struk has joined #ocaml
jbalnit has joined #ocaml
struktured_ has joined #ocaml
mawuli has joined #ocaml
zapu has joined #ocaml
\q has joined #ocaml
mearnsh has joined #ocaml
nox has joined #ocaml
dch has joined #ocaml
vincom2 has joined #ocaml
hcarty has joined #ocaml
_habnabit has joined #ocaml
seliopou has joined #ocaml
c74d has quit [Remote host closed the connection]
girrig has quit [*.net *.split]
Snark has quit [*.net *.split]
asmanur has quit [*.net *.split]
segmond has quit [*.net *.split]
tristero has quit [*.net *.split]
Reventlov has quit [*.net *.split]
acieroid has quit [*.net *.split]
englishm has quit [*.net *.split]
Khady has quit [*.net *.split]
engil has quit [*.net *.split]
teiresias has quit [*.net *.split]
Intensity has quit [*.net *.split]
girrig has joined #ocaml
Snark has joined #ocaml
asmanur has joined #ocaml
segmond has joined #ocaml
tristero has joined #ocaml
Reventlov has joined #ocaml
acieroid has joined #ocaml
englishm has joined #ocaml
engil has joined #ocaml
Khady has joined #ocaml
teiresias has joined #ocaml
Intensity has joined #ocaml
c74d has joined #ocaml
typedlambda has quit [Ping timeout: 250 seconds]
thomasga has quit [Quit: Leaving.]
typedlambda has joined #ocaml
marcux has joined #ocaml
arj has joined #ocaml
c74d has quit [Remote host closed the connection]
ygrek has joined #ocaml
bezirg has quit [Ping timeout: 272 seconds]
c74d has joined #ocaml
rand000 has joined #ocaml
BitPuffin has joined #ocaml
arj has quit [Ping timeout: 272 seconds]
c74d has quit [Remote host closed the connection]
samrat has quit [Quit: Computer has gone to sleep.]
c74d has joined #ocaml
bezirg has joined #ocaml
chambart has joined #ocaml
c74d has quit [Remote host closed the connection]
c74d has joined #ocaml
arj has joined #ocaml
arj has quit [Ping timeout: 250 seconds]
arj has joined #ocaml
samuel02 has quit [Remote host closed the connection]
arj has quit [Ping timeout: 264 seconds]
chambart has quit [Ping timeout: 255 seconds]
arj has joined #ocaml
rand000 has quit [Ping timeout: 250 seconds]
choeger_tu has joined #ocaml
arj has quit [Ping timeout: 255 seconds]
oscar_toro has joined #ocaml
rossberg has quit [Ping timeout: 272 seconds]
<marvin-hh>
Just out of interest, but is anyone using OCaml here for company purposes instead of a dynamically typed language to make sure that certain undesired program behaviour is not possible to begin with?
<marvin-hh>
That is, in a sense to protect against human stupidity and in turn which would allow you to hire *cheaper* developers.
<adrien>
you can still write 1+1 when you meant 1+2
<adrien>
you're not going to save costs on people that way
<marvin-hh>
adrien: yes, but you cannot return void and a Process from the same function.
<adrien>
you'll only get more ingenious issues
<mrvn>
marvin-hh: people who know ocaml cost more
rossberg has joined #ocaml
<adrien>
you could always teach it
<ggole>
The type hackery you need to avoid bugs is tricky enough that you'll need more expensive people to wrangle it, unfortunately.
<ggole>
*nonobvious bugs
<adrien>
where is saves money is on dev speed and the number of bugs
<mrvn>
adrien: at which point they then go and take a better paying job
fraggle_ has quit [Remote host closed the connection]
<adrien>
the job market for ocaml isn't sufficiently developped for that imho
<ggole>
It might save on refactoring time though
<mrvn>
FXI: There recently was an article on /. about how code quality relates to programming language used.
<mrvn>
FYI
Arsenik has joined #ocaml
<marvin-hh>
I write in dynamic programming languages the same as I would do in a static programming language; in fact, it would probably be very easy to translate it to OCaml/Haskell.
<mrvn>
I think you use ocaml when a type error will cost you millions, not so you can hire cheaper labor.
<marvin-hh>
The reason my programs work, is because I think about what I write.
<adrien>
s/millions/thousands/
<adrien>
(i.e. two days)
<adrien>
(of dev time only)
<marvin-hh>
Thinking is a skill which many of our applicants do not have.
<ggole>
It's nice to be able to think hard and write down something (like an accurate variant definition) that will save you time later
<ggole>
I don't think anything will let you skip the think hard step.
<adrien>
not thinking is cross-lanuage unfortunately
<mrvn>
marvin-hh: I'm using python at work and I waste so much time on testing and fixing bugs later that ocaml would all find at compile time it is sad.
samrat has joined #ocaml
<mrvn>
marvin-hh: esspecially when you change code later.
<marvin-hh>
I do wonder what exactly the problem is; our standards, the education system, or the people themselves.
ollehar has joined #ocaml
ollehar has quit [Client Quit]
<mrvn>
marvin-hh: education system? Where do you learn coding?
<marvin-hh>
Or our limited distribution of people we see.
<marvin-hh>
We have seen people from about 15 education institutions some with quite a lot of work experience, some with somewhat less.
samuel02 has joined #ocaml
<marvin-hh>
educational*
<marvin-hh>
Thusfar, we have been unable to hire anyone above the junior level.
<mrvn>
marvin-hh: Do they teach about system programming, maintainability, security, api as a contract?
<marvin-hh>
mrvn: I don't know whether all the candidates have followed those courses, but yes, they should all offer courses in those.
arj has joined #ocaml
<mrvn>
marvin-hh: That's the problem. Those are usualy somewhere in some optional course and people pick one or two if you're lucky.
<marvin-hh>
mrvn: I did all of that, btw.
<marvin-hh>
mrvn: it used to be the case that all of those courses were non-optional.
jbalnit has quit [Remote host closed the connection]
psy has joined #ocaml
arj has quit [Ping timeout: 244 seconds]
<marvin-hh>
mrvn: one thing we see is that people do their courses and then immediately forget about it; they don't connect the dots between the various courses.
jbalnit has joined #ocaml
<marvin-hh>
mrvn: so, all they become are Wikipedia's, without the ability to reason about the connections between the facts.
<mrvn>
ack
<marvin-hh>
And, yet, when there is a lack of technical knowledge when someone is doing something related to technology, the business does suffer.
samrat has quit [Quit: Computer has gone to sleep.]
<mrvn>
I had a course "Conecpts of programming languages" which I found verry helpfull. Gave a nice overview and taste of all the different things out there. What they are, how to use them, why to use them.
<marvin-hh>
Sometimes, they aren't even aware that there was a problem in the first place.
<mrvn>
marvin-hh: They used Java for 3 weeks and they put down they know Java.
fraggle_ has joined #ocaml
<marvin-hh>
mrvn: well, if you know a Turing complete subset of Java, you should be able to program Java.
<marvin-hh>
mrvn: but... in practice it is sort of useful to understand that you don't need to reinvent all wheels.
<marvin-hh>
mrvn: and it's sort of useful to understand the generics in Java.
<mrvn>
marvin-hh: exactly.
<marvin-hh>
mrvn: and... to have done remote debugging of a pile of threads on a running system.
<marvin-hh>
mrvn: and the list goes on forever.
<marvin-hh>
mrvn: having said that, we don't care in which environment people have done similar things for senior roles.
<mrvn>
There are things you can teach quickly and things that take years but are transferable. You have to look for people that have the later.
<marvin-hh>
Perhaps I am just betraying the global economy that I didn't already move to the US to collect $$$ ;)
chambart has joined #ocaml
arj has joined #ocaml
samrat has joined #ocaml
arj has quit [Ping timeout: 264 seconds]
arj has joined #ocaml
arj has quit [Ping timeout: 240 seconds]
q66 has joined #ocaml
michipili has left #ocaml [#ocaml]
samrat has quit [Ping timeout: 245 seconds]
Hannibal_Smith has quit [Quit: Sto andando via]
samrat has joined #ocaml
AlexRussia has joined #ocaml
shinnya has quit [Ping timeout: 240 seconds]
arj has joined #ocaml
oscar_toro has quit [Ping timeout: 255 seconds]
darkf_ has joined #ocaml
darkf has quit [Ping timeout: 264 seconds]
shinnya has joined #ocaml
arj has quit [Ping timeout: 250 seconds]
axiles has joined #ocaml
thomasga has joined #ocaml
darkf_ has quit [Ping timeout: 264 seconds]
arj has joined #ocaml
arj has quit [Ping timeout: 250 seconds]
marcux has quit [Quit: marcux]
marcux has joined #ocaml
choeger_tu has quit [Quit: choeger_tu]
badkins has joined #ocaml
<ggole>
Hmm, doesn't def waste time here any more?
<adrien>
he's probably hiding from the implicits-fanatics crowd
* adrien
looks at companion_cube
samrat has quit [Ping timeout: 272 seconds]
Guuf has joined #ocaml
<Guuf>
Hello people! Mind if I ask a question?
rand000 has joined #ocaml
samrat has joined #ocaml
<Guuf>
So, I have installed containers, https://github.com/c-cube/ocaml-containers, from opam. I have managed to get the ocaml repl to load the containers.cma file, but I can not run, say, open CCMap;; without getting the error message “unbound module: CCMap”.
<ggole>
You probably want to use #require instead of loading the .cma
<ggole>
(I'm not actually sure whether that is your problem though.)
<adrien>
probably .cmi not found
<adrien>
solution: use topfind/#require :)
<Guuf>
Yeah, right, I have used require.
<Guuf>
I added this to ~/.ocamlinit:#use "topfind"
<Guuf>
#require "containers";;
<Guuf>
So when I start ocaml it says:
<Guuf>
<myhomefolder>.opam/4.02.1/lib/containers: added to search path
<Guuf>
#show CCMap;; gives “unknown element” for me.
psy has quit [Ping timeout: 240 seconds]
<ggole>
Hrm.
<ggole>
I dunno.
arj has joined #ocaml
<Guuf>
Okay, thank you for you help then. :)
samrat has quit [Ping timeout: 264 seconds]
<ggole>
Does ocamlfind list show containers?
<ggole>
And are you doing this in a terminal or a program like emacs?
<Guuf>
In a terminal, and ocamlfind list show containers, yes.
<Guuf>
I am trying to reinstall it now.
<adrien>
can you check there's a .cmi next to the .cma?
samrat has joined #ocaml
<Guuf>
Hmm, no, there doesn’t seem to be a containers.cmi.
<Guuf>
Lots of other .cmi though.
<ggole>
There should be a bunch like CCMap.cmi
<Guuf>
There actually isn’t any CCMap.cmi.
travisbrady has joined #ocaml
<Guuf>
Which is quite odd, since there is one for everything else...
<ggole>
Huh, ls ~/.opam/4.02.1/lib/containers/CCMap.cmi shows a file for me
<adrien>
also, can you try to use any other module?
<ggole>
Sounds like you might have found your problem.
<adrien>
like CCNIH (I just made that name up)
<Guuf>
open CCMultiMap;; works
arj has quit [Ping timeout: 255 seconds]
<ggole>
Broken package? Did you opam update and/or opam upgrade?
<Guuf>
Not since before I installed containers.
<ggole>
Might try that, then - or inquire with the opam people.
<ggole>
It sure sounds like a (partly) broken package.
<Guuf>
But it worked for you, so I must have done something wrong.
psy has joined #ocaml
<ggole>
let pack_fake_location ~fake t = with_bag_of_holding t (Fake_location fake)
<ggole>
^ actual merlin code
q66[lap] has quit [Read error: Connection reset by peer]
q66[lap] has joined #ocaml
samrat has quit [Ping timeout: 255 seconds]
claudiuc has joined #ocaml
samrat has joined #ocaml
emery has quit [Remote host closed the connection]
hugomg has joined #ocaml
marcux has quit [Quit: marcux]
emery has joined #ocaml
tane has joined #ocaml
arj has joined #ocaml
samuel02 has quit [Remote host closed the connection]
arj has quit [Ping timeout: 255 seconds]
chambart has quit [Ping timeout: 256 seconds]
rand000 has quit [Ping timeout: 240 seconds]
<flux>
boh? yeah, that's the CS 101 datastructure.
slash^ has quit [Read error: Connection reset by peer]
BitPuffin has quit [Remote host closed the connection]
BitPuffin has joined #ocaml
<ggole>
It's full of Obj.
<ggole>
Somebody had a bit of fun with that.
marcux has joined #ocaml
chambart has joined #ocaml
arj has joined #ocaml
travisbrady has quit [Quit: travisbrady]
yomimono has joined #ocaml
arj has quit [Ping timeout: 256 seconds]
bytbox has joined #ocaml
arj has joined #ocaml
chambart has quit [Ping timeout: 255 seconds]
arj has quit [Ping timeout: 264 seconds]
leowzukw has joined #ocaml
bytbox has quit [Remote host closed the connection]
ebzzry_ has joined #ocaml
ebzzry has quit [Ping timeout: 272 seconds]
arj has joined #ocaml
nojb has joined #ocaml
ebzzry_ has quit [Ping timeout: 264 seconds]
malc_ has joined #ocaml
arj has quit [Ping timeout: 264 seconds]
ebzzry_ has joined #ocaml
ebzzry_ has quit [Ping timeout: 255 seconds]
ebzzry__ has joined #ocaml
struk has quit [Ping timeout: 258 seconds]
samuel02 has joined #ocaml
travisbrady has joined #ocaml
struk has joined #ocaml
arj has joined #ocaml
rand000 has joined #ocaml
marcux has quit [Quit: marcux]
fosap__ has joined #ocaml
arj has quit [Ping timeout: 264 seconds]
<fosap__>
hi. Can sombody spot the syntax error here? http://pastebin.com/ZzifekFP On line 7, at the "," there is a error, but I don't see any.
<nojb>
(x, y)
<nojb>
parenthesis are needed
<fosap__>
Thanks.
yomimono has quit [Ping timeout: 264 seconds]
nojb has quit [Quit: nojb]
kakadu has joined #ocaml
arj has joined #ocaml
travisbrady has quit [Quit: travisbrady]
ollehar has joined #ocaml
arj has quit [Ping timeout: 264 seconds]
ollehar has quit [Ping timeout: 245 seconds]
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
Thooms has joined #ocaml
<struk>
is ppx deriving iter a reasonable approach to using different collections with the same algorithm? is there a more common way? using containers btw
<jao>
/query NickServ
mcclurmc has joined #ocaml
travisbrady has joined #ocaml
travisbrady has quit [Client Quit]
<Drup>
how is ppx_deriving helping you ?
<struk>
Drup: derive iter, use iterable contract to not care what type of module is backing the collection?
lordkryss has joined #ocaml
<Drup>
and if someone else want to use another collection ?
<Drup>
you merely abstracted the collection you use, but didn't make it really parametrized.
badkins has quit [Remote host closed the connection]
<Drup>
parametrization by copy pasting is not parametrisation :]
<Drup>
(even if Go's people seem to be convinced of the contrarary *cough*)
govg_ has quit [Ping timeout: 245 seconds]
<Drup>
if you *really* want parametrization, use a functor.
<struk>
Drup: well I was thinking of making a functor for it where the parameter is the iterable contract. its not really for external users either, just so I can have some shraed code among two implementations of something.
<Drup>
functor is the way. The fact that the functor takes as input a signature that corresponds to ppx_deriving's generated iter functions is more a convenience thing :)
<struk>
Drup: yeah, I meant ppx + functors, basically. sorry
govg has joined #ocaml
<Drup>
no problem :p
<Drup>
the ppx helps you implement the functions, but it's not really essential in the parametrization. Someone could give the functions by hand :p
<struk>
Drup: well aware . I do that often enough just to make merlin stop complaining, then I rip out the definitions after the code compiles.
q66[lap] has quit [Read error: Connection reset by peer]
<fosap__>
Can I create a statical liked binary with ocaml? It does use plenty of c libraries and I'd like it to be easily distributable.
<fosap__>
On Linux
<companion_cube>
I'm also interested
q66[lap] has joined #ocaml
waneck has joined #ocaml
ygrek has quit [Ping timeout: 240 seconds]
arj has quit [Ping timeout: 264 seconds]
samrat has quit [Quit: Computer has gone to sleep.]
ebzzry has quit [Read error: Connection reset by peer]
ebzzry has joined #ocaml
malc_ has quit [Quit: leaving]
<Unhammer>
Drup, what's the better alternative?
<Unhammer>
(the reason I got started with pcre was that it was apt-gettable; I try to be conservative if there's any chance I have to make my boss compile anything =P)
<Drup>
anything else than pcre =')
larhat has joined #ocaml
<Drup>
isn't menhir apt-gettable too ?
q66[lap]_ has joined #ocaml
thomasga has quit [Quit: Leaving.]
arj has joined #ocaml
q66[lap] has quit [Read error: Connection timed out]
struk has quit [Ping timeout: 240 seconds]
larhat has quit [Ping timeout: 240 seconds]
tokenrov1 is now known as tokenrove
arj has quit [Ping timeout: 265 seconds]
leowzukw has quit [Ping timeout: 264 seconds]
<tokenrove>
is there an ocaml regex library that supports a syntax like SRE (Scheme Regular Expressions)? (instead of just posix/pcre strings)
<tokenrove>
drup: not the usual emacs regexps, at least, which are pretty close to posix. SRE is structured rather than being just a string; figured someone would have implemented something like that already since it's a good fit with ml.
<gasche>
tokenrove: ocaml-re ( https://github.com/ocaml/ocaml-re ) exposes a datatype of regexps that you can build programmatically, along with parsers for several regex syntaxes into those
<gasche>
hm
<gasche>
( in fact there is no concrete datatypes, the constructors are combinators )
<tokenrove>
gasche: ah, cool. that's basically what i was looking for.
<tokenrove>
thanks.
struk has joined #ocaml
fosap__ has quit [Ping timeout: 265 seconds]
slash^ has joined #ocaml
arj has joined #ocaml
fosap__ has joined #ocaml
arj has quit [Ping timeout: 264 seconds]
ggole has quit []
samuel02 has quit [Remote host closed the connection]
<Drup>
whitequark: you are really to good, to make copy pastes for him..
vanila has joined #ocaml
<adrien>
Drup: go ask gl, go battle #freenode and get +o yourself
<Drup>
adrien: then don't ask to "write the topic" when you mean "get mod rights" :)
<whitequark>
I like it how adrien still didn't copy-paste the /topic I wrote for him
arj has joined #ocaml
<adrien>
idiots
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
<adrien>
so
<adrien>
it's been more than a month and you feel the urge to harass me into doing it?
<whitequark>
yes?
<whitequark>
it's a matter of principle now.
<adrien>
you think I'm in front of the computer waiting idly on IRC and not doing anything else?
<whitequark>
yes!
<Drup>
adrien: in fact, I pinged you at least two times about it.
<adrien>
next
<adrien>
how long have you been on freenode for?
<adrien>
learn how to use the services!
<adrien>
send that to chanserv: access #ocaml list
arj has quit [Ping timeout: 272 seconds]
<adrien>
and for the record, the channel has a weird mode that cannot be changed because of freenode's stupid policies and prevents ops from +o'ing others
kakadu has quit [Quit: Konversation terminated!]
Arsenik has quit [Remote host closed the connection]
<adrien>
woohooo, freenode is putting back its groups \o/
<vanila>
???
jave has joined #ocaml
<vanila>
Is ocaml bytecode interpreted?
<Drup>
that's kinda the principle of bytecode. ;)
<adrien>
on freenode, channels which name start with a single '#' must be backed by a "group" but #ocaml has existed for longer and doesn't have an associated group; this has lead to various more or less funny situations
<vanila>
interesting
<vanila>
##ocaml has 3 people in it
tobleronegordon has joined #ocaml
<vanila>
what is the purpose of compiling ocaml (to bytecode) if ytou just interpret that?
<adrien>
compilation checks the code and the bytecode output is quite fast
<Drup>
vanila: what is the purpose to compile java to jvm code if you interpret that ?
<mrvn>
and compact
<vanila>
wouldn't it be fsater to interpret an abstract syntax tree, than bytecode?
<Drup>
clearly not
<mrvn>
vanila: what is the purpose to compile python to byte code if you interpret that ?
<mrvn>
does ocaml bytecode do inlining and the other simple optimizations?
<Drup>
bytecode is after lambda, iirc, so, it does some stuff.
<adrien>
it even does optimizations
<vanila>
I'm not an expert on java and python
<adrien>
it gets you some generic optimizations and most importantly, checking and warnings
<cojy>
is the bytecode interpreter written in ocaml or C?
<vanila>
I was learning about difference between compiled and interpreterd languages
<vanila>
but it seems like ocaml is both at once
enitiz has quit [Quit: Leaving]
keen___________7 has joined #ocaml
araujo has joined #ocaml
<adrien>
Drup: I change the topic and you fix the "http://ocaml.org/releases/4.02.html" so that it's with 4.02.1 instead (but don't break the current links)
keen___________6 has quit [Ping timeout: 240 seconds]
<Drup>
well, it's not like it was useful, so why not.
<adrien>
because I now consider ocaml.org to be better and extensive enough to replace caml.inria.fr except for very specific things which will be found by other ways anyway
<adrien>
except for that "4.02"
<vanila>
Ocaml
<vanila>
or OCaml?
<adrien>
and I made room because long topics are bad
<adrien>
"OCaml"
<whitequark>
vanila: second
<Drup>
adrien: and hum, what do you want me to do exactly ?
<adrien>
so, rename page, update links, provide redirection (or symlink) for people who will still hit the old URI
<Drup>
I think we should go the opposite way and have a /latest bug ...
<Drup>
but*
<adrien>
and I'm being so anal about it because either ocaml.org should have one page per major release, either it should have one per release but not a mix of the two and having links such as "4.02.0" -> "4.02" -> "4.02.2" really sucks (and especially you can't easily naviguate)
<Drup>
I don't disagree with that.
<adrien>
/latest should be nothing more than a symlink
<vanila>
what other languages are good than OCaml and SML?
<Drup>
vanila: that's a very vague question.
<adrien>
btw, I have contributions on the website already
<adrien>
and now I'm going to bed because I'm really exhausted: flu, fixing qt, updating and fixing gtk+, using netbeans and clion, ...
<adrien>
(nota bene: netbeans doesn't really run on windows, it half-runs on cygwin)
arj has quit [Ping timeout: 244 seconds]
<whitequark>
there is a thing called Xilinx ISE WebPack
<whitequark>
on Windows, half of it runs on Cygwin
<whitequark>
on Unix, half of it runs on libwine
<vanila>
beautiful harmony
<adrien>
hahaha
<whitequark>
indeed
<cojy>
how do the new open types compare to polymorphic variants? can you 'drop' members from an open type or have scoped copies of it or something to get that effect?
<whitequark>
polymorphic variants are structural, open types are nominal
<cojy>
ok i get that part but what about the rest?
<whitequark>
no, you can't drop members or have scoped copies of it
<whitequark>
only the constructors that are in scope are accessible
<cojy>
do you know of any good way to have an open union of types that can be subtracted from?
<Drup>
I would tend to say objects, but I would need a concrete example of a use case.