adrien changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.06.0 release notes: https://caml.inria.fr/pub/distrib/ocaml-4.06/notes/Changes | Try OCaml in your browser: http://try.ocamlpro.com | Public channel logs at http://irclog.whitequark.org/ocaml
sh0t has quit [Remote host closed the connection]
sh0t has joined #ocaml
kleimkuhler has quit [Quit: kleimkuhler]
kleimkuhler has joined #ocaml
silver has quit [Read error: Connection reset by peer]
nahra has quit [Remote host closed the connection]
zolk3ri has quit [Remote host closed the connection]
Haudegen has quit [Read error: Connection reset by peer]
shinnya has quit [Ping timeout: 260 seconds]
mfp_ has quit [Ping timeout: 240 seconds]
kleimkuhler has quit [Quit: kleimkuhler]
kleimkuhler has joined #ocaml
govg has quit [Ping timeout: 276 seconds]
govg has joined #ocaml
govg has quit [Ping timeout: 245 seconds]
tormen_ has joined #ocaml
tormen has quit [Ping timeout: 240 seconds]
malina has quit [Quit: Throwing apples of Montserrat]
pierpal has quit [Read error: Connection reset by peer]
govg has joined #ocaml
pierpal has joined #ocaml
pierpal has quit [Ping timeout: 260 seconds]
kleimkuhler has quit [Quit: kleimkuhler]
kleimkuhler has joined #ocaml
lopex has quit [Quit: Connection closed for inactivity]
cobreadmonster has joined #ocaml
pierpal has joined #ocaml
pierpal has quit [Ping timeout: 245 seconds]
pierpal has joined #ocaml
pierpal has quit [Ping timeout: 245 seconds]
tarptaeya has joined #ocaml
marxS has joined #ocaml
m4lvin has quit [Remote host closed the connection]
m4lvin has joined #ocaml
kleimkuhler has quit [Quit: kleimkuhler]
caltelt_ has joined #ocaml
kleimkuhler has joined #ocaml
kleimkuhler has quit [Quit: kleimkuhler]
cobreadmonster has quit [Quit: Connection closed for inactivity]
noitakomentaja has joined #ocaml
sh0t has quit [Remote host closed the connection]
xa0 has quit [Ping timeout: 276 seconds]
marxS has quit [Remote host closed the connection]
_xvilka_ has quit [Changing host]
_xvilka_ has joined #ocaml
xa0 has joined #ocaml
xa0 has quit [Ping timeout: 245 seconds]
xa0 has joined #ocaml
xa0 has quit [Excess Flood]
xa0 has joined #ocaml
xa0 has quit [Excess Flood]
xa0 has joined #ocaml
xa0 has quit [Excess Flood]
dhil has joined #ocaml
xa0 has joined #ocaml
xa0 has quit [Ping timeout: 260 seconds]
xa0 has joined #ocaml
<Leonidas> megeve: so, finance and web basically.
<Leonidas> I've seen people from Intel post on mailinglists, so I assume they also seem to use it
<Leonidas> I was working with OCaml in a company that did 3D graphics.
<Leonidas> Is there a way to select text in vim on an expression level?
mk9 has joined #ocaml
<_xvilka_> also program analysis
<_xvilka_> is quite often written in OCaml
mk9 has quit [Client Quit]
mk9 has joined #ocaml
<discord1> <khady> I think thales has some ocaml, siemens too
flodin has quit [Quit: Konversation terminated!]
mk9 has quit [Quit: mk9]
noitakomentaja has quit [Ping timeout: 250 seconds]
mk9 has joined #ocaml
exarkun has quit [Read error: Connection reset by peer]
mk9 has quit [Remote host closed the connection]
sz0 has quit [Quit: Connection closed for inactivity]
exarkun has joined #ocaml
argent_smith has joined #ocaml
caltelt_ has quit [Ping timeout: 260 seconds]
jbrown has joined #ocaml
flodin has joined #ocaml
mk9 has joined #ocaml
noitakomentaja has joined #ocaml
nicoo has quit [Remote host closed the connection]
nicoo has joined #ocaml
mk9 has quit [Quit: mk9]
mk9 has joined #ocaml
mfp_ has joined #ocaml
mk9 has quit [Client Quit]
lopex has joined #ocaml
nicoo has quit [Remote host closed the connection]
nicoo has joined #ocaml
gtrak has quit [Ping timeout: 260 seconds]
gtrak has joined #ocaml
dhil has quit [Ping timeout: 260 seconds]
zolk3ri has joined #ocaml
pierpal has joined #ocaml
pierpal has quit [Ping timeout: 245 seconds]
pierpal has joined #ocaml
pierpal has quit [Ping timeout: 245 seconds]
argent_smith1 has joined #ocaml
argent_smith has quit [Ping timeout: 245 seconds]
dhil has joined #ocaml
ziyourenxiang has joined #ocaml
kakadu has joined #ocaml
pierpal has joined #ocaml
pierpal has quit [Client Quit]
pierpal has joined #ocaml
Haudegen has joined #ocaml
jmiven has quit [Quit: co'o]
jmiven has joined #ocaml
unyu has quit [Ping timeout: 256 seconds]
unyu has joined #ocaml
slash^ has joined #ocaml
xa0 has quit [Excess Flood]
xa0 has joined #ocaml
ctrlsbstr has joined #ocaml
noitakomentaja has quit [Ping timeout: 250 seconds]
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
Robdor has quit [Quit: Ping timeout (120 seconds)]
Robdor has joined #ocaml
tizoc has quit [Ping timeout: 256 seconds]
dhil has quit [Ping timeout: 248 seconds]
tizoc has joined #ocaml
mk9 has joined #ocaml
<discord1> <Perry> Is there any serious negative to running full time with flambda as one's compiler?
<Drup> compilation might take longer, and might take quite a bit of ram, but not always
<Drup> compatibility wise, I don't think there are any issues
<discord1> <Perry> In terms of performance, how much better is it?
<discord1> <Perry> and is the flambda compiler compiled with flambda? 😃
<Drup> ocaml is bootstraped, so it can if you want, it's not right now though
<discord1> <Perry> but that would presumably speed up flambda.
<Drup> well, that's not exactly the right answer, let's say yes
Boarders has joined #ocaml
<Drup> iirc, the **average** speedup is around 20% on -O3, and negligeable on -O1
<Drup> that's average, it highly depends on the software. Functional workloads tend to get the most out of it
<discord1> <Perry> 20% is significant but not a game changer for the stuff I do day to day which is mostly research.
<discord1> <Perry> Maybe I'll avoid playing with it for now.
<Drup> (You can finetune it as well, see the documentation)
<discord1> <Perry> I've often wondered how well an LLVM back-end might do over the native one. The GHC people seem to have switched over mostly to LLVM over their own older C-- stuff.
<Boarders> Hi I was reading Pierce's book and don't speak ocaml (I do speak haskell though). In this type declaration: https://lpaste.net/4267478276944953344 I just want to check the point of the info
<Boarders> is it roughly to indicate whether a term is meant to be infix or prefix or etc?
<Drup> Perry: iirc, llvm is an optional backend to ghc, and is not the default one
<Drup> it's also not particularly faster .... unless you consider stuff that can be vectorized
<discord1> <Perry> I think that used to be the case, but they've mostly switched over at this point. But I might be wrong.
<discord1> <Perry> The LLVM people changed a lot of stuff to accommodate GHC.
<discord1> <Perry> That side I know about because of my work with LLVM. Like there's a whole extra calling convention for the benefit of the GHC people.
<Drup> Is that recent? Because afaik, they just added a new calling convetion, and that's it
<discord1> <Perry> And a bunch of work was done on the garbage collection support.
<Drup> anyway, llvm is not good at functional workloads
<discord1> <Perry> There were also a bunch of small tweaks the GHC people needed that got done, though I'm struggling to remember any of them.
<Drup> llvm is very good at C
<discord1> <Perry> LLVM is not better at functional workloads. The functional stuff isn't optimized by the existing set of llvm optimization passes.
<discord1> <Perry> You really want stuff to handle functional-only optimizations in your front end before passing it to something like LLVM.
<Drup> Boarders: that's just an algebraic data type declaration, exactly like an Haskell one
<Boarders> yes, I just want to know what "of info" means after each term
<discord1> <Perry> But it will do nice things with stuff like (as you noted) vectorization and instruction scheduling etc.
<discord1> <Perry> "info" is presumably a type.
FreeBirdLjj has joined #ocaml
<discord1> <Perry> "TmZero of info" means that you have an "info" stored with the variant "TmZero". It's just like Haskell in this regard.
<discord1> <Perry> The syntax is just slightly different.
<Drup> Boarders: `Foo of bar * baz` is the same as `Foo Bar Baz` is haskell
<Drup> `a * b` is the type of tuples with a and b
<discord1> <Perry> Though in this case, it's not a tuple! That confused me forever.
pierpal has quit [Quit: Poof]
<Boarders> would it be ok to write "TmTrue of term"?
<discord1> <Perry> Foo of bar * baz is a constructor Foo that takes two parameters.
<discord1> <Perry> "TmTrue of term" is fine.
pierpal has joined #ocaml
<discord1> <Perry> (syntactically.)
<Boarders> ok, makes sense. Thanks for the info!
<Drup> Perry: whitequark (and others before him) tried to provide an LLVM backend
<Drup> the conclusion was that 1) it would take a lot of work on the GC aspects 2) it's not really worth it
<discord1> <Perry> The LLVM GC stuff keeps getting better with time. A lot of LLVM languages now use it.
<discord1> <Perry> But I'm not saying it would be worth the effort.
FreeBirdLjj has quit [Ping timeout: 252 seconds]
tarptaeya has quit [Quit: Konversation terminated!]
pierpal has quit [Ping timeout: 252 seconds]
noitakomentaja has joined #ocaml
ctrlsbstr has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
spew has joined #ocaml
pierpal has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #ocaml
pierpal has quit [Ping timeout: 260 seconds]
argent_smith has joined #ocaml
argent_smith has quit [Client Quit]
argent_smith1 has quit [Ping timeout: 245 seconds]
mk9 has quit [Quit: mk9]
mk9 has joined #ocaml
pierpal has joined #ocaml
pierpal has quit [Ping timeout: 260 seconds]
mk9 has quit [Quit: mk9]
pierpal has joined #ocaml
gtrak has quit [Ping timeout: 248 seconds]
mk9 has joined #ocaml
mk9 has quit [Client Quit]
mk9 has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
tor7200 has joined #ocaml
tor7200 has left #ocaml [#ocaml]
pierpal has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #ocaml
pierpal has quit [Ping timeout: 240 seconds]
freyr has joined #ocaml
<freyr> Can I use Lwt_main.run with js_of_ocaml?
<freyr> I'm getting a compile error
<freyr> Error: Required module `Lwt_main' is unavailable
<Drup> freyr: Lwt_main is only for unix
<Drup> you don't need to launch promises in js
<freyr> I want to wait for the result
<freyr> bind is not always convenient
tarptaeya has joined #ocaml
gtrak has joined #ocaml
<steenuil> not using the ppx?
<flux[m]> it might also not be possible not not wait for the result?
dhil has joined #ocaml
<flux[m]> s/not not/to not/
mk9 has quit [Quit: mk9]
<Drup> freyr: you can't really do blocking wait in lwt-in-js
<freyr> I see. It seems that Lwt.async is doing what I need
pierpal has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #ocaml
mk9 has joined #ocaml
BitPuffin has joined #ocaml
pierpal has quit [Ping timeout: 260 seconds]
argent_smith has joined #ocaml
mk9 has quit [Quit: mk9]
noitakomentaja has quit [Ping timeout: 250 seconds]
mk9 has joined #ocaml
shinnya has joined #ocaml
argent_smith1 has joined #ocaml
pierpal has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #ocaml
argent_smith has quit [Ping timeout: 260 seconds]
pierpal has quit [Ping timeout: 245 seconds]
pierpal has joined #ocaml
mfp_ has quit [Ping timeout: 245 seconds]
megeve has quit [Quit: Lost terminal]
FreeBirdLjj has joined #ocaml
mk9 has quit [Quit: mk9]
Deknos has joined #ocaml
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
mk9 has joined #ocaml
mfp_ has joined #ocaml
mk9 has quit [Client Quit]
pierpal has quit [Ping timeout: 252 seconds]
mk9 has joined #ocaml
mk9 has quit [Quit: mk9]
noitakomentaja has joined #ocaml
shinnya has quit [Ping timeout: 252 seconds]
pierpal has joined #ocaml
pierpal has quit [Client Quit]
pierpal has joined #ocaml
freyr has quit [Remote host closed the connection]
noitakomentaja has quit [Ping timeout: 250 seconds]
mk9 has joined #ocaml
Boarders has left #ocaml [#ocaml]
sh0t has joined #ocaml
sz0 has joined #ocaml
tarptaeya has quit [Quit: Konversation terminated!]
argent_smith1 has quit [Quit: Leaving.]
Haudegen has quit [Ping timeout: 260 seconds]
ziyourenxiang has quit [Ping timeout: 245 seconds]
slash^ has quit [Read error: Connection reset by peer]
ctrlsbstr has joined #ocaml
dxtr has joined #ocaml
mk9 has quit [Quit: mk9]
dhil has quit [Ping timeout: 260 seconds]
aciniglio has joined #ocaml
Haudegen has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
Haudegen has quit [Ping timeout: 245 seconds]
pierpal has joined #ocaml
silver has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
noitakomentaja has joined #ocaml
noitakomentaja has quit [Ping timeout: 250 seconds]
_andre has quit [Read error: No route to host]
Haudegen has joined #ocaml
pierpal has joined #ocaml
jnavila has joined #ocaml
pierpal has quit [Ping timeout: 256 seconds]
pierpal has joined #ocaml
jimmyrcom_ has quit [Ping timeout: 260 seconds]
sh0t has quit [Ping timeout: 260 seconds]
jnavila has quit [Ping timeout: 240 seconds]
jnavila has joined #ocaml
jimmyrcom_ has joined #ocaml
argent_smith has joined #ocaml
Haudegen has quit [Ping timeout: 245 seconds]
noitakomentaja has joined #ocaml
kakadu_ has joined #ocaml
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
Deknos has quit [Remote host closed the connection]
FreeBirdLjj has quit [Remote host closed the connection]
Haudegen has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
Armael has quit [Quit: WeeChat 2.0.1]
gikiam has quit [Quit: WeeChat 2.0.1]
BitPuffin has quit [Remote host closed the connection]
jnavila has quit [Remote host closed the connection]
<discord1> <Perry> Stupid question given the length of time I've been using OCaml now, but: if I have a module that pretty much literally only exists to define a set of types, should I (1) leave the defs in a .ml file and not create a .mli, (2) leave the defs in a .mli and not create a .ml, (3) have identical .ml and .mli files (what a waste!) or (4) something else?
<def`> (1)
<discord1> <Perry> And the rationale is...?
nolanv has quit [Read error: Connection reset by peer]
<discord1> <Perry> Ah, justified here: http://caml.inria.fr/pub/docs/manual-ocaml/comp.html
aciniglio has quit [Ping timeout: 245 seconds]
nolanv has joined #ocaml
jimmyrcom_ has quit [Ping timeout: 240 seconds]
argent_smith1 has joined #ocaml
argent_smith has quit [Ping timeout: 245 seconds]
silver_ has joined #ocaml
silver has quit [Read error: Connection reset by peer]
noitakomentaja has quit [Ping timeout: 250 seconds]
nolanv has quit [Read error: Connection reset by peer]
gtrak has quit [Ping timeout: 245 seconds]
nolanv has joined #ocaml
ctrlsbstr has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
nolanv has quit [Quit: WeeChat 2.0.1]
kakadu_ has quit [Remote host closed the connection]
discord1 has quit [Remote host closed the connection]
discord2 has joined #ocaml
hdon has joined #ocaml
<hdon> hi all :) why does mutual recursion in ocaml require jumping through extra hoops as compared to languages like C which only ask you to write a function signature or have a forward declaration of a struct type? i feel that i must be missing something that explains why ocaml does it this way
<lyxia> It might have to do with the fact that in ocaml, definitions are evaluated sequentially.
ctrlsbstr has joined #ocaml
spew has quit [Quit: Connection closed for inactivity]
isd has joined #ocaml
<octachron> hdon, you can do mutual recurence the C way by declaring forward reference if you really really want
<octachron> but automatic mutual recursion + type inference + parametric types would create a lot of confusing situation
<octachron> declaring small group of mutually recursive functions/types make it simpler to keep such complexity in check
sh0t has joined #ocaml
Haudegen has quit [Remote host closed the connection]
sh0t has quit [Remote host closed the connection]
sh0t has joined #ocaml
<octachron> small example: "let f x = x let g x = f x, f (x,x)" vs "let rec f: 'a. 'a -> 'a = fun x -> x and g x = f x, f (x,x)"
argent_smith1 has quit [Quit: Leaving.]
isd has quit [Quit: Leaving.]
loli has quit [Quit: WeeChat 2.1]
loli has joined #ocaml