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
gtrak has joined #ocaml
shinnya has joined #ocaml
gtrak has quit [Ping timeout: 264 seconds]
gtrak has joined #ocaml
silver_ has joined #ocaml
tautologico has quit [Quit: Connection closed for inactivity]
silver has quit [Ping timeout: 256 seconds]
FreeBirdLjj has joined #ocaml
cbot has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 264 seconds]
neatonk has joined #ocaml
gtrak has quit [Ping timeout: 248 seconds]
silver_ has quit [Read error: Connection reset by peer]
keep_learning has joined #ocaml
halogenandtoast has joined #ocaml
pierpal has joined #ocaml
halogenandtoast has quit [Ping timeout: 256 seconds]
pierpal has quit [Ping timeout: 240 seconds]
halogenandtoast has joined #ocaml
mfp has quit [Ping timeout: 245 seconds]
mfp has joined #ocaml
tormen_ has joined #ocaml
tormen has quit [Ping timeout: 260 seconds]
mfp has quit [Ping timeout: 264 seconds]
pierpa has quit [Quit: Page closed]
al-damiri has quit [Quit: Connection closed for inactivity]
gtrak has joined #ocaml
pierpal has joined #ocaml
pierpal has quit [Client Quit]
pierpal has joined #ocaml
halogenandtoast has quit [Ping timeout: 265 seconds]
gtrak has quit [Ping timeout: 268 seconds]
shw has joined #ocaml
FreeBirdLjj has joined #ocaml
jao has quit [Ping timeout: 240 seconds]
FreeBirdLjj has quit [Ping timeout: 240 seconds]
dreamer_ has joined #ocaml
jbrown has quit [Ping timeout: 260 seconds]
<dreamer_> Hey, why can't ocamlfind find tsdl-image, tsdl-ttf and tsdl-mixer when it can find tsdl fine ?
<dreamer_> al packages were installed with opam
<dreamer_> and I did do eval $(opam config env)
<dreamer_> and they are all in the output of opam list.. I don't get it
halogenandtoast has joined #ocaml
<xvilka> Hi! I perform a heavy operation of binary patterns search in a big strings, taking substrings recursively, can I do operation of taking a "slice" (String.sub) without copying?
<xvilka> to improve the speed
caltelt_ has joined #ocaml
<Enjolras> xvilka: check Astring or Containers String module
<Enjolras> also keep in mind it's only worth it if your slices are larger than 24 bytes.
dreamer__ has joined #ocaml
<Enjolras> else you are just adding indirection for same allocation
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
dreamer__ has quit [Quit: Page closed]
<dreamer_> oops
<dreamer_> seriously does no one know ? :'(
MercurialAlchemi has joined #ocaml
<xvilka> Enjolras: ok, thanks!
keep_learning has quit [Remote host closed the connection]
caltelt_ has quit [Ping timeout: 256 seconds]
cbot has quit [Quit: Leaving]
wklm has joined #ocaml
<Enjolras> dreamer_: did you check the META file ? maybe those sublibs have different names
<Enjolras> like tsdl.image or something
<dreamer_> oh !
<dreamer_> there's no META file on the github
M_[m][m] has joined #ocaml
<Enjolras> it's probably generated by build system
<Enjolras> check ~/.opam/<switch>/lib/tsdl-image/META or something
<Enjolras> easier option, ocamlfind list | grep tsdl
noitakomentaja has quit [Ping timeout: 250 seconds]
M_[m][m] is now known as h11
h11 has quit [Changing host]
h11 has joined #ocaml
h11 has joined #ocaml
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
cobreadmonster has quit [Quit: Connection closed for inactivity]
dreamer_ has quit [Ping timeout: 260 seconds]
tarptaeya has joined #ocaml
argent_smith has joined #ocaml
Haudegen has joined #ocaml
tarptaeya has quit [Quit: Konversation terminated!]
kvda has joined #ocaml
dakk has joined #ocaml
mk9 has joined #ocaml
monstasat has joined #ocaml
mk9 has quit [Quit: mk9]
<ZirconiumX> So today I just fixed five security bugs in an OCaml PNG decoder.
unyu has quit [Ping timeout: 256 seconds]
<kvda> I'm getting unbound module Base in fresh install of Ocaml.. any thoughts?
<ZirconiumX> kvda: Base isn't part of OCaml, you have to install it separately
<kvda> Opam says it's installed..
<ZirconiumX> What are you building with?
<kvda> opamopt
<kvda> *ocamlopt
unyu has joined #ocaml
<Armael> ZirconiumX: which one?
<ZirconiumX> Armael: ocaml-imagelib
<Leonidas> kvda: then you must let ocamlopt know where to look for base
<Enjolras> kvda: do you invoke ocamlopt directly ? it's like invoking "gcc" you need to give some path
<Enjolras> you can use the wrapper ocamlfind ocamlopt -package base -linkpkg foo.ml
<ZirconiumX> kvda: you should consider a better build system than calling ocamlopt directly, but Leonidas and Enjolras are correct
<Enjolras> (or better use a build system like jbuilder)
<Enjolras> dune*
<ZirconiumX> Ninja'd
<Leonidas> seconded dune
<kvda> Leonidas Enjolras that's probably the problem. I'm guessing I should use ocamlfind before ocamlopt?
<Enjolras> yes, if you want an original 90's building experience
<kvda> Jbuilder is the lisp-y looking one?
<Leonidas> kvda: you can, but then you're basically halfway reinventing a build system
<ZirconiumX> That still needs you to specify the package
<kvda> Leonidas gotcha
<Enjolras> kvda: yes
<Leonidas> talking about dune, how can I make `jbuilder build` build my binary but not install?
<ZirconiumX> Doesn't it do that by default?
<Leonidas> I can give it a public_name then it builds it, but I don't actually want it installed
<ZirconiumX> `jbuilder build foo.exe`
<Leonidas> ZirconiumX: yes, that's what I am doing, but I fear for bitrot so I'd rather have `jbuilder build` build all source
<kvda> Dune is a much better name than Jbuilder
* Enjolras also wishes dune would use a simple format like toml and not sexp but well
<Leonidas> also I am dumb, so I ran `jbuilder build` and then the binary and didn't realize I didn't rebuild it :)
<Leonidas> Enjolras: TOML is not exactly simple.
<kvda> hah TOML has .ini file style headings
<Leonidas> it seems to suffer from hidden complexity. not as bad as YAML but still
<Enjolras> Leonidas: it's much much easier to edit.
<ZirconiumX> True, but complexity comes on both sides of the field
<Leonidas> Enjolras: Possibly. I like sexp but also I used to be a Clojure/Schemer :)
<Enjolras> i'm still using oasis because dune format annoys me :>
<kvda> You can write s-exps in ocaml i'm guessing
<kvda> Very new to the language.
<ZirconiumX> Nope
<ZirconiumX> You need sexplib for that
<ZirconiumX> I'm still using ocamlbuild
<Leonidas> Enjolras: I used to like oasis but 8000 LOC of boilerplate that you need to regenerate is meh: https://github.com/darioteixeira/ocaml-safepass/pull/5
<kvda> Interesting, there's a library that parses s-exps then just for the config purpose?
<kvda> ZirconiumX got it
<Leonidas> yes, a sexp parser is very easy to implement
<ZirconiumX> S-exp is used as a serialisation format, kvda
<kvda> (thumbs up)
<Enjolras> Leonidas: yeah, it's definitely not perfect.
keep_learning has joined #ocaml
<kvda> What is the main difference between jbuilder and ocamlbuild i wonder
<Enjolras> dune has more documentation, better parallelism, other tricks to speed up compilation when using ppx. It also has nicer output, and it is actively developped
<Leonidas> kvda: ocamlbuild is on its way out.
<Enjolras> ocamlbuild is older, as a plus side it's more flexible for now as it's easier to write custom rules with good documentation on how to do it
<Leonidas> it used to be part of ocaml but was uncoupled
<kvda> Ahh thanks fellas. So it makes sense RWC uses jbuilder
<Enjolras> also the _tags file is finer grained
<Leonidas> Real World C?
<kvda> Leonidas yes
<kvda> haha I mean RWO
<kvda> The Original C
<Leonidas> well, RWO uses jbuilder because jbuilder was made by Jane Street and one of the authors works at Jane Street.
<kvda> Where does the name OCaml come from? I can guess the ML part
<Leonidas> kvda: the O is from object extensions
<kvda> Minsky?
<Leonidas> kvda: yes.
<ZirconiumX> Objective Categorical Abstract Meta Language
<ZirconiumX> OCaml is shorter
<kvda> Powerful name
<Leonidas> probably more like OBJECTIVE CATEGORICAL ABSTRACT META LANGUAGE :D
<Leonidas> ok, so I ended up piggybacking on the @install alias. not great but oh well
<kvda> To test you further, why is the C capitalised? :P
<Leonidas> kvda: Because Caml is its own language
<kvda> Ah that makes sense
<ZirconiumX> Before OCaml there was Caml Light
<Leonidas> Caml was implemented by Caml Heavy (in Lisp) and Caml Light (in C)
<Leonidas> And it looks like OCaml was derived from Caml Special Light
<kvda> Ah i c
<ZirconiumX> Leonidas: saying Minsky "works at" Jane Street is like saying Xavier Leroy "works on" OCaml
wklm_ has joined #ocaml
<Enjolras> well a CTO is an employee
<Leonidas> Is he CTO? I actually never knew his role at JS
<Enjolras> i assumed. I don't know exactly
<Leonidas> On linkedin it says "Software Developer" so I'd assume no.
<Leonidas> Wouldn't want to be CTO either, too much fun cameling
<Enjolras> ok. Externally he does a lot of things a CTO would do though :)
wklm has quit [Ping timeout: 245 seconds]
wklm_ has quit [Ping timeout: 260 seconds]
wklm has joined #ocaml
jao has joined #ocaml
<reynir> xavier leroy *does* work on OCaml
<ZirconiumX> reynir: of course he does, but that's somewhat underestimating his role
zolk3ri has joined #ocaml
<ZirconiumX> *understating
<reynir> :)
<discord3> <Christophe> I've read also that Minsk is CTO
<discord3> <Christophe> Minsky * (I'm taming autocorrect)
<discord3> <mseri> Leonidas, to avoid bitrot you can make it build as part of the tests or create a new alias and make it build as part of CI
mfp has joined #ocaml
<rgr[m]> Enjolras: the config format wars are unwinnable. The reason people want us to use json, while the mirage people want yaml.
<rgr[m]> Sexp satisfies nobody so it's the best :P
<rgr[m]> Leonidas: you should consider a workflow when you're using $ jbuilder exec binary.exe
<Armael> "the mirage people want yaml" really? I thought everybody agreed that it's an insane markup language
<rgr[m]> thomas and anil like it apparently
<Armael> I remember anil saying that he wrote bindings for yaml because he had to, but that it is really an insane language
<Armael> so I'm surprised
<rgr[m]> $ jbuilder build is entirely equivalent to $ jbuilder build @install so I fear that the only way for you to piggy back on $ jbuilder build is to make the binary installable or add it to the install alias manually. Something like (alias ((name install) (deps (foobar.exe)))
<rgr[m]> Leonidas: i don't really recommend that however
<rgr[m]> Armael: they're using it as a config language for irmin at a minimum i think
<Armael> ok
<rgr[m]> and yeah, being able to parse yaml from time to time seems useful :)
<reynir> I think I've heard anil say yaml is insane :)
<rgr[m]> doesn't mean he hates it :P
wklm has quit [Ping timeout: 264 seconds]
<Drup> rgr[m]: does that means toml has a chance to win ? :D
<rgr[m]> Hmm, I don't think so. At least not without complicating it a whole lot
<rgr[m]> dune relies on quite a bit of nesting for some of its advanced features
<rgr[m]> What we have seriously considered is allowing people to experiment with this stuff by letting them write in a custom format and then translating things to sexps behind the scenes. Make the errors good with this approach is quite hard however.
<Drup> rgr[m]: You could allow to dynlink a plugin that provides a parsing function to a fixed location-annotated AST
<Leonidas> rgr[m]: why would you recommend against it?
<Drup> Parsing errors are up to the parser, everything else is up to jbuilder's interpretation of the AST
<rgr[m]> Yup. It could work in theory.
<steenuil> as long as the AST has source location wouldn't it be good enough?
<Drup> (I think it's a bad idea, and everyone should use the same syntax, but everyone seem so stingy about syntax ...)
<rgr[m]> Leonidas: if you publish your package on opam, every user would have to build more than they need to install the package.
<steenuil> since ReasonML exists and its purpose is to bikeshed over the syntax of the language I figure the build system might as well let you bikeshed over the config language
<Leonidas> rgr[m]: it is an internal package that is not being published, so if that's the main concern I can live with it :-)
<Leonidas> I can also make a different alias and add it in the makefile.
<Drup> steenuil: that's a surprisingly sound argument
<kvda> steenuil ReasonML seems mostly pointless to me too
<rgr[m]> okay :) then you can do as you wish with the @install alias.
<Leonidas> rgr[m]: thanks for your support!
<rgr[m]> Build systems are the gift that keeps on giving, aren't they?
<Leonidas> doesn't jbuilder/dune support ocaml? I heard it has an ocaml interface
<Leonidas> that will solve the syntax problem once and for all!!1!
<flux[m]> I guess some have read the recent yaml blog post? Though not all points are perhaps relevant with OCaml: https://arp242.net/weblog/yaml_probably_not_so_great_after_all.html
<rgr[m]> i look forward to the new ways they will let us bike shed over things :)
<Leonidas> flux[m]: yeah, it resonated pretty heavily with me
_andre has joined #ocaml
<Leonidas> for the life of me I can't remember any of its syntax ever
<flux[m]> I think toml is nice as a configuration format, but the newer library iteration wasn't easier to use than the previous one :/. (it's been a while since I last touched the code that made use of it, though.)
<flux[m]> Leonidas: it's a problem shared by many formats that are just "plain english text documents" but really aren't 😇
<Drup> flux[m]: to.ml is not a good library
<Leonidas> flux[m]: yep *looking-at-markdown*
<flux[m]> exacly tlike markup. I always need to look up from the iterations of (a)[b] and [a](b) where a or b=url or description.
<Leonidas> Drup: why?
<Drup> last time I look, the API was just ... bad
<flux[m]> funnily matrix interpreted part of that as markup but I guess it doesn't matter to you irc folks
<Leonidas> flux[m]: yeah, or this clusterfuck you need to copypaste to get a linked CI image badge on github readmes.
<flux[m]> I'm inclined to agree with drup but I don't recall really why ;-)
<Leonidas> solution: use protobuf as configuration format *ducks*
<Leonidas> no more issues with syntax!
<Leonidas> easily processed with code :p
<flux[m]> but in protobuf everything is optional, not a good fit to OCaml!
<Leonidas> still better than msgpack
<Drup> I considered implementing a yaml parser
<Drup> I started looking at the specs and the existing implementations
<flux[m]> you could also choose to use sqlite as your configuration format..
<Drup> after like an hour, I had a headache and decide that I never wanted to use that shit ever
<Drup> the spec is insane
<Drup> Basically, anything is valid yaml, you might as well, write plain text, you'll have the same amount of syntactic garantees
argent_smith1 has joined #ocaml
<Drup> Saying that you use "yaml" as configuration format is similar to saying you use english as your contract language.
<flux[m]> must be a nice optimization when you can drop all error checking from the parser. also, think of the solved problem of not needing localized error messages!
<ZirconiumX> Why not drop all parsing, too?
argent_smith1 has quit [Read error: Connection reset by peer]
argent_smith1 has joined #ocaml
argent_smith has quit [Ping timeout: 240 seconds]
<steenuil> just dynlink the configuration
dhil has joined #ocaml
argent_smith has joined #ocaml
wklm has joined #ocaml
argent_smith1 has quit [Ping timeout: 240 seconds]
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
malina has joined #ocaml
<rgr[m]> Drup: what's fasionable now is to parse a subset of yaml - the sane part
Haudegen has quit [Remote host closed the connection]
<rgr[m]> so use the spec as an inspiration
<rgr[m]> This would be quite a useful library btw, as most people really only use a subset of yaml
<Drup> Yeah, typical web tooling
<Drup> post rationalization of sane things by saying "but that small part is midly less insane, and I use only that, so it's fine"
<Drup> insane things*
<steenuil> YAML: The Good Parts
argent_smith has quit [Read error: Connection reset by peer]
argent_smith has joined #ocaml
freyr has joined #ocaml
<rgr[m]> it's not really rationalizing, you're just trying to make use of stuff that already exists or when you don't have a choice.
<rgr[m]> I'm gonna rewrite docker-compose just because it uses yaml
<freyr> is there any ppx or magic function for type introspection, in particular I need to retrieve a type's name: something like `'a -> string`
<rgr[m]> *not
<ZirconiumX> freyr: what are you trying to achieve?
<ZirconiumX> Is this lisp-like AST manipulation?
<freyr> I want to generate docstrings for my api
<freyr> So I want to include some info about types
<freyr> I could pass typename as an argument to my api constructor
<freyr> But it would be convenient to use a macro in this case
<freyr> or ppx, or compiler magic (like format string)
<Drup> I stil don't understand what you are trying to do, except it sounds super sketchy. Do you want this function usable in ocaml or in a ppx ?
<freyr> I need it in ocaml
<Drup> Why do you need it in OCaml if you are generating docstrings for your own code ?
<freyr> I have a function of type `(module T) list -> api` where each module has type t and serialization/deserialization functions
<Drup> Ah, okay, *that* meaning of API
<freyr> I want to construct a docstring including info about each module's type t
<Drup> not an OCaml API
<Drup> add a string to your module T
<freyr> yeah, sorry for ambiguity
<ZirconiumX> So T.name or something like it
<Drup> it's the simplest, the most reliable and the one that'll take the less time
<freyr> I could, but my modules are quite generic (serializers are regular to_string)
<Drup> then take a list (name * module T)
<freyr> so a bit of metaprogramming would be nice
<ZirconiumX> I don't think metaprogramming for metaprogramming's sake is worth it
<Drup> In any cases, trying to solve that with some fancy magic introspection is going to 1) take you more time 2) not work
<freyr> In this case it looks appropriate
<Drup> OCaml doesn't have reflection, it's not java :p
<freyr> It could just generate strings in compile tyme
<freyr> time*
<ZirconiumX> And it's not C++ either
<freyr> like lisp
engil has quit [Ping timeout: 268 seconds]
<ZirconiumX> Sure, if you want to write a PPX
<Drup> A ppx wouldn't work, actually
engil has joined #ocaml
<freyr> Why is that?
<Drup> PPx are syntactic, they don't have access to typing informations
<bartholin> embed type in a firstclass module containing the type and a dummy value reifying the type
<ZirconiumX> Even though ocamlp4 is deprecated for a very good reason, is this feasible with it?
<Drup> ZirconiumX: camlp4 is also syntactic
<ZirconiumX> Fair enough
<ZirconiumX> I have never used it, so I was curious
<rgr[m]> Maybe you can do it with https://bitbucket.org/camlspotter/typpx
<rgr[m]> Sounds like ridiculous overkill tho
<Drup> it's highly non-reliable as well
<freyr> well, yeah, I'll stick to simple type tags then
<ZirconiumX> Here's a question
<ZirconiumX> If I have two polymorphic sum types, how do I produce an output type of their union
<Drup> `[> a | b]` ?
<ZirconiumX> For example if I wanted to return error conditions, and then use pattern matching to ensure I handle all error cases
<freyr> fun result is covariant, so yes
malina has quit [Ping timeout: 260 seconds]
silver has joined #ocaml
<ZirconiumX> I think the type signature I'm looking for is roughly: ('a, 'b) result -> ('a -> ('c, 'd) result) -> ('c, [sum of states of 'b and 'd]) result
<ZirconiumX> It's essentially a bind operator
<reynir> 'b and 'd are not polymorphic variants
<ZirconiumX> Mmm, I know
<ZirconiumX> I don't know how to express that as a type restraint
<ZirconiumX> While still keeping the code generic
<reynir> I don't know, sorry
<octachron> The union of types is not a type in OCaml. You should just have 'b = 'd
wklm_ has joined #ocaml
Haudegen has joined #ocaml
<octachron> Then for polymorphic variants, ``Error `A >>= (fun _ -> Error `B)`` will yield ``b = [> `A|`B]``
wklm has quit [Ping timeout: 240 seconds]
monstasat has quit [Quit: Ухожу я от вас]
wklm_ has quit [Ping timeout: 256 seconds]
wklm has joined #ocaml
<Leonidas> heh, caml/misc.h compiles _MSC_VER on Linux and -Wundef warns about it
<theblatte> octachron: woah, TIL how to write ``code with `backticks``, great :D
sgnb has quit [Remote host closed the connection]
dhil has quit [Ping timeout: 245 seconds]
jao has quit [Ping timeout: 265 seconds]
flodin1 has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #ocaml
ziyourenxiang has joined #ocaml
loli has joined #ocaml
gtrak has joined #ocaml
jbrown has joined #ocaml
mk9 has joined #ocaml
gtrak has quit [Ping timeout: 240 seconds]
pierpal has quit [Ping timeout: 264 seconds]
MercurialAlchemi has quit [Ping timeout: 256 seconds]
dhil has joined #ocaml
spew has joined #ocaml
wklm has quit [Ping timeout: 268 seconds]
Haudegen has quit [Remote host closed the connection]
wklm has joined #ocaml
malina has joined #ocaml
Haudegen has joined #ocaml
gtrak has joined #ocaml
<xvilka> why Bytes. or String. doesn't have map/iter/fold?
<xvilka> even in Core/Base library
<Drup> String has map and iter
<Drup> (not fold, though)
<xvilka> apparently it has foldi
<xvilka> and fold
<xvilka> the one from Base or Core
<Drup> not in the stdlib
<xvilka> yeah, most of people use Base or Core probably
<xvilka> because of RWO
<Drup> and OCaml is only used to make Coq, surely
FreeBirdLjj has joined #ocaml
<Drup> (/s, in case that was unclear)
TheLemonMan has joined #ocaml
halogenandtoast has quit [Ping timeout: 260 seconds]
jao has joined #ocaml
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
shinnya has quit [Ping timeout: 264 seconds]
pierpal has joined #ocaml
lokydor has quit [Ping timeout: 240 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
lokydor has joined #ocaml
weird_error has joined #ocaml
Haudegen has quit [Remote host closed the connection]
dhil has quit [Ping timeout: 256 seconds]
malina has quit [Ping timeout: 265 seconds]
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
neatonk has quit [Quit: neatonk]
al-damiri has joined #ocaml
neatonk has joined #ocaml
ziyourenxiang has quit [Ping timeout: 276 seconds]
neatonk has quit [Ping timeout: 265 seconds]
freyr has quit [Remote host closed the connection]
Haudegen has joined #ocaml
dakk has quit [Remote host closed the connection]
neatonk has joined #ocaml
dhil has joined #ocaml
dedgrant has joined #ocaml
okeuday_bak has joined #ocaml
<okeuday_bak> Hi, why does a native compiled ocaml executable open its file while it is executing?
<ZirconiumX> What do you mean?
<okeuday_bak> ZirconiumX: An ocaml executable that has been compiled with the native compiler, after it is executing it, while it is executing, I am unable to replace the file on the filesystem and get the error "Text file busy", then when I check lsof it shows it has opened its executable file
<ZirconiumX> Which OCaml version?
<okeuday_bak> ZirconiumX: 4.05.0
<ZirconiumX> I can't reproduce it on 4.06.1, so I was wondering
<okeuday_bak> ZirconiumX: ok, perhaps it is something that no longer occurs, just was curious about what it was doing, trying to make sure the binary isn't trying to achieve consciousness or something
<ZirconiumX> If it's trying to achieve consciousness, its executable being open is the least of your worries
<okeuday_bak> true :-)
mk9 has quit [Quit: mk9]
dhil has quit [Ping timeout: 240 seconds]
halogenandtoast has joined #ocaml
halogenandtoast has quit [Ping timeout: 248 seconds]
fwx has joined #ocaml
neatonk has quit [Ping timeout: 240 seconds]
fwx has quit [Client Quit]
jnavila has joined #ocaml
roygbiv has joined #ocaml
neatonk has joined #ocaml
jrslepak has quit [Remote host closed the connection]
jack5638 has quit [Ping timeout: 264 seconds]
larhat has joined #ocaml
jack5638 has joined #ocaml
rostero_ has joined #ocaml
Jesin has joined #ocaml
roygbiv has quit [Quit: ™]
Haudegen has quit [Remote host closed the connection]
<bartholin> Is it possible to do something like type t = [> `A | `B]? It does not seem to work.
<octachron> type 'a t = [> `A | `B ] as 'a
<def`> or type t = private [> `A | `B ] (* depending on what you are trying to express *)
ygrek has joined #ocaml
<bartholin> More precisely, what I want to do is like type t = [ `A ] type t' = [ `A | `B ] let foo (x : t') : int = 0 let x : t = `A let _ = foo x
<bartholin> By contravariance of the domain, it should work, but it don't.
<def`> let foo (x : [>t']) : int = 0
<def`> coercion is explicit otherwise, you could write let _ = foo (x : t :> t')
<bartholin> oh
pierpal has quit [Quit: Poof]
<def`> (erf I realize it won't work :))
pierpal has joined #ocaml
<bartholin> let _ = foo (x :> t') works
jnavila has quit [Ping timeout: 240 seconds]
pierpa has joined #ocaml
Haudegen has joined #ocaml
jnavila has joined #ocaml
jnavila has quit [Remote host closed the connection]
<bartholin> Is there a way to make the explicit coercion somewhat implicit?
<bartholin> my question is stupid
mengu has joined #ocaml
larhat has quit [Quit: Leaving.]
wklm has quit [Ping timeout: 265 seconds]
<bartholin> I tried to mix phantom types with subtyping, but I am quite unsatisfied because it is very verbose https://p.teknik.io/KKU1j
<bartholin> (I have to explicitely cast the argument before calling the function)
Anarchos has joined #ocaml
<Anarchos> How to debug errors in vim due to merlin execution ?
al-damiri has quit [Quit: Connection closed for inactivity]
<copy`> `:messages` and `:MerlinDebugEnable`
<octachron> bartholin, you should probably have `val read: [<readable] file -> string`
<Anarchos> copy` they appear just when i launch vim
<bartholin> YES
<bartholin> thanks octachron
<bartholin> it werks
<copy`> Anything interesting in `:messages`?
<Anarchos> E492: Not an editor command: MerlinDebugEnable
<Anarchos> copy` u'invalid arguments'
<copy`> Looks like you can also set `let g:merlin_debug=1` in your vimrc and it'll record everything to view in `MerlinDebugEnable` later
mal``` has joined #ocaml
tormen_ has quit [Ping timeout: 268 seconds]
ZirconiumY has joined #ocaml
<Anarchos> copy` i have no «MerlinDebugEnable» command
<octachron> bartholin, note that you can also reverse the variance of 'a file to -'a file and use directly the property `R, `W: having a contravariant phantom type means that you can drop property rather than add them
companion_square has joined #ocaml
tormen has joined #ocaml
mal`` has quit [Quit: Leaving]
ZirconiumX has quit [Ping timeout: 256 seconds]
companion_cube has quit [Ping timeout: 256 seconds]
wklm has joined #ocaml
companion_square is now known as companion_cube
ZirconiumY is now known as ZirconiumX
weird_error has quit [Quit: weird_error]
neatonk has quit [Ping timeout: 245 seconds]
<Anarchos> copy` i finally manage to get merlin working !
<Anarchos> copy` i forgot to use separate sharedir and vimdir on my exotic OS
rostero_ has quit [Quit: Connection closed for inactivity]
roygbiv has joined #ocaml
weird_error has joined #ocaml
weird_error has quit [Client Quit]
freyr has joined #ocaml
_andre has quit [Ping timeout: 256 seconds]
_andre has joined #ocaml
gtrak has quit [Ping timeout: 260 seconds]
freyr has quit [Remote host closed the connection]
kamog has joined #ocaml
_andre has quit [Quit: leaving]
Anarchos has quit [Quit: Vision[0.10.2]: i've been blurred!]
CcxWrk has quit [Ping timeout: 256 seconds]
CcxWrk has joined #ocaml
halogenandtoast has joined #ocaml
Haudegen has quit [Remote host closed the connection]
shinnya has joined #ocaml
halogenandtoast has quit [Ping timeout: 268 seconds]
mk9 has joined #ocaml
okeuday_bak has quit [Quit: Leaving.]
kvda has joined #ocaml
caltelt_ has joined #ocaml
mengu has quit [Remote host closed the connection]
pierpal has quit [Ping timeout: 276 seconds]
kvda has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
argent_smith has quit [Quit: Leaving.]
kvda has joined #ocaml
roygbiv has quit [Quit: ™]
cbot has joined #ocaml
wklm has quit [Ping timeout: 265 seconds]
kamog has quit [Remote host closed the connection]