adrien changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | Upcoming OCaml MOOC: https://huit.re/ocamlmooc | OCaml 4.03.0 release notes: http://ocaml.org/releases/4.03.html | Try OCaml in your browser: http://try.ocamlpro.com | Public channel logs at http://irclog.whitequark.org/ocaml
<MrMateus> i just want to get the value of n1 actually, but its not working
veggie_ has quit [Ping timeout: 265 seconds]
<pierpa> the ; is wrong
<pierpa> either put nothing there, or use ;;
mfp has quit [Ping timeout: 260 seconds]
<MrMateus> well i added "in" in the end and it worked :P
<pierpa> and: let [(n1, _, _); _] = sorted;; would be shorter and clearer
<MrMateus> something like this then
<MrMateus> let [(n1, _, _)] = List.hd (sorted) in
<MrMateus> ?
al-damiri has quit [Quit: Connection closed for inactivity]
<pierpa> if you add something after the 'in', yes :)
<pierpa> no, sorry
<pierpa> this is wrong
<MrMateus> its inside a function btw
<pierpa> something like what I wrote
<pierpa> oops, no, sorry again. It's ok
<pierpa> but usually is easier and clearer to use pattern matching rather than List.hd
<MrMateus> well i am kind new on the language, i just really wanted to get the first value of the list
<MrMateus> :P
<pierpa> the easier way to get the first element of a list is: let [first; _] = list in ...
<pierpa> *easiest
<pierpa> or: let first :: _ = list in ...
<MrMateus> if i put
<pierpa> uff, sorry [first|_]
<MrMateus> let [first|_|_] = sorted in
<pierpa> no. [first|_]
<MrMateus> but the tuple has 3
<pierpa> this is a list. In the code you wrote above, it would be let [(x,_,_)|_] = list in ...
<MrMateus> ok soo if i want the first value of a tuple list, i write -> let [(x, _, _)|_] = sorted in
<MrMateus> is that right?
<pierpa> in this way you bind x to the first component of the first tuple in the list
<MrMateus> let me try that out :P
<MrMateus> i tryed this
<MrMateus> let [(x, _, _)|_] = sorted in
<MrMateus> got this erro: Variable x must occur on both sides of this | pattern
<pierpa> looks ok
<MrMateus> by the way, x is a string
<pierpa> uh?
<pierpa> ah, the value you mean
<MrMateus> yeah
<MrMateus> its (s,i,i)
<MrMateus> anyway what about that error?
ethnopes has quit [Quit: Textual IRC Client: www.textualapp.com]
<pierpa> ok. sorry.
<pierpa> try this: let (x, _, _) :: _ = sorted in
<MrMateus> eheheh
<MrMateus> Warning 8: this pattern-matching is not exhaustive.
<MrMateus> []
<MrMateus> Here is an example of a value that is not matched:
<pierpa> yes, this is to be expected
<pierpa> to remove the warning add a case for []
<MrMateus> what you mean add a case?
<pierpa> match sorted with (x,_,_) -> do things with x | [] -> the list was empty! ;;
<pierpa> match sorted with (x,_,_) :: _ -> do things with x | [] -> the list was empty! ;;
yomimono has joined #ocaml
<MrMateus> sorry didnt really understand
<pierpa> it is code try it
marsam has joined #ocaml
<MrMateus> it is just giving syntax errors :P
marsam has quit [Read error: Connection reset by peer]
yomimono has quit [Client Quit]
<pierpa> try this: match sorted with (x,_,_) :: _ -> print_string x | [] -> print_string "the list was empty!" ;;
<MrMateus> "This expression has type unit but an expression was expected of type
<MrMateus> "
<MrMateus> (string * 'a * 'b) list
<pierpa> I tested this, and it works: match [("abc","","")] with (x,_,_) :: _ -> print_string x | [] -> print_string "the list was empty!" ;;
<pierpa> abc- : unit = ()
<MrMateus> yeah
<pierpa> *so
marsam has joined #ocaml
<pierpa> os, your "sorted" has not the right type
<pierpa> it is not a (string * ...) list
<pierpa> you said that that first item in the tuple was a string
Muzer has quit [Ping timeout: 260 seconds]
<MrMateus> but i am trying .ml file
<pierpa> what type has sorted?
<MrMateus> can't that be the problem?
<MrMateus> sorted is (s,i,i)
<pierpa> the type
Muzer has joined #ocaml
brunoro has quit [Ping timeout: 260 seconds]
marsam has quit [Read error: Connection reset by peer]
minn has quit [Ping timeout: 252 seconds]
ocaml426 has joined #ocaml
wu_ng has joined #ocaml
brunoro has joined #ocaml
MrMateus has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
minn has joined #ocaml
sh0t has quit [Remote host closed the connection]
rgrinberg has quit [Ping timeout: 260 seconds]
michbad has quit [Remote host closed the connection]
brunoro has quit [Read error: Connection reset by peer]
brunoro has joined #ocaml
ygrek has quit [Ping timeout: 244 seconds]
Heasummn has quit [Ping timeout: 268 seconds]
tane_ has joined #ocaml
tane has quit [Ping timeout: 260 seconds]
agarwal1975 has quit [Quit: agarwal1975]
brunoro has quit [Ping timeout: 260 seconds]
wxfdglm has joined #ocaml
btbytes has joined #ocaml
TarVanimelde has joined #ocaml
brunoro has joined #ocaml
btbytes has quit [Quit: Textual IRC Client: www.textualapp.com]
TarVanimelde has quit [Ping timeout: 244 seconds]
TarVanimelde has joined #ocaml
TarVanimelde has quit [Client Quit]
fraggle_ has quit [Ping timeout: 250 seconds]
fraggle_ has joined #ocaml
MercurialAlchemi has joined #ocaml
fraggle_ has quit [Ping timeout: 260 seconds]
minn has quit [Ping timeout: 260 seconds]
MercurialAlchemi has quit [Ping timeout: 244 seconds]
brunoro has quit [Ping timeout: 268 seconds]
brunoro has joined #ocaml
noddy has quit [Ping timeout: 256 seconds]
chobytes has joined #ocaml
chobytes has left #ocaml [#ocaml]
malc_ has joined #ocaml
jnji has joined #ocaml
noddy has joined #ocaml
AlexDenisov has joined #ocaml
MercurialAlchemi has joined #ocaml
ygrek has joined #ocaml
brunoro has quit [Ping timeout: 260 seconds]
frefity has quit [Ping timeout: 260 seconds]
frefity has joined #ocaml
brunoro has joined #ocaml
dmi3y has joined #ocaml
gjaldon has joined #ocaml
argent_smith has joined #ocaml
TarVanimelde has joined #ocaml
brunoro has quit [Ping timeout: 256 seconds]
brunoro has joined #ocaml
bronsen has quit [Ping timeout: 245 seconds]
Algebr has quit [Ping timeout: 265 seconds]
jnavila has joined #ocaml
pierpa has quit [Ping timeout: 250 seconds]
AlexDenisov has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tane_ has quit [Quit: Leaving]
wxfdglm has quit [Quit: leaving]
AlexRussia has joined #ocaml
demonimin has quit [Read error: Connection reset by peer]
demonimin has joined #ocaml
Simn has joined #ocaml
malc_ has quit [Ping timeout: 250 seconds]
ygrek has quit [Ping timeout: 260 seconds]
Onemorenickname has joined #ocaml
bronsen has joined #ocaml
Algebr has joined #ocaml
dmi3y has quit [Quit: dmi3y]
dmi3y has joined #ocaml
AlexDenisov has joined #ocaml
gjaldon has quit []
AltGr has joined #ocaml
grayswandyr has joined #ocaml
AlexRussia has quit [Quit: WeeChat 1.6]
rand__ has joined #ocaml
wxfdglm has joined #ocaml
malc_ has joined #ocaml
Sim_n has joined #ocaml
brunoro has quit [Ping timeout: 250 seconds]
alfredo has joined #ocaml
Simn has quit [Ping timeout: 260 seconds]
zpe has joined #ocaml
brunoro has joined #ocaml
ontologiae has joined #ocaml
brunoro has quit [Ping timeout: 250 seconds]
AlexRussia has joined #ocaml
brunoro has joined #ocaml
AlexRussia has quit [Ping timeout: 265 seconds]
brunoro has quit [Ping timeout: 250 seconds]
mfp has joined #ocaml
AlexRussia has joined #ocaml
zpe_ has joined #ocaml
zpe has quit [Ping timeout: 260 seconds]
brunoro has joined #ocaml
dmi3y has quit [Quit: dmi3y]
brunoro has quit [Ping timeout: 250 seconds]
AlexDenisov has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
dmi3y has joined #ocaml
brunoro has joined #ocaml
AlexDenisov has joined #ocaml
jwatzman|work has joined #ocaml
frefity has quit [Ping timeout: 252 seconds]
wu_ng has quit [Ping timeout: 260 seconds]
fraggle_ has joined #ocaml
frefity has joined #ocaml
rand__ has quit [Ping timeout: 256 seconds]
gallais has joined #ocaml
zpe_ has quit [Read error: Connection reset by peer]
Onemorenickname_ has joined #ocaml
grandy has quit [Ping timeout: 260 seconds]
jcloud has quit [Ping timeout: 260 seconds]
yunxing has quit [Ping timeout: 260 seconds]
parataxis has quit [Ping timeout: 260 seconds]
noplamodo has quit [Ping timeout: 260 seconds]
menasw has quit [Ping timeout: 260 seconds]
bronsen has quit [Ping timeout: 260 seconds]
caw has quit [Ping timeout: 260 seconds]
dlat has quit [Ping timeout: 260 seconds]
mrallen1 has quit [Ping timeout: 260 seconds]
mbrock has quit [Ping timeout: 260 seconds]
jkni has quit [Ping timeout: 260 seconds]
clockish has quit [Ping timeout: 260 seconds]
rom1504 has quit [Ping timeout: 260 seconds]
myst|fon has quit [Ping timeout: 260 seconds]
dlat has joined #ocaml
fraggle_ has quit [Ping timeout: 260 seconds]
Onemorenickname has quit [Ping timeout: 260 seconds]
jbrown has quit [Ping timeout: 260 seconds]
breitenj has quit [Ping timeout: 260 seconds]
Jaxan has quit [Ping timeout: 260 seconds]
freusque has quit [Ping timeout: 260 seconds]
sfri has quit [Ping timeout: 260 seconds]
Jaxan has joined #ocaml
sillyotter has joined #ocaml
menasw has joined #ocaml
grandy has joined #ocaml
sfri has joined #ocaml
mrallen1 has joined #ocaml
jkni has joined #ocaml
parataxis has joined #ocaml
_andre has joined #ocaml
myst|fon has joined #ocaml
mbrock has joined #ocaml
jcloud has joined #ocaml
caw has joined #ocaml
noplamodo has joined #ocaml
breitenj has joined #ocaml
clockish has joined #ocaml
dmi3y has quit [Quit: dmi3y]
AlexDenisov has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
rand__ has joined #ocaml
rom1504 has joined #ocaml
jbrown has joined #ocaml
fraggle_ has joined #ocaml
freusque has joined #ocaml
yunxing has joined #ocaml
zpe has joined #ocaml
zpe_ has joined #ocaml
bitbckt has quit [Ping timeout: 260 seconds]
AltGr has quit [Ping timeout: 260 seconds]
M-ErkkiSeppl has quit [Ping timeout: 260 seconds]
lpw25[m] has quit [Ping timeout: 260 seconds]
lpw25[m] has joined #ocaml
bitbckt has joined #ocaml
M-ErkkiSeppl has joined #ocaml
zpe has quit [Ping timeout: 252 seconds]
<Algebr> say you make an external like: external foo: ?foo:string -> ?bar:string -> int -> unit = "c_side" and c_side(value maybe_foo, value maybe_bar, value num). Will ordering get messed up if you call foo as: foo ~bar:"123" 10 ?
<def`> Algebr: no
<Algebr> so in that case foo on the C side will still be Val_none, bar will be a string and num wil get the 10?
jwatzman|work has quit [Read error: Connection reset by peer]
atsampson has quit [Ping timeout: 260 seconds]
jwatzman|work has joined #ocaml
<Algebr> err, sorry a bit confusing
<def`> bar will be Val_some string
<Algebr> right, meant to say that
<Algebr> okay, order will be correct
atsampson has joined #ocaml
StatelessCat has quit [Ping timeout: 250 seconds]
sillyotter has quit [Quit: WeeChat 1.4]
brunoro has quit [Ping timeout: 265 seconds]
soupault has joined #ocaml
brunoro has joined #ocaml
frefity has quit [Ping timeout: 260 seconds]
Algebr has quit [Ping timeout: 250 seconds]
jwatzman|work has quit [Quit: jwatzman|work]
rand__ has quit [Ping timeout: 260 seconds]
frefity has joined #ocaml
zpe_ has quit [Remote host closed the connection]
pippo has joined #ocaml
al-damiri has joined #ocaml
dmi3y has joined #ocaml
frefity has quit [Ping timeout: 265 seconds]
AlexDenisov has joined #ocaml
TarVanimelde has quit [Ping timeout: 250 seconds]
silver has joined #ocaml
brunoro has quit [Ping timeout: 252 seconds]
brunoro has joined #ocaml
frefity has joined #ocaml
TarVanimelde has joined #ocaml
bronsen has joined #ocaml
Denommus has joined #ocaml
agarwal1975 has joined #ocaml
malc_ has quit [Remote host closed the connection]
Onemorenickname_ has quit [Read error: Connection reset by peer]
Algebr has joined #ocaml
mankyKitty has quit [Read error: Connection reset by peer]
luzie has quit [Quit: WeeChat 1.6-rc1]
mankyKitty has joined #ocaml
luzie has joined #ocaml
TarV has joined #ocaml
TarVanimelde has quit [Ping timeout: 265 seconds]
kandu has quit [Quit: leaving]
kandu has joined #ocaml
<orbitz> companion_cube: sorry if I'm being forceful! It's your library so your choice, just doin gmy best to argue for a library I want to use ;)
<companion_cube> nah, sure
<companion_cube> I might put labels in it anyway
soupault has quit [Remote host closed the connection]
_whitelogger has quit [Ping timeout: 260 seconds]
_whitelogger has joined #ocaml
rgrinberg has joined #ocaml
th5 has joined #ocaml
TarV has quit [Read error: Connection reset by peer]
nomicflux has joined #ocaml
sh0t has joined #ocaml
yomimono has joined #ocaml
<Algebr> caml_alloc_array is a bit odd to me, why it uses char** instead of void**
frefity has quit [Ping timeout: 250 seconds]
jwatzman|work has joined #ocaml
ethnopes has joined #ocaml
ocaml426 has quit [Ping timeout: 260 seconds]
<companion_cube> maybe it's an alignment issue?
<Algebr> Is there no other way to make an array other than caml_alloc_array?
<reynir> I'm not sure it's the reason, but you can't do pointer arithmetic on void pointers
<flux> you can, though.
<flux> they're like char pointers, except they can be casted automatically into anything
<Algebr> im using this in a C++ context, not casted automatically
<Algebr> my caml_callback3 is segfaulting =/ I suspect its the array
<flux> fun, fun fun.
ethnopes has quit [Read error: Connection reset by peer]
ethnopes_ has joined #ocaml
<grayswandyr> companion_cube: hi you spoke a couple of times about labels for containers... If you consider adding them, I'd advocate to do this very parcimoniously if possible. Merlin's functions already show the type and doc string for functions. This, coupled with sensible, *documented*, standards (such as: having a collection as last argument to work with |>), should already be enough I think
<companion_cube> it's not really a question of documentation, tbh
<companion_cube> it's to be able to write Foo.iter foo ~f:(very long multiline function)
frefity has joined #ocaml
<companion_cube> which is usually more readable than `Foo.iter (very long function) foo`
<grayswandyr> in this case I'd advocate: let aux ... = ... in Foo.iter aux foo
<companion_cube> I avoid writing this :/
<grayswandyr> or foo |> Foo.iter (.........)
<companion_cube> yeah, yeah
<companion_cube> still a bit weird
<companion_cube> I think labels are pretty nice for this
<grayswandyr> I'm not fan of long multine functions between parentheses... I guess it's a matter of taste
<grayswandyr> I like labels but it's sometimes too much I think
<companion_cube> ah, I'm a big fan of those :)
<companion_cube> I mean, something you do have to write a big fold, at least in my experience
sh0t has quit [Quit: Leaving]
<flux> flip :)
<flux> merlin should just automatically insert appropriate 'flip' when you write code like Foo.iter aux @@ fun .. !
<flux> '42
shinnya has joined #ocaml
zpe has joined #ocaml
<companion_cube> erk
<Drup> "merlin should just automatically insert .." please no :|
<companion_cube> flip makes code unreadable, imho :/
<ia0> I sometimes write Foo.iter begin\n ... \nend foo when the ... is under 3 lines
<ia0> more precisely Foo.iter begin fun x ->\n ... \nend foo
<companion_cube> I'm more thinking of functions of ≥ 10 lines
frefity has quit [Ping timeout: 260 seconds]
<ia0> Yes I see the use.
<ia0> there should be a better example than Foo.iter which is in the wrong order from the start
<grayswandyr> right
<ia0> the current order mostly makes sense for partial application
<ia0> which will be most probably written with an eta-expansion in OCaml
<ia0> so you don't lose anything by having the right order
<flux> one flip is IMO OK, just don't go overboard with point-free code
<flux> maybe it could be called apply2nd for better effect.
<rgrinberg> companion_cube: do you want to help out with hamt?
<companion_cube> I'm just wondering what's up with oasis and it :)
<companion_cube> (as I said, I compare it with my internal HashTrie in containers)
frefity has joined #ocaml
<companion_cube> hmmmm, not related, but did 4.04 change something in type inference?
jnji has quit [Quit: Page closed]
ryanartecona has joined #ocaml
<rgrinberg> companion_cube: I think i just need to do oasis setup and commit the generated crap
<companion_cube> ah, cool
<companion_cube> but you sound like hamt is half dead?
<companion_cube> (do you use it?)
<rgrinberg> I do. It's not half dead, there's just nothing to do afaik
<rgrinberg> I suppose you could optimize it further, but it's always been good enough for me
<rgrinberg> I'll fix this issue now :P
<companion_cube> ok I see.
<Algebr> wow, even the OCaml code base itself doesn't use caml_alloc_array
<Algebr> and not a single real hit on github
<companion_cube> damn, found a regression in 4.04
octachron has joined #ocaml
<Algebr> me calling caml_callback is causing a bus error, which I take it means some kind of data misalignment
shinnya has quit [Ping timeout: 244 seconds]
MercurialAlchemi has quit [Ping timeout: 260 seconds]
sz0 has joined #ocaml
gjaldon has joined #ocaml
<rgrinberg> companion_cube: try opam pin add hamt --dev-repo
<rgrinberg> it's still asking me to downgrade even though there's no more oasis dependency :/
<companion_cube> ohhh, didn't know this option
sepp2k has joined #ocaml
<companion_cube> works for me
<companion_cube> maybe you pinned it locally before?
<companion_cube> ah wait, no
<companion_cube> wtf again
<companion_cube> rgrinberg: there must be a constraint in `opam`
<companion_cube> (I mean, the opam-repo one)
<rgrinberg> Yeah, but pinning should update the constraints no?
<companion_cube> I'm not sure
<companion_cube> Bluddy[m]: how do you mean, you don't use containers? :p
<Drup> (always use opam lint)
<Bluddy[m]> companion_cube: :) containers is great, but I want the splintering to end!
<companion_cube> ah, this... yeah :/
<Bluddy[m]> at least let's retire Batteries, or something
<Drup> define "retire" ?
<Bluddy[m]> when given a random OCaml environment (as in, online), all you have is the stdlib. So you have to know that.
Sorella has quit [Quit: Connection closed for inactivity]
<Bluddy[m]> Then there's Jane Street's conventions for using their stuff -- and their libraries are good!
<Algebr> deprecate == retire
<Bluddy[m]> and then there's Batteries... enough already!
<Bluddy[m]> How many times do I have to learn how to use basic functions?
<Algebr> +1
<Drup> Bluddy[m]: you didn't answer the question.
<companion_cube> the issue is "let us retire batteries" doesn't specify who is "us"
<companion_cube> some people use batteries
<Bluddy[m]> retire = deprecate, yes
<Armael> nobody forces you to use batteries
<companion_cube> (some even maintain it...well, gasche does)
<Bluddy[m]> as in, if you're using it, fine, but don't direct anyone to it anymore
<Bluddy[m]> Armael: but some projects use it, and for those projects, you need to know the conventions
<Drup> I'm curious how to propose to concretly do that
<Drup> s/to/you/
<Bluddy[m]> Easy, vote for Trump. He alone can solve it.
dmi3y has quit [Quit: dmi3y]
yomimono has left #ocaml ["Leaving"]
<Drup> I was serious. How do you intend to "making people stop advising <libraries that you consider should not be used anymore>"
<Algebr> not recommend it to people, make tweets, write blog posts
<Algebr> add it to readmes
<Algebr> run in the streets yelling it
<Drup> (not that I disagree with you on the base issue, it's just the peremptory decisiong of "retiring" a library that you do not maintain and never contributed ...
MrMateus has joined #ocaml
<Bluddy[m]> So if I can contribute to it I can "retire" it?
alfredo has quit [Quit: Textual IRC Client: www.textualapp.com]
<Algebr> is there anything on the OCaml side that can check if a value is properly aligned?
dmi3y has joined #ocaml
<Bluddy[m]> Honestly, my contribution is going to be to convince people to use Base
sepp2k has quit [Read error: Connection reset by peer]
<Bluddy[m]> I think the only way to advance is to advocate something big enough, strong enough and standard enough (RWO) that it overwhelms everything else de facto
<Bluddy[m]> Newbies learn Base/Core via RWO anyway
<companion_cube> even if 80% of OCaml users switched to base, the stdlib shipped with the compiler would still not change...
<Bluddy[m]> Yes, that is the sad truth
<Bluddy[m]> But there might be a strong enough incentive at that point to make a version of the stdlib that is compatible with Base
<companion_cube> clearly not if it breaks compat
<Bluddy[m]> if we get to those numbers
<Bluddy[m]> That's the only solution I see on the horizon
<Bluddy[m]> Oh of course you don't break compatibility outright -- you have a command line switch, or other module names or something
<companion_cube> still
<Bluddy[m]> Bundle a small version of Base into the compiler or some such thing
ethnopes_ has left #ocaml ["Textual IRC Client: www.textualapp.com"]
<Bluddy[m]> sorry companion_cube, I just don't see a path forward 'supporting' containers (and I mean supporting in the sense of recommending it to people etc) that doesn't lead to never ending fragmentation ie. the status quo
<grayswandyr> anyway Base has not been released AFAIK?
<companion_cube> I don't even know why I still discuss this stdlib thing, it draws all energy from me
<Bluddy[m]> and we have to get past this ridiculous stage in my opinion
<Bluddy[m]> yeah sorry
<companion_cube> bah, containers is "use stdlib + additional stuff", not really fragmentation
<companion_cube> I'm a stdlib user
average has quit [Ping timeout: 260 seconds]
<Bluddy[m]> i guess to some degree it is
average has joined #ocaml
<companion_cube> if I could merge my code into the stdlib, I would be very happy, of course
<Bluddy[m]> that would be pretty great
<rgrinberg> I dont know why. I've never had a problem using containers in every context i've wanted to
<rgrinberg> same for base for that matter
<frefity> i'm really new to OCaml and the fragmentation is definitley an issue for beginners
<Bluddy[m]> example: open up hackerrank.com and start writing some OCaml code. Only the stdlib is available to you, and if you're used to containers, you'll get very frustrated
<rgrinberg> it's a fucking programming contest site, cmon
<rgrinberg> more realistic example please
<Bluddy[m]> rgrinberg: I'm not talking about what you would consider 'realistic' examples perhaps, but about examples that exist nevertheless because the stdlib is the face of OCaml
<Algebr> rgrinberg: that's very realistic
<grayswandyr> everyone is aware of that, anyway.
<grayswandyr> talking endlessly about this will not solve the problem
<companion_cube> said differently, to get anything done in OCaml, you need something more than the stdlib
<companion_cube> be it your own set of helpers, or an external stdlib
<thizanne> I don't see how "not using batteries but core instead" will help when you're on hackerrank
<companion_cube> I know I never write pure vanilla stdlib code
<companion_cube> (even just to open a file)
<frefity> What I would love to see as a beginner is a tool that sets up a basic environment with some sane default. From there one command can perform building, testing updating.merlin and _tags etc
<grayswandyr> for a basic setup you have : opam install user-setup
<grayswandyr> then we would need sthg like Rust's cargo sure
<companion_cube> if things were to be done from scratch, sure
<grayswandyr> then, perhaps Containers or Base will gain some ground
<companion_cube> one stdlib, one build system…
<grayswandyr> I used Batteries before. Now I use a mixture of Containers (for data structures) and D. Bünzli's Fmt/Cmdliner/Logs
<companion_cube> I'm sad, CCFormat isn't enough? :P
<frefity> I've been using Go for the last few years and the simplicity of the Go tool for getting most things done is great
<companion_cube> (I know that it's subpar actually, but working on improving it a bit)
<companion_cube> frefity: otoh go is not great for algorithmic and datastructures, because you cannot express most things that are possible with OCaml
<frefity> I'm playing around with OCaml now in order to gain experience using a functional languages and a better type system
<companion_cube> afaik the stdlib is pretty poor w.r.t containers, isn't it? it's good for networking
<grayswandyr> well I came from PPRint and you and Drup convinced me to try CCFormat or Fmt. Then I liked Fmt's documentation...
<frefity> companion_cube, I don't know how I've lived without algebraic data types :)
<grayswandyr> Btw companion_cube: do you think more structures from Containers could be adapted to work natively with CCBatch?
<Bluddy[m]> one thing to keep in mind is that if modular implicits ever arrive, big chunks of the stdlib will probably change. That could be an opportunity point for redesign.
<companion_cube> ah, yeah, Bunzli knows how to write good documentation
<companion_cube> grayswandyr: honestly, I don't use CCBatch (and it's going to be removed in the incoming 1.0 anyway), because Sequence does the same thing much better
<companion_cube> (and in a more compositional way, too)
<grayswandyr> companion_cube: ok
<grayswandyr> good to know
AlexDenisov has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<companion_cube> I mean: `Foo.to_seq foo |> Sequence.map |> Sequence.flat_map |> Sequence.filter |> Bar.of_seq`
<companion_cube> I use this a lot, and it works well
<grayswandyr> right
AlexDenisov has joined #ocaml
<companion_cube> (with flambda it might even have 0 overhead compared to hand-writing stuff, thanks to inlining)
AlexDenisov has quit [Client Quit]
<Bluddy[m]> yeah it's great. Sequence should definitely be a part of the stdlib IMO. It's too basic not to have it in there
AlexDenisov has joined #ocaml
jnavila has quit [Quit: It was time]
AlexDenisov has quit [Client Quit]
<companion_cube> well, there is a PR to add iterators, but it's stalled
<companion_cube> and some people (who write nice libraries like Fmt) seem not to like those iterators
AlexDenisov has joined #ocaml
<rgrinberg> Yeah, that's a huge problem.
<rgrinberg> Even if something is useful (like sequence or generator) it can easily be veto'd for these personal reasons
<rgrinberg> even if it's still useful to 90% of the users out there
<companion_cube> (the argument is "those iterators cannot be used for everything (i.e. non blocking IO) so they are useless"
<companion_cube> )
<rgrinberg> yes. it's infuriating :(
<rgrinberg> I've never once wanted to use iterators with IO.
<companion_cube> indeed. Then maybe I should write tests
<Bluddy[m]> yeah it doesn't help that some characters in the ecosystem are very... difficult
<companion_cube> rgrinberg: I do stuff like `CCIO.with_in "foo" (fun ic -> Sequence.IO.lines_of ic |> ...)`
<companion_cube> from time to time
<rgrinberg> Sure. I know you can do it, I just don't believe it's such a good practice.
<rgrinberg> but your concrete example is harmless
<companion_cube> well, as long as resources are properly handled, and iterators don't outlive the resource, it's fine
<companion_cube> (otherwise I'd use something based on lwt, I think)
AlexDenisov has quit [Ping timeout: 252 seconds]
<rgrinberg> But anyway, these are all theoretical concerns to me. All languages that I'd consider alternatives to OCaml (rust, haskell, etc.) all have the same problem.
<rgrinberg> You will not go very far without taking a dependency or two.
freusque has quit [Quit: WeeChat 1.5]
dmi3y has quit [Quit: dmi3y]
<rgrinberg> alas, I will not be competitive in programming contests
<companion_cube> :D
dmi3y has joined #ocaml
rgrinberg has quit [Remote host closed the connection]
rgrinberg has joined #ocaml
freusque has joined #ocaml
freusque has quit [Client Quit]
freusque has joined #ocaml
dmi3y has quit [Quit: dmi3y]
ygrek has joined #ocaml
sepp2k has joined #ocaml
freusque has quit [Quit: WeeChat 1.5]
alpen has quit [Ping timeout: 260 seconds]
alpen has joined #ocaml
<gjaldon> what's the conventional way of specifying the deps of your project in OCaml? Is it through `opam`? Also, is there an `opam new/init` command that sets up a conventional OCaml project for you?
sepp2k has quit [Ping timeout: 256 seconds]
<companion_cube> "it's complicated"
<companion_cube> (well yes, the `opam` file is a good place to write dependencies; but you also have to tell your build system about them)
<companion_cube> (and possibly merlin)
<gjaldon> companion_cube: ahh so opam doesn't generate a basic Makefile for you?
<companion_cube> sadly, not
<gjaldon> seems simple enough to be implemented in opam. hmmm will try and suggest at the project repo
<gjaldon> companion_cube: how do you typically start/setup an ocaml project?
<reynir> I think opam is intentionally kept as a not-a-buildsystem
Algebr has quit [Ping timeout: 268 seconds]
<companion_cube> gjaldon: I start with a _oasis file and a .merlin file :/
<companion_cube> there is a tool to quickstart new projects though, I think
<gjaldon> reynir: I don't think the suggestions above would make opam a buildsystem. was not trying to replace Make
<gjaldon> companion_cube: merlin is the emacs/vim plugin, right? what's oasis for?
<maurer> oasis ~ autotools for ocaml
<maurer> it's not a perfect analogy, but it's about what it does
MercurialAlchemi has joined #ocaml
<Leonidas> oasis generates you all the files you need for building ocaml code with ocamlbuild (and recently also omake)
grayswandyr has quit [Quit: Page closed]
<gjaldon> ahh it seems I was looking for oasis
<gjaldon> reynir: I think I get why you made your earlier comment now
<companion_cube> maurer: or oasis~cmake, also
<maurer> companion_cube: I mean, yes. autotools and cmake are the same class of tool
sepp2k has joined #ocaml
kamog has joined #ocaml
noddy has quit [Ping timeout: 260 seconds]
gjaldon has quit []
zpe_ has joined #ocaml
zpe has quit [Read error: Connection reset by peer]
jwatzman|work has quit [Quit: jwatzman|work]
veggie_ has joined #ocaml
noddy has joined #ocaml
sepp2k has quit [Quit: Leaving.]
ontologiae has quit [Ping timeout: 268 seconds]
Nahra has quit [Ping timeout: 252 seconds]
zpe has joined #ocaml
zpe_ has quit [Ping timeout: 260 seconds]
dmi3y has joined #ocaml
ygrek has quit [Ping timeout: 260 seconds]
wxfdglm has quit [Ping timeout: 256 seconds]
zpe has quit [Remote host closed the connection]
dmi3y has quit [Quit: dmi3y]
<Leonidas> oh, 4.04 was released. i guess the topic needs updatin'
ygrek has joined #ocaml
<MrMateus> hey guys, shouldnt this go trough all the list and devide i/a? "let divlist = List.map (fun (s,i,a) -> (s,i/a,a)) sorted in" , it is only changing the first value of the list
veggie_ has quit [Quit: WeeChat 1.5]
<companion_cube> ahah, released 3h after I report a bug, which is "wontfix"
<companion_cube> (well, s/bug/regression/)
<companion_cube> ohhhh, `let exception e in …`
<companion_cube> ♥
<ia0> is it a syntactic sugar for let module M = struct exception e end in ...[e <- M.e] ?
<ia0> soon let type t = A | B of int in ...
wxfdglm has joined #ocaml
xieyuheng has joined #ocaml
Sim_n has quit [Ping timeout: 265 seconds]
wxfdglm_ has joined #ocaml
wxfdglm has quit [Ping timeout: 256 seconds]
octachron has quit [Quit: Page closed]
sfri has quit [Quit: No Ping reply in 180 seconds.]
Khady has quit [Remote host closed the connection]
sfri has joined #ocaml
Khady has joined #ocaml
Khady has joined #ocaml
Khady has quit [Changing host]
ygrek has quit [Remote host closed the connection]
_whitelogger has quit [K-Lined]
_whitelogger has joined #ocaml
Denommus has quit [Ping timeout: 250 seconds]
Algebr has joined #ocaml
Sorella has joined #ocaml
ryanartecona has quit [Quit: ryanartecona]
Denommus` is now known as Denommus
xieyuheng has quit [Quit: ChatZilla 0.9.92 [Firefox 49.0.2/20161021084537]]
<companion_cube> https://github.com/c-cube/ocaml-containers/issues/77 can someone explain to me why this is an issue? (case insensitive FS)
gregoire has quit [Quit: ZNC 1.6.3 - http://znc.in]
_andre has quit [Quit: leaving]
gregoire has joined #ocaml
<Bluddy[m]> companion_cube: I don't think there's a real issue there. My guess (since no further detail was provided): hongbo_zhang is used to a lowercase file scheme, so this one just 'feels' wrong, and he came up with a reason that it seems wrong to him
kakadu has joined #ocaml
wxfdglm_ has quit [Ping timeout: 268 seconds]
brunoro has quit [Ping timeout: 244 seconds]
smondet has joined #ocaml
MrMateus has quit [Quit: http://www.kiwiirc.com/ - A hand crafted IRC client]
brunoro has joined #ocaml
Algebr has quit [Ping timeout: 265 seconds]
rwmjones has quit [Ping timeout: 244 seconds]
rwmjones has joined #ocaml
dmi3y has joined #ocaml
brunoro has quit [Ping timeout: 244 seconds]
AlexDenisov has joined #ocaml
pierpa has joined #ocaml
AlexDenisov has quit [Ping timeout: 260 seconds]
jlouis has quit [Ping timeout: 244 seconds]
jlouis has joined #ocaml
adi___ has quit [Read error: Connection reset by peer]
adi___ has joined #ocaml
adi___ has joined #ocaml
adi___ has quit [Changing host]
nahra has joined #ocaml
larhat has quit [Read error: No route to host]
<companion_cube> hmm, so we're probably going to have 2 releases next year?
larhat has joined #ocaml
th5 has quit []
ryanartecona has joined #ocaml
madroach has quit [Ping timeout: 264 seconds]
madroach has joined #ocaml
aspiwack[m] has joined #ocaml
brunoro has joined #ocaml
octachron has joined #ocaml
octachron has quit [Client Quit]
kamog` has joined #ocaml
brunoro has quit [Ping timeout: 256 seconds]
kamog has quit [Ping timeout: 268 seconds]
gasche has joined #ocaml
AlexDenisov has joined #ocaml
<companion_cube> oh, hi gasche
<companion_cube> interesting idea
<gasche> interested in editing your own favorite type-checker change? :-)
<companion_cube> heh
<companion_cube> oh, I didn't even noticed the workaround was supposed to be annotating
<companion_cube> I just eta expanded
<companion_cube> can I comment on `Set.map` by complaining about how hard it is to add stuff to the stdlib? 0:-)
AlexDenisov has quit [Ping timeout: 250 seconds]
<gasche> anyway, back to ghost mode
<gasche> (I'm not sure whether I like wikis or markdown READMEs more; markdown readmes have pull requests which allow discussions and I like discussions)
gasche has left #ocaml ["ERC (IRC client for Emacs 24.5.1)"]
MercurialAlchemi has quit [Ping timeout: 260 seconds]
ryanartecona has quit [Quit: ryanartecona]
argent_smith has quit [Quit: Leaving.]
nomicflux has quit [Quit: nomicflux]
Denommus has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
rgrinberg has quit [Ping timeout: 252 seconds]
dmi3y has quit [Quit: dmi3y]
brunoro has joined #ocaml
agarwal1975 has quit [Quit: agarwal1975]
kamog` is now known as kamog
Sim_n has joined #ocaml
brunoro has quit [Ping timeout: 244 seconds]
brunoro has joined #ocaml
jnavila has joined #ocaml
Sim_n has quit [Quit: Leaving]
brunoro has quit [Ping timeout: 244 seconds]
brunoro has joined #ocaml
kakadu has quit [Remote host closed the connection]
zozozo has quit [Remote host closed the connection]
zozozo has joined #ocaml
jnavila has quit [Remote host closed the connection]
nomicflux has joined #ocaml
sh0t has joined #ocaml
AlexDenisov has joined #ocaml
AlexDenisov has quit [Ping timeout: 250 seconds]