lapinou changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | http://www.ocaml.org | OCaml 4.01.0 announce at http://bit.ly/1851A3R | Public logs at http://tunes.org/~nef/logs/ocaml/
lostcuaz has joined #ocaml
IbnFirnas has quit [Ping timeout: 240 seconds]
IbnFirnas has joined #ocaml
divyansr__ has quit [Ping timeout: 245 seconds]
nikki93 has quit [Remote host closed the connection]
divyansr__ has joined #ocaml
malo has quit [Quit: Leaving]
csakatoku has quit [Remote host closed the connection]
jao` has joined #ocaml
jao` has quit [Changing host]
jao` has joined #ocaml
csakatoku has joined #ocaml
malvarez has quit [Ping timeout: 272 seconds]
kyrylo has joined #ocaml
talzeus has joined #ocaml
malvarez has joined #ocaml
nikki93 has joined #ocaml
lostcuaz has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
nikki93 has quit [Remote host closed the connection]
nataren has joined #ocaml
nikki93 has joined #ocaml
nataren has quit [Ping timeout: 245 seconds]
Eyyub has quit [Ping timeout: 252 seconds]
malvarez has quit [Quit: Leaving]
keithflower has joined #ocaml
palomer has joined #ocaml
lostcuaz has joined #ocaml
Myk267 has joined #ocaml
ollehar has quit [Ping timeout: 246 seconds]
zxqdms has joined #ocaml
jao` is now known as jao
arjunguha has joined #ocaml
kyrylo has quit [Ping timeout: 252 seconds]
ollehar has joined #ocaml
zpe_ has quit [Remote host closed the connection]
zpe has joined #ocaml
zpe has quit [Ping timeout: 265 seconds]
RMacy has joined #ocaml
johnelse_away is now known as johnelse
zpe has joined #ocaml
nataren has joined #ocaml
zpe has quit [Ping timeout: 252 seconds]
ollehar has quit [Ping timeout: 246 seconds]
nataren has quit [Ping timeout: 248 seconds]
NoNNaN has quit [Ping timeout: 240 seconds]
ggole has joined #ocaml
NoNNaN has joined #ocaml
ygrek has joined #ocaml
RMacy is now known as RMacy|Away
lostcuaz has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
csakatoku has quit [Remote host closed the connection]
palomer has quit [Ping timeout: 260 seconds]
Gues_____ has joined #ocaml
RMacy|Away has quit []
sw1nn has joined #ocaml
a-pyon-ement has quit [Ping timeout: 245 seconds]
Gues_____ has quit [Quit: Computer has gone to sleep.]
arjunguha has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Gues_____ has joined #ocaml
mmachenry has joined #ocaml
zpe has joined #ocaml
zpe has quit [Ping timeout: 272 seconds]
nataren has joined #ocaml
csakatoku has joined #ocaml
ggole_ has joined #ocaml
mmachenry has quit [Quit: Leaving.]
ggole has quit [Ping timeout: 240 seconds]
ggole_ is now known as ggole
zpe has joined #ocaml
robink_ has joined #ocaml
anta-pyon-ist has joined #ocaml
robink has quit [Ping timeout: 265 seconds]
struktured has joined #ocaml
philtor has quit [Ping timeout: 252 seconds]
sw1nn has quit [Ping timeout: 252 seconds]
axiles has joined #ocaml
hcarty has quit [Ping timeout: 260 seconds]
hcarty has joined #ocaml
hcarty has quit [Ping timeout: 245 seconds]
ygrek has quit [Ping timeout: 260 seconds]
hcarty has joined #ocaml
hcarty has quit [Ping timeout: 248 seconds]
hcarty has joined #ocaml
jao has quit [Ping timeout: 264 seconds]
yacks has joined #ocaml
angerman has joined #ocaml
angerman has quit [Client Quit]
angerman has joined #ocaml
angerman has quit [Client Quit]
angerman has joined #ocaml
angerman has quit [Client Quit]
angerman has joined #ocaml
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
ygrek has joined #ocaml
ulfdoz has joined #ocaml
ulfdoz has quit [Ping timeout: 272 seconds]
<ggole> The pretty printer likes to put a space before : in various type definitions (records, GADTs, etc). Is it poor style to leave it out?
Gues_____ has quit [Quit: Computer has gone to sleep.]
Gues_____ has joined #ocaml
anta-pyon-ist has quit [Quit: Page closed]
struktured has quit [Ping timeout: 260 seconds]
zpe has quit [Read error: Connection reset by peer]
zpe has joined #ocaml
robink_ is now known as robink
nataren has quit [Remote host closed the connection]
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
zpe has quit [Ping timeout: 252 seconds]
<adrien> when to post to /r/programming
Gues_____ has quit [Quit: Computer has gone to sleep.]
michael_lee has joined #ocaml
Gues_____ has joined #ocaml
michael_lee has quit [Max SendQ exceeded]
dant3 has joined #ocaml
michael_lee has joined #ocaml
srcerer_ has joined #ocaml
Simn has joined #ocaml
srcerer has quit [Ping timeout: 252 seconds]
dant3 has quit [Ping timeout: 248 seconds]
dant3 has joined #ocaml
michael_lee has quit [Max SendQ exceeded]
michael_lee has joined #ocaml
ggole_ has joined #ocaml
sagotch has joined #ocaml
ggole has quit [Ping timeout: 264 seconds]
dsheets has quit [Ping timeout: 245 seconds]
zRecursive has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
Kakadu has joined #ocaml
nikki93 has quit [Remote host closed the connection]
sw1nn has joined #ocaml
zpe has joined #ocaml
uggwar_ is now known as uggwar
ggole_ is now known as ggole
zpe has quit [Ping timeout: 260 seconds]
dsheets has joined #ocaml
yacks has quit [Ping timeout: 252 seconds]
ikaros has joined #ocaml
q66 has quit [Quit: Leaving]
ollehar has joined #ocaml
yacks has joined #ocaml
nikki93 has joined #ocaml
nikki93 has quit [Ping timeout: 260 seconds]
mika1 has joined #ocaml
r0b1 has quit [Ping timeout: 272 seconds]
yacks has quit [Ping timeout: 248 seconds]
yacks has joined #ocaml
vpm has quit [Read error: Operation timed out]
vpm has joined #ocaml
dsheets has quit [Ping timeout: 245 seconds]
angerman has quit [Read error: Connection reset by peer]
angerman has joined #ocaml
avsm has joined #ocaml
milosn has quit [Ping timeout: 252 seconds]
milosn has joined #ocaml
angerman has quit [Read error: Connection reset by peer]
angerman has joined #ocaml
sagotch has quit [Ping timeout: 245 seconds]
dsheets has joined #ocaml
thomasga has joined #ocaml
zarul has quit [Ping timeout: 272 seconds]
sagotch has joined #ocaml
avsm has quit [Quit: Leaving.]
rom1504 has quit [Read error: Operation timed out]
rom1504 has joined #ocaml
skchrko has joined #ocaml
ollehar has quit [Ping timeout: 246 seconds]
<Drup> ggole: french vs english typography rules =)
kyrylo has joined #ocaml
<adrien_oww> hehe
<Drup> (french ones are prettier)
<Drup> (but I'm totally biased)
<adrien_oww> you cannot think english ones aren't crazy when you think about how you're supposed to handle punctuation in quotes
<adrien_oww> if you want to quote someone who said "I love chocolate," and then want to put a comma, you are supposed to put it inside the quotation marks!
csakatoku has quit [Remote host closed the connection]
yellowfish has quit [Ping timeout: 260 seconds]
<ggole> Drup: ah, ok
<ggole> adrien_oww: that's considered obsolete by many
<fds> If I see someone punctuating inside quotes like that, it makes me think that they're American.
yellowfish has joined #ocaml
dant3 has quit [Remote host closed the connection]
dant3 has joined #ocaml
_andre has joined #ocaml
talzeus has quit [Remote host closed the connection]
hyperboreean has quit [Ping timeout: 272 seconds]
Gues_____ has quit [Quit: Computer has gone to sleep.]
sagotch has quit [Ping timeout: 245 seconds]
_________ has joined #ocaml
ygrek has quit [Ping timeout: 245 seconds]
thomasga has quit [Quit: Leaving.]
avsm has joined #ocaml
thomasga has joined #ocaml
Thooms has joined #ocaml
thomasga has quit [Quit: Leaving.]
wolfnn has joined #ocaml
angerman has quit [Read error: Connection reset by peer]
The-Mad-Pirate has quit [Read error: Connection reset by peer]
shinnya has joined #ocaml
michael_lee has quit [Remote host closed the connection]
angerman has joined #ocaml
<hcarty> companion_cube: Have you done a performance test on Gen vs BatSeq?
r0b1 has joined #ocaml
<companion_cube> vs BatSeq, I didn't, but I think Drup did
<companion_cube> \o hcarty btw
njcomsec has joined #ocaml
dant3 has quit [Remote host closed the connection]
<hcarty> companion_cube: Hello!
thomasga has joined #ocaml
<hcarty> I'm very happy to see smaller, more focused libraries/modules popping up on opam. While I like Batteries, being able to pick and choose smaller pieces seems more friendly.
<companion_cube> hcarty: I'm still planning to split batteries into smaller, friendlier pieces
<hcarty> And a monolithic wrapper is still possible if the IO piece can be figured out.
<flux> I guess the namespace discussion lead to nowhere
<hcarty> companion_cube: I've been lurking on that conversation. I haven't had any time to spend on it so I haven't wanted to chime in yet.
<hcarty> flux: module aliases in their place IIRC
<flux> we've had module aliases before, or is this something new?
<hcarty> flux: That's a good question that I don't know the answer to :-)
<rks_> flux: what do you mean "we've had module aliases before"?
<flux> ok, so this is something new? I thought my 'module aliases' hcarty meant the something like module Baz = Batteries_foo
<rks_> it's "something new", but it's about that kind of thing yes
<flux> as I haven't read of module aliases from the mailing list, or it was so long time ago I don't remember anymore :)
<companion_cube> I thought module aliases were purely at the optimization level?
<companion_cube> like, to avoid duplicating modules everywhere
<rks_> there is nothing new at the user end indeed
<rks_> and I think it's more about avoiding the duplication of the signatures
<rks_> (than the code in itself, which I don't think is duplicated)
<rks_> oh and, when I said « nothing new at the user end » that was probably wrong, I think I read something about being able to write « module X = Y » in an mli
<rks_> s/mli/signature
<companion_cube> oh
<companion_cube> cool
<rks_> which you couldn't do before, what you had was "module X : module type of Y" which isn't the same thing.
<hcarty> Drup: Do you have a Gen vs BatSeq performance comparison?
<adrien_oww> iirc "module X = Y" made your code inflate
<Drup> hcarty: no, but I can make one easily
_________ has quit [Quit: Computer has gone to sleep.]
<rks_> adrien_oww: ok
<companion_cube> Drup: just throw together all the structures you know :D
<companion_cube> in a big benchmark
<Drup> hcarty: actually ... I did, it's in my email on the batteries-devel ml
krono has joined #ocaml
<Drup> it's not the lastest version of Gen, but I think it didn't change anything ( companion_cube ?)
<companion_cube> Drup: if the type is unit -> 'a option, no
<companion_cube> if you use Gen.persistent be sure to use the last version
<companion_cube> :p
<Drup> I don't
<Drup> hcarty: do you need a copy of the email or are you on the mailing list already ?
<Drup> yes
<hcarty> Drup: Thanks - I am on the list. I must have missed that thread.
<hcarty> Drup: So Sequence is faster than Seq which is faster than Gen according to this benchmark - correct?
<Drup> yes
<hcarty> Thank you
<Drup> however, the difference between Gen and BatSeq is less than 20%, so it's start being very dependent of external factors
kyrylo has quit [Quit: Viva la revolucion!]
<Drup> I'm sure I could inverse the relation with just word alignment by inserting comments :)
<hcarty> Drup: Probably so :-) The implementation difference is somewhat subtle.
<companion_cube> Seq is a bit weird imho, it looks like it's persistent but nothing guarantees it
<Drup> and also, Gen is destructive, BatSeq is not
<Drup> companion_cube: like Sequence
dant3 has joined #ocaml
<companion_cube> hcarty: also, Sequence is faster but intrinsically less powerful
<companion_cube> Drup: indeed
<Drup> hcarty: imho, Gen and BatSeq shouldn't really be compared directly. On the other hand, BatSeq and Sequence are really very close
<Drup> (feature-wise)
<Drup> hcarty: I'm also quite convinced that on "one shot" iterators, Gen would take the lead. But I didn't benchmarked that very properly
<hcarty> I've found Seq to be closer to what I want in general than Enum or Gen. Gen.Restart looks like it acts similar to Seq.
<Drup> just use Sequence in this case
<companion_cube> Drup: not really, you still can't write zip for Sequence
<hcarty> 'In general' in my case doesn't involve IO or other side effects though. Enum has been fine for that use.
<companion_cube> whereas you can with Gen.Restart
<Drup> companion_cube: hum, yeah
hyperboreean has joined #ocaml
<companion_cube> that's why I say that Sequence is less powerful
_________ has joined #ocaml
<companion_cube> Gen has things like merge, tee, sorted_merge...
<hcarty> companion_cube: What does Gen offer over Seq?
<Drup> Gen is destructive
<hcarty> Gen.Restart rather
<companion_cube> Gen.Restart is compatible with Gen ;)
<hcarty> I haven't played with Gen yet so I may be missing something obvious
<Drup> if you use only Gen.Restart, I don't think you are going to have great performances
<companion_cube> Drup: depends on what you need, but there's one more closure, indeed
<thomasga> so batteries is splitting up ?
<Drup> companion_cube: what datastructure do you use internally ?
<Drup> thomasga: companion_cube is trying, at least :D
<companion_cube> thomasga: I meant into sub-libraries batteries.foo, batteries.bar
<companion_cube> but that's not done yet (at *all*)
<thomasga> cool
<thomasga> try to split the unix bits out as well :p
<companion_cube> Drup: currently I use Sequence in my prover, mostly for flatMap and append
<companion_cube> thomasga: that's part of the point ;)
<thomasga> nice!
<Drup> (personally, I'm trying to convince them that Enum is bad)
<companion_cube> :D
<companion_cube> and Enum might become optional (but that's probably going to lead to heavy discussions)
<Drup> (without that much success, I might say)
<njcomsec> i think you mean "I'm trying to convince them that that Enum is bad"
<njcomsec> your english is bad
<companion_cube> ?
<hcarty> njcomsec: I don't think so.
<Drup> njcomsec: I agree that my english is terrible, but in this case, I'm not sure I see the issue
<companion_cube> hcarty: any opinion of making IO.output/input object types, so that they don't depend on BatIO anymore?
<adrien_oww> njcomsec: "Enum" is a specific module from Batteries; what Drup said is correct
<Drup> (It wouldn't be capitalized otherwise :D)
<companion_cube> it could be a person
<hcarty> companion_cube: Something along the lines of the object wrappers in BatIO?
<companion_cube> yep, or the channels in ocamlnet
<companion_cube> (which are surprisingly close)
<hcarty> companion_cube: That seems like a reasonable approach. Are there any significant performance concerns?
<Drup> dynamic dispatch is slow, so yes
<Drup> but I think the IO cost is far higher anyway
<companion_cube> I'm not sure the performance are so bad for IO
<companion_cube> exactly
thomasga has quit [Quit: Leaving.]
<hcarty> companion_cube: It seems like the best option
<hcarty> companion_cube: Any other reasonable option seems like it would require a BatIOTypes module which seems excessive and unfriendly to iteroperability with modules outside of Batteries.
<flux> wasn't it so, though, that if you do object calls in a loop, they get cached?
<flux> in other words, situations demanding high performance probably stay pretty fast
<companion_cube> hcarty: indeed. and having compatibility with ocamlnet wouldn't be bad ;)
<companion_cube> I'll think about it
<hcarty> flux: I read something along those lines but I don't have a reference.
<hcarty> companion_cube: Exactly. If it can be made to work easily with Lwt then I'm completely for it :-)
<companion_cube> we need to ask gasche or some other compiler person
<companion_cube> hcarty: sounds harder, you have to abstract over a monad
<companion_cube> :s
<Drup> I don't think that's compiler related, just processor caching
ygrek has joined #ocaml
<adrien_oww> method calls are cached
<adrien_oww> but that doesn't make them free
<companion_cube> for IO, the most commonly called methods would be write:string -> int -> int -> int and read:string -> int -> int -> int
<companion_cube> so...
<companion_cube> (interesting symmetry, actually)
avsm has quit [Quit: Leaving.]
<adrien_oww> it's memory offsets and lengths all the way down
shinnya has quit [Ping timeout: 264 seconds]
dant3 has quit [Remote host closed the connection]
yellowfish has quit [Ping timeout: 264 seconds]
_________ has quit [Quit: Computer has gone to sleep.]
<companion_cube> adrien_oww: yes, so you don't necessarily have many method calls
<hcarty> companion_cube: A nice first step toward splitting Batteries may be creating stand-alone versions of the problematic modules (IO and Enum or whatever replaces it)
<flux> so what will be the module names after this renaming?
<flux> Batteries_Module?
<hcarty> companion_cube: That gives something to test against, both from an interface and a performance perspective
<companion_cube> hcarty: hmmm, interesting
<Drup> flux: why do you want to rename ?
<Drup> BatThingy is nice
<flux> drup, well they cannot be Batteries.* all, can they?
<companion_cube> at least compiling them separately...
dant3 has joined #ocaml
<flux> 'open Batteries' is nice as well :)
<companion_cube> flux: open Batteries;; open BatteriesIO;;
<hcarty> flux: I think the intent is to still provide the ability to "open Batteries"
<Drup> I don't like "open Batteries" and I never used it
<flux> I used to use Bat*-modules, but then I just let it go :)
<companion_cube> or maybe open BatteriesAll;; if you want the full package
<hcarty> flux: But if you don't want all of Batteries you'll be able to more efficiently grab smaller pieces
<flux> the most sensible place for such would be libraries
<flux> otherwise, well, I don't think there's really benefit
<hcarty> companion_cube: "open Batteries" seems like a good way to spell "open BatteriesAll"
<companion_cube> hcarty: maybe. Pervasives is also a tough topic, because it depends on many things.
<hcarty> companion_cube: If you're already pulling in all of Batteries, what does that matter?
<hcarty> If you're trying to pull in a subset then being more explicit is probably a good thing
<companion_cube> hcarty: well the point is, you shouldn't link against all batteries
<companion_cube> unless you want it all, indeed
<companion_cube> I keep your idea of first making IO/Enum separate
<companion_cube> I'm currently (well, on my free time) trying to split in several parts already, but that's tough
<hcarty> companion_cube: I've tried to do the same in my free time. It's too much for a free time project I think :-) Starting with a core module should be easier though as it requires tracking fewer moving parts.
<companion_cube> you mean making things separate one by one?
dant3 has quit [Remote host closed the connection]
<hcarty> companion_cube: Yes. In particular starting with IO since it is one of the major trouble spots when trying to split Batteries effectively.
dant3 has joined #ocaml
<hcarty> companion_cube: Splitting out the modules one at a time also allows users to take advantage of the work as its done rather than requiring a grand 3.0.0 release before anyone can try things out and comment.
<companion_cube> sounds more realistic, indeed.
dant3 has quit [Ping timeout: 240 seconds]
dant3 has joined #ocaml
dant3_ has joined #ocaml
dant3 has quit [Ping timeout: 260 seconds]
thomasga has joined #ocaml
lostcuaz has joined #ocaml
avsm has joined #ocaml
wolfnn has quit [Read error: Operation timed out]
lostcuaz has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
zarul has joined #ocaml
darkf has quit [Quit: Leaving]
bholst has quit [Quit: No Ping reply in 180 seconds.]
bholst has joined #ocaml
saml has joined #ocaml
dant3_ has quit [Remote host closed the connection]
avsm has quit [Quit: Leaving.]
dant3_ has joined #ocaml
avsm has joined #ocaml
mmachenry has joined #ocaml
S11001001 has joined #ocaml
S11001001 has quit [Changing host]
S11001001 has joined #ocaml
nlucaroni has joined #ocaml
adrien_oww has quit [Ping timeout: 248 seconds]
arj has joined #ocaml
adrien_oww has joined #ocaml
rand000 has joined #ocaml
adrien_o1w has joined #ocaml
nataren has joined #ocaml
lostcuaz has joined #ocaml
lostcuaz has quit [Read error: Connection reset by peer]
csakatoku has joined #ocaml
adrien_oww has quit [Ping timeout: 240 seconds]
avsm has quit [Quit: Leaving.]
lostcuaz has joined #ocaml
wolfnn has joined #ocaml
arj has quit [Quit: Leaving.]
nataren has quit [Remote host closed the connection]
adrien_o1w is now known as adrien_oww
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
csakatoku has quit [Remote host closed the connection]
njcomsec has quit [Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/]
michael_lee has joined #ocaml
michael_lee has quit [Max SendQ exceeded]
thomasga has quit [Quit: Leaving.]
avsm has joined #ocaml
avsm has quit [Client Quit]
avsm has joined #ocaml
avsm has quit [Client Quit]
mika1 has quit [Quit: Leaving.]
ski has quit [Quit: Lost terminal]
rz has quit [Quit: Ex-Chat]
dant3_ has quit [Remote host closed the connection]
nataren has joined #ocaml
dant3 has joined #ocaml
avsm has joined #ocaml
dant3 has quit [Ping timeout: 252 seconds]
sw1nn` has joined #ocaml
sw1nn` is now known as Guest80997
sw1nn has quit [Ping timeout: 245 seconds]
Guest80997 is now known as sw1nn_
sw1nn_ is now known as sw1nn
sw1nn has quit [Remote host closed the connection]
tianon has quit [Ping timeout: 248 seconds]
tianon has joined #ocaml
Kakadu has quit [Ping timeout: 245 seconds]
aurynj has joined #ocaml
palomer has joined #ocaml
thomasga has joined #ocaml
mmachenry has quit [Quit: Leaving.]
skchrko has quit [Ping timeout: 260 seconds]
arj has joined #ocaml
mmachenry has joined #ocaml
mort___ has joined #ocaml
nataren has quit [Remote host closed the connection]
mort___ has quit [Remote host closed the connection]
mort___ has joined #ocaml
sw1nn has joined #ocaml
krono has quit [Ping timeout: 252 seconds]
yellowfish has joined #ocaml
watermind has joined #ocaml
dant3 has joined #ocaml
mrhmouse has joined #ocaml
ikaros has quit [Quit: Ex-Chat]
srcerer_ is now known as srcerer
ygrek has quit [Ping timeout: 240 seconds]
avsm has quit [Quit: Leaving.]
Kakadu has joined #ocaml
avsm has joined #ocaml
avsm has quit [Ping timeout: 272 seconds]
mmachenry has quit [Quit: Leaving.]
dsheets_ has joined #ocaml
dsheets has quit [Ping timeout: 264 seconds]
yacks has quit [Quit: Leaving]
Anarchos has joined #ocaml
ollehar has joined #ocaml
thomasga has quit [Ping timeout: 245 seconds]
thomasga has joined #ocaml
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
mrhmouse has left #ocaml []
mort___ has quit [Ping timeout: 260 seconds]
thomasga has quit [Quit: Leaving.]
zpe has joined #ocaml
arj has quit [Quit: Leaving.]
mmachenry has joined #ocaml
Eyyub has joined #ocaml
Myk267 has quit [Quit: Myk267]
thomasga has joined #ocaml
thomasga has quit [Client Quit]
thomasga has joined #ocaml
rand000 has quit [Ping timeout: 264 seconds]
ollehar has quit [Quit: ollehar]
thomasga has quit [Client Quit]
thomasga has joined #ocaml
sw1nn has quit [Ping timeout: 252 seconds]
mathieui has joined #ocaml
rand000 has joined #ocaml
zxqdms has quit [Quit: leaving]
thomasga has quit [Quit: Leaving.]
mathieui has left #ocaml []
q66 has joined #ocaml
Arsenik has joined #ocaml
q66 has quit [Remote host closed the connection]
devn has joined #ocaml
<devn> Silent name conflict resolution: Is this still a thing in OCaml?
<adrien> what do you mean?
<devn> No warning when opening two modules which contain a definition of x.
<adrien> ah, "shadowing"
<devn> yes.
<devn> is there still no warning or option to warn?
<adrien> the second definition hides the first one
<adrien> I think there's one now but I can't tell if it's in 4.01 (released) or only in SVN
<smondet> devn: a *lot* of people use that as a feature
<devn> adrien: sure, last one wins, but it's a bummer there's no warning. i figured maybe that was something that was fixed.
<devn> smondet: wait, what is the feature?
<adrien> there's nothing to fix, it's a feature
<adrien> mostly
<devn> oof
<adrien> let x = foo bar in
<adrien> let x = baz in
<adrien> ...
<smondet> for example Core and Batteries, there "shadow" the standard library
<adrien> but as I said, maybe something has change not very long ago but I can't tell for sure
<nlucaroni> you would get an unused varibale warning for something like that adrien.
<devn> I guess I just expect the best practice to be that people namespace qualify symbols to avoid /accidentally/ shadowing
<adrien> nlucaroni: oh, I meant "baz x" instead of only "baz" :)
<devn> is that not true?
<adrien> devn: it's not a common concern
<adrien> the previous definition is still accessible through its full path
<devn> so instead of using xyz(1,2,3). I'd use Mine.xyz(1,2,3)
<nlucaroni> I thought there were warnings for shadowing
<smondet> or if you define a module for some math object and you define '*', '+', etc then you can My_ring.(some + expression * in_the_ring)
<devn> adrien: yeah, i guess im just coming out against namespace polution as a general practices. nlucaroni i was reading there weren't
<adrien> devn: yes, if there's a shadowing, yes
<adrien> it's also a reason "open" should not be abused
<devn> smondet: yeah i have no issue with any of that. shadowing is dandy.
<devn> i just want a warning
<nlucaroni> 44 Open statement shadows an already defined identifier.
<devn> nlucaroni: what version are you on?
<nlucaroni> 4.01.0
<adrien> - PR#5980: warning on open statements which shadow an existing identifier (if it is actually used in the scope of the open); new open! syntax to silence it locally (Alain Frisch, thanks to a report of Daniel Bünzli)
<devn> i was reading an article that is probably outdated
<adrien> in 4.01.0
<devn> i hesitate to post this in here because i'm seriously not trolling
q66 has joined #ocaml
<devn> but someone passed this to me
<palomer> don't worry, we don't mind trolls
<devn> now, if you finish reading it you'll realize he's a lisp weenie. I'm something of a lisp weenie myself. I think many of his arguments are legitimate, but he is referring to 3.0 in some cases
<devn> I have a feeling a lot of this has been taken care of, but I would love to know which parts of it are true
<devn> for instance, the warning for shadowed vars when using open
thomasga has joined #ocaml
<nlucaroni> updated last week! that guy didn't update his compiler though :)
<nlucaroni> err last year*
<devn> So, like: silent integer overflow, module immutability, polymorphism run-time type errors
<palomer> one of his arguments is that ocaml doesn't have a built in matrix type
<palomer> I don't know very many languages that do
<palomer> silent integer overflow is a problem, but it's also a problem in many languages
<adrien> devn: this page is well-know, no worries
<adrien> it's also, 10yo now?
<palomer> you should probably use a more sophisticated number type
<adrien> oh and its authors does ocaml nowadays, or did last year
<devn> palomer: yeah i think that's nonsense
<nlucaroni> the page has an updated time of feb 2013. but it looks like a lot of the content is the same.
<devn> a built-in matrix type is something id rather grab as a library
<palomer> module immutability: define a new module, open the old module, and redefine whatever functions you want
<devn> palomer: yeah, but i think his argument is that it doesn't have something like haskell's typeclasses, or clojure's deftype/defprotocol
<palomer> "cannot compare hash table" isn't much of a problem
<devn> where you can extend behavior to a type without modifying the original
<palomer> devn: if you want that, use classes
<palomer> there was actually some discussion on combining modules and classes
<devn> palomer: i think they're prone to the same issue
<devn> it's the expression problem
<palomer> xavier even had a grad student working on it I think
<devn> palomer: interesting
<palomer> with a class you can redefine whatever virtual functions you need
<devn> i'd like to check that out
<palomer> devn, don't think it went anywhere
<palomer> he even mentioned it at the ocaml meetup in paris
<devn> ah, yeah, it seems like there are other options which are well understood and could be stolen from other languages like Haskell, Clojure, etc.
<palomer> "no macros": see camlp4 or the new binary thing from ocamlpro
<adrien> part of this page is "ocaml is not lisp"
<devn> yeah, macros wouldn't be a big thing for me in ocaml
<devn> adrien: yeah i find that distasteful too
<adrien> and some things really need a more serious update
<devn> in lisp i want macros. i expect them.
<devn> in ocaml, meh
<devn> i mean, they're nice to have. i like them.
<devn> but they're not a deal breaker
<palomer> "generalized references" <-- meh, if your code has too many references you probably shouldn't be using ocaml
zxqdms has joined #ocaml
<palomer> record field naming is a good point
<devn> what do you think about "record field naming hell"
<palomer> unfortunately, there's no good solution to this
<palomer> and many people have tried coming up with stuff
<adrien> 20:34 palomer : record field naming is a good point
<adrien> see trunk
<adrien> or >= 4.01
<palomer> yeah, i heard there's a new thing
<palomer> so how does it work?
<palomer> it uses type information to disambiguate?
<palomer> breaks a few nice properties of the type system :/
<palomer> but it's convenient, I can agree with that
<palomer> the big problem is that when you start moving code around, you'll start seeing type errors because it can't disambiguate any more
<palomer> that's the big problem with record field disambiguation
<palomer> "no polymorphism" is a problem for some, an advantage for others. Personally, I don't mind.
<palomer> Inconsistent function sets: true, but there are very few functions
<palomer> I don't know what he means by dynamic variables
<adrien> palomer: it tries to disambiguiate
* adrien afk
<palomer> optional arguments is a whole can of worms
<devn> palomer: perhaps he means that you can dynamically /rebind/ a bound var
<palomer> Jacques Garrigue wanted to keep some nice theoretical properties
<palomer> (it's based on his PhD work)
<palomer> devn, what does that mean?
mmachenry has quit [Quit: Leaving.]
<palomer> so optional arguments + partial application = complicated stuff
<palomer> Alain Frisch once proposed that were we to replace ocaml with something better, we should eliminate partial application
<palomer> to make optional arguments more useful
mmachenry has joined #ocaml
<palomer> arithmetic readability: I found that list code unreadable, so I guess readability is in the eye of the beholder. That being said, we can do stuff like Int32.(a + b) now
<palomer> silent name conflict has been taken care of
<palomer> order of evaluation is undefined last I checked
<palomer> so I don't know what he's smoking
<palomer> if you're code depends on the order of evaluation, you probably shouldn't be using ocaml
<palomer> the whole no object input/output is a very big question. There was some talk of introducing generics into ocaml. I don't know what the statis of that is, but it's pretty exciting stuff. The big application is type safe marshalling
<palomer> compiler stops after first error: I don't think this is true
<palomer> no stack trace: fixed
<nlucaroni> lists are immutable!!
<palomer> debugger sucks: I know some people that are big fans
<palomer> GC sucks: many people would disagree about this
<palomer> no implicit forward declaration: needed for shadowing. also makes compilation faster
<palomer> (well, type checking at least)
smerz has joined #ocaml
<palomer> standard library sucks: I prefer the term "minimal"
<palomer> but yeah, someone should make a new document so we have a better idea of what to improve
<palomer> taking into account the newer versions and with better knowledge of the stuff that was done _on purpose_
malo has joined #ocaml
angerman has quit [Quit: Gone]
nikki93 has joined #ocaml
nikki93 has quit [Ping timeout: 265 seconds]
<devn> hey, sorry, i have to dip back into work
<devn> palomer: adrien: nlucaroni: thanks for your responses. I wasn't trying to drop that link and just bounce. I really appreciate having a discussion about it. I'm thinking about picking up some OCaml and wanted to know where the landmines and landlines are.
ggole has quit []
<palomer> the biggest hurdle is the learning curve
<palomer> the biggest weaknesses aren't even mentioned in that document
<palomer> poor windows support
<palomer> (no debugger on windows I think)
<palomer> no multi threading
<palomer> those are the only ones I can thing of off the top of my head
comacat has joined #ocaml
comacat has quit [Client Quit]
comacat_ has joined #ocaml
comacat_ has quit [Client Quit]
comacat has joined #ocaml
dant3 has quit [Read error: Connection reset by peer]
dant3 has joined #ocaml
yellowfish has quit [Ping timeout: 248 seconds]
ollehar has joined #ocaml
_andre has quit [Quit: leaving]
claudiuc has joined #ocaml
arjunguha has joined #ocaml
<devn> palomer: any suggested reading or toy projects worth learning on?
aurynj has quit [Quit: Leaving]
<ousado> the example code is written in ocaml
<devn> ousado: i could dig that. i know this is going to sound like something you may never do in OCaml, however...
<devn> I've been fond of toying with midi libraries, sound libraries, etc.
<devn> That or an off-the-shelf IRC bot or something that I could add commands to and mess with
<devn> Any suggestions in those directions?
arjunguha has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<palomer> My ocaml interests have been rather theory oriented...
<palomer> I have played around with midi in C and java though...
<ousado> some IRC thing should be easy to find
<palomer> personally, I would like something to transcribe sheet music to mp3
<palomer> it already exists: http://abc.sourceforge.net/abcMIDI/
<palomer> but I forgot how to read music :P
<palomer> I just want to write the key and the number of the bar the note is on
<palomer> (and its length)
<palomer> but, uhh, that's probably rather hard :P
<palomer> go for IRC
arjunguha has joined #ocaml
arjunguha has quit [Client Quit]
sw1nn has joined #ocaml
arjunguha has joined #ocaml
arjunguha has quit [Client Quit]
sw1nn` has joined #ocaml
<smondet> devn: looooong time ago, I played with MIDI stuff in OCaml, https://code.google.com/p/locoseq/ there is a parser/writer for midifiles and other things
sw1nn` is now known as Guest17503
<smondet> (the project itself is dead)
r0b1 has quit [Ping timeout: 252 seconds]
sw1nn has quit [Ping timeout: 260 seconds]
thomasga has quit [Quit: Leaving.]
arjunguha has joined #ocaml
SrPx has joined #ocaml
smondet has quit [Quit: leaving]
smondet has joined #ocaml
Guest17503 has quit [Ping timeout: 248 seconds]
r0b1 has joined #ocaml
thomasga has joined #ocaml
thomasga has quit [Client Quit]
thomasga has joined #ocaml
SrPx has quit [Quit: Page closed]
passiveobserver has quit [Ping timeout: 272 seconds]
passiveobserver has joined #ocaml
Guest17503 has joined #ocaml
arjunguha has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Guest17503 has quit [Ping timeout: 264 seconds]
rand000 has quit [Quit: leaving]
dant3 has quit [Ping timeout: 260 seconds]
Anarchos has quit [Quit: Vision[0.9.7-H-20131020]: i've been blurred!]
rand000 has joined #ocaml
rand000 has quit [Client Quit]
arjunguha has joined #ocaml
nikki93 has joined #ocaml
nikki93 has quit [Ping timeout: 269 seconds]
thomasga has quit [Quit: Leaving.]
thomasga has joined #ocaml
Kakadu has quit [Quit: Konversation terminated!]
axiles has quit [Remote host closed the connection]
S11001001 has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
Thooms has quit [Quit: WeeChat 0.3.8]
Guest17503 has joined #ocaml
nikki93 has joined #ocaml
mreca has joined #ocaml
mreca has quit [Client Quit]
thomasga has quit [Quit: Leaving.]
Guest17503 has quit [Ping timeout: 240 seconds]
jao has quit [Ping timeout: 248 seconds]
nlucaroni has quit [Quit: leaving]
thomasga has joined #ocaml
thomasga has quit [Client Quit]
dsheets_ has quit [Ping timeout: 264 seconds]
Eyyub has quit [Read error: Operation timed out]
yellowfish has joined #ocaml
Eyyub has joined #ocaml
yellowfish has quit [Changing host]
yellowfish has joined #ocaml
arjunguha has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
lostcuaz has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
mmachenry has quit [Quit: Leaving.]
smondet has quit [*.net *.split]
hyperboreean has quit [*.net *.split]
smondet has joined #ocaml
hyperboreean has joined #ocaml
maxibolt has joined #ocaml
dsheets_ has joined #ocaml
arjunguha has joined #ocaml
thomasga has joined #ocaml
thizanne has quit [Ping timeout: 272 seconds]
Arsenik has quit [Remote host closed the connection]
palomer has quit [Remote host closed the connection]
smerz has quit [Ping timeout: 264 seconds]
arjunguha has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
arjunguha has joined #ocaml
zRecursive has joined #ocaml
passiveobserver has quit [Ping timeout: 260 seconds]
palomer has joined #ocaml
mfp has quit [Read error: Connection reset by peer]
mfp has joined #ocaml
passiveobserver has joined #ocaml
gambogi has quit [Ping timeout: 260 seconds]
gambogi has joined #ocaml
darkf has joined #ocaml
arjunguha has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
shinnya has joined #ocaml
madroach has quit [Ping timeout: 252 seconds]
madroach has joined #ocaml
arjunguha has joined #ocaml
NoNNaN has quit [Remote host closed the connection]
NoNNaN has joined #ocaml
ollehar has quit [Ping timeout: 260 seconds]
csakatoku has joined #ocaml