companion_cube changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.04.0 release notes: http://ocaml.org/releases/4.04.html | Try OCaml in your browser: http://try.ocamlpro.com | Public channel logs at http://irclog.whitequark.org/ocaml | https://github.com/ocamllabs/compiler-hacking/wiki/6th-june-Hackaton:-temporary-organization-page
infinity0_ has joined #ocaml
infinity0 has quit [Killed (rajaniemi.freenode.net (Nickname regained by services))]
infinity0 has joined #ocaml
infinity0_ is now known as infinity0
infinity0 has quit [Remote host closed the connection]
infinity0 has joined #ocaml
infinity0 has quit [Remote host closed the connection]
infinity0 has joined #ocaml
infinity0 has quit [Remote host closed the connection]
sgronblo has joined #ocaml
infinity0 has joined #ocaml
infinity0 has quit [Remote host closed the connection]
infinity0 has joined #ocaml
infinity0 has quit [Remote host closed the connection]
infinity0 has joined #ocaml
infinity0 has quit [Remote host closed the connection]
segmond has joined #ocaml
ziyourenxiang has quit [Ping timeout: 246 seconds]
al-damiri has quit [Quit: Connection closed for inactivity]
mfp_ has quit [Ping timeout: 240 seconds]
silver has quit [Read error: Connection reset by peer]
mengu has quit [Quit: Leaving...]
raphaelss has quit [Ping timeout: 240 seconds]
ygrek__ has quit [Ping timeout: 246 seconds]
sepp2k has quit [Quit: Leaving.]
enterprisey has joined #ocaml
shinnya has quit [Ping timeout: 245 seconds]
copy` has quit [Quit: Connection closed for inactivity]
agravier has joined #ocaml
samrat has joined #ocaml
sgronblo has quit [Ping timeout: 260 seconds]
jao has quit [Ping timeout: 268 seconds]
pierpa has quit [Ping timeout: 260 seconds]
jlam_ is now known as jlam
olibjerd has joined #ocaml
enterprisey has quit [Remote host closed the connection]
pete_8 has joined #ocaml
pete_8 has quit [Ping timeout: 240 seconds]
infinity0 has joined #ocaml
MercurialAlchemi has joined #ocaml
sgronblo has joined #ocaml
pete_8 has joined #ocaml
raphaelss has joined #ocaml
pete_8 has quit [Ping timeout: 255 seconds]
enterprisey has joined #ocaml
olibjerd has quit [Ping timeout: 255 seconds]
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 260 seconds]
Mercuria1Alchemi has joined #ocaml
aggelos_ has quit [Ping timeout: 260 seconds]
aggelos_ has joined #ocaml
madroach has quit [Ping timeout: 260 seconds]
segmond has quit [Quit: l8r]
madroach has joined #ocaml
olibjerd has joined #ocaml
pete_8 has joined #ocaml
pete_8 has quit [Ping timeout: 260 seconds]
ygrek__ has joined #ocaml
Simn has joined #ocaml
ontologiae_ has joined #ocaml
zpe has joined #ocaml
samrat has quit [Ping timeout: 240 seconds]
enterprisey has quit [Quit: Leaving]
raphaelss has quit [Remote host closed the connection]
ontologiae_ has quit [Ping timeout: 255 seconds]
agravier has quit [Quit: agravier]
pete_8 has joined #ocaml
andreas_ has joined #ocaml
mpenet has joined #ocaml
jack5638 has quit [Ping timeout: 240 seconds]
jack5638 has joined #ocaml
AlexRussia has quit [Ping timeout: 246 seconds]
inr_ is now known as inr
pete_8 has quit [Ping timeout: 260 seconds]
govg has joined #ocaml
govg has quit [Client Quit]
sgronblo has quit [Ping timeout: 246 seconds]
ygrek__ has quit [Ping timeout: 240 seconds]
sgronblo has joined #ocaml
samrat has joined #ocaml
<adrien> morning
<adrien> does anyone know if ocsigen supports HTTP/2 ?
<adrien> I'm reading (again) about the ability to push data to the client without waiting for it to request it and I'm thinking that ocsigen should be able to determine pretty well what to push
toolslive has joined #ocaml
Muzer has quit [Ping timeout: 260 seconds]
Cypi_ is now known as Cypi
Merv_ has quit [Remote host closed the connection]
Merv_ has joined #ocaml
govg has joined #ocaml
govg has quit [Client Quit]
maker has quit [Ping timeout: 260 seconds]
maker has joined #ocaml
mpenet has left #ocaml ["ERC (IRC client for Emacs 26.0.50.2)"]
<Drup> adrien: it doesn't, we use comet for that
<flux> I think HTTP/2 goes a bit further than that..
<flux> I imagine ocsigen doesn't send ie. jpegs over comet
olibjerd has quit [Quit: olibjerd]
Muzer has joined #ocaml
<adrien> Drup: but that cannot help the initial load
<adrien> and I was thinking about pushing the initial JS, CSS and HTML
<adrien> when I look at pageload speeds for prose, there's this massive latency at the beginning
<adrien> it's a third of the total time at least
<Geekingfrog> adrien: http2/push can actually be quite tricky. See https://jakearchibald.com/2017/h2-push-tougher-than-i-thought/ which is a good article on the details of this tech.
<Drup> adrien: well, I mean, if you really want it, you can add it to cohttp :p
<adrien> Drup: :D
<adrien> Geekingfrog: interesting, thanks
<adrien> from a cursory glance, it seems a bit immature today client-side
<Geekingfrog> There are lots of details around caching especially.
<Geekingfrog> What makes it hard is that it can make the page load *slower* if applied incorrectly
<Geekingfrog> So a hard and fast rule for ocsigen is probably going to be difficult to find
<adrien> I'm most interested in the initial page load and for other things, I think Comet should do it
mfp_ has joined #ocaml
sgronblo has quit [Ping timeout: 255 seconds]
<orbitz> is there godo documentation somewhere on why we need (type a) and type a. notations in functions? FOr example, can I replace type a. with 'a. in all cases?
<Drup> the manual is actually decent on that
<Drup> (because octachron wrote it, mostly)
<orbitz> Hrm I'm having trouble finding it. I type a. first comes up in the GADTs section in language extensions but it doesn't relaly explain how it's differnt from 'a. from what I cansee. Do you have a specific secetion you're thinking of?
KeyJoo has joined #ocaml
<Drup> it should be in language extensions, yes
<orbitz> Drup: is there a idfference between type a. and 'a. ?
<orbitz> I guess it's kind of saying "in this context anything with a is the same type and not possibly different types in each recursive call"?
<orbitz> I see it in the GADT exampel where theyc all eval twice
nicoo has quit [Remote host closed the connection]
nicoo has joined #ocaml
<octachron> orbitz, "type a." makes the type a universally quantified (like "'a.") *and* locally abstract which is mostly useful in the context of GADTs
<orbitz> Ohh, so it's like I have a type a but I don't know what it actually is. Just like a type a in a sig
<octachron> orbitz, another point is that you can in almost all cases replace "'a." with "type a." but not the other way around.
<octachron> (the exception being some corner cases with polymorphic variants)
pete_8 has joined #ocaml
pete_8 has quit [Ping timeout: 240 seconds]
<Drup> octachron: the exception is actually everything that involves subtyping :p
samrat has quit [Ping timeout: 258 seconds]
samrat has joined #ocaml
<octachron> Drup: ah yes, so polymorphic variants and the object system; I admit that corner case was a bit too strong here.
dhil_ has joined #ocaml
samrat has quit [Ping timeout: 240 seconds]
ziyourenxiang has joined #ocaml
sgronblo has joined #ocaml
KeyJoo has quit [Ping timeout: 260 seconds]
barcabuona has joined #ocaml
sh0t has joined #ocaml
<barcabuona> hey guys ive got an annoying issue
<barcabuona> i have 2 recursive functions in 2 files, eval and cval. cval calls eval.
<barcabuona> usually i do #use "eval.ml";; #use "cval.ml";; and that solves the issue
<barcabuona> but now i need eval to also call cval
<barcabuona> so i'd need a "let rec eval = ... and rec cval = ...." or something
<barcabuona> but they're in 2 different files and i can't put them in a same file seeing as they're pretty big
<barcabuona> so what can i do?
_andre has joined #ocaml
<octachron> option 1: you can use a reference to predeclare the functions "let eval_ref = ref (fun _ -> assert false)…" use these reference to define the mutually recursive functions and then fill the reference with the actual value functions
<toolslive> you can pass in the continuation function as a parameter.
<barcabuona> octachron: that looks like what i want
<barcabuona> toolslive: that's what i came up with but it doesn't look too good
<barcabuona> how does ref work?
<toolslive> 'a ref is actually a record { mutable cell: 'a }. no magic there
<barcabuona> ah ok
<barcabuona> so ref (whatever) and then modify ref
<barcabuona> ok
<barcabuona> but then to use a function in a ref does everything have to change?
MercurialAlchemi has quit [Ping timeout: 246 seconds]
<barcabuona> nice
<barcabuona> thx
zpe has quit [Remote host closed the connection]
dhil_ has quit [Ping timeout: 240 seconds]
chelfi has quit [Quit: WeeChat 1.7.1]
sgronblo has quit [Read error: Connection reset by peer]
zpe has joined #ocaml
sz0 has joined #ocaml
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 258 seconds]
shinnya has joined #ocaml
olibjerd has joined #ocaml
alfredo has joined #ocaml
alfredo has quit [Client Quit]
KeyJoo has joined #ocaml
dhil_ has joined #ocaml
<barcabuona> is there any ocaml builtin that can convert a list to string and viceversa?
<Drup> not built in, and it's considered bad practice anyway
<barcabuona> i just need it for parsing
<barcabuona> is it in any of the main libraries?
<Drup> probably all of them, under "explode" or "to_list"
AlexRussia has joined #ocaml
sgronblo has joined #ocaml
<orbitz> octachron: thanks you for the ingo
<orbitz> barcabuona: what representation does the list have?
raphaelss has joined #ocaml
chelfi has joined #ocaml
Merv_ has quit [Remote host closed the connection]
dhil_ has quit [Ping timeout: 246 seconds]
sgronblo has quit [Ping timeout: 240 seconds]
TheLemonMan has joined #ocaml
barcabuona has quit [Ping timeout: 240 seconds]
zpe has quit [Remote host closed the connection]
sgronblo has joined #ocaml
barcabuona has joined #ocaml
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
zpe has joined #ocaml
silver has joined #ocaml
ryanartecona has joined #ocaml
jao has joined #ocaml
yomimono has joined #ocaml
jao has quit [Ping timeout: 240 seconds]
dhil_ has joined #ocaml
jao has joined #ocaml
sepp2k has joined #ocaml
agravier has joined #ocaml
flx_ has joined #ocaml
flux has quit [Read error: Connection reset by peer]
flx_ is now known as flux
ryanartecona has quit [Quit: ryanartecona]
segmond has joined #ocaml
raphaelss has quit [Ping timeout: 260 seconds]
zpe has quit [Remote host closed the connection]
flx_ has joined #ocaml
flux has quit [Ping timeout: 240 seconds]
flx_ is now known as flux
dhil_ has quit [Ping timeout: 255 seconds]
MK__ has joined #ocaml
ryanartecona has joined #ocaml
flx_ has joined #ocaml
flux has quit [Ping timeout: 255 seconds]
flx_ is now known as flux
flx_ has joined #ocaml
zaquest has quit [Remote host closed the connection]
samrat has joined #ocaml
MercurialAlchemi has joined #ocaml
zaquest has joined #ocaml
flux has quit [Ping timeout: 255 seconds]
flx_ is now known as flux
<barcabuona> orbitz: it's a list of strings and a list of my own type
Mercuria1Alchemi has quit [Ping timeout: 255 seconds]
FreeBirdLjj has joined #ocaml
Merv_ has joined #ocaml
<barcabuona> Drup: what do you mean it's in all the libraries?
<barcabuona> is there no ocaml function to pick up a string and turn it into a list somewhere handy?
<octachron> barcabuona, not in the small compiler standard library, since it is a bad api, it may exist in extended standard library
<barcabuona> everything is bad when it's not in the stdlibs
<octachron> in this case, converting string to a list of character is simultaneously inefficient and make wrong assumptions about text: a human readable text is not a sequence of characters
<Drup> ascii characters*
<barcabuona> octachron: im not converting a string to a list of chars, though i think the fact i can't use a string like a list of chars is absolutely insane in ocaml
<toolslive> anyway, since there is String.iter, it's a few lines of code, if you really want it
<barcabuona> im converting a string of 'a to "[ a1; a2 ]"
<barcabuona> actually
<barcabuona> im doing the opposite
<barcabuona> "[a1;a2]" -> [a1;a2]
<octachron> Drup, beyond ascii the definitions of characters becomes fuzzy when you don't forget about ligatures, ideograms, abugida, abjad and diacritics
<Drup> Amusingly, the fact that string = char list in Haskell is considered one of the biggest mistake in the standard library by absolutely everyone
<toolslive> so it's not chars, but tokens you're after?
<barcabuona> Drup i dunno man
<barcabuona> python is pretty popular
<barcabuona> not like you can't use a string like an array
<barcabuona> and since these are functional languages and they excel in pattern matching with recursion, i should well be allowed to do so on a string
freusque has quit [Quit: WeeChat 1.7]
<octachron> barcabuona, you can pattern match on strings and you can pattern match on characters
<orbitz> barcabuona: what you're after doesn't exist. Are you speifically after that rerpesetnation or is any way to convert a list of something to a series of bytes and back again sufficient?
<barcabuona> orbitz: no im looking for something like an in-build parser. like int_of_string "3"
<barcabuona> but for lists
<barcabuona> octachron: yeah i get it but strings are sequences of characters so if i want to pattern match a string like a list i should be allowed
<barcabuona> and if i want to pattern match it against another string that too
<barcabuona> treating characters like strings would do it
<barcabuona> so you basically always pattern match against strings. and then you can go ahead and iter over the string one char at a time or 2 at a time
<barcabuona> like python
<orbitz> barcabuona: yes, that does not exist.
<octachron> barcabuona, strings are sequence of characters? then how many characters are there in "ерафими многоꙮчитїи" ?
<barcabuona> octachron: well that's a representation man
<barcabuona> it's actually when you put some characters together they can be represented as maybe an accented o or something
<barcabuona> you could always utf-iter over a string
<barcabuona> and it would be a list of strings
<barcabuona> like i was saying earlier, which is better than just treating a string as a list of chars
<barcabuona> orbitz: alright thanks i guess i'll do without for now
<orbitz> barcabuona: treating a string as a list of strings has a lot of downsides.
<barcabuona> like?
<Drup> it's pretty much an efficiency disaster
<barcabuona> now who was talking about efficiency
<barcabuona> im talking about user interface
<barcabuona> you can go ahead and treat that sucker as you wish, as long as i the benevolent programmer can use it as I wish
<octachron> barcabuona, anyway if you want to do simple tokenisation, a regexp library or maybe even String.split_on_char might be enough
<barcabuona> i mean i think python actually uses 20 bytes for ints or somethingl ike that
<Drup> barcabuona: except there are plenty of ways to write the same function, almost as conveniently and that don't suffer the same problem
<barcabuona> octachron: i have been doing that actually, regex+split_on_char. but then there's the issue i have to go ahead and make 2 representations for lists and it gets annoying pretty fast
<barcabuona> tho i guess it's the only way
<orbitz> barcabuona: it's very memory inefficient.
<orbitz> And you get the same UX behaviour just by having a sequence of chars that you cannot randomly index into
<Drup> and after that you get people that are like "Why is haskell 10 times slower than python at doing <trivial operation on strings> ?". Well, that's why.
<orbitz> It's a problem in Erlang as well, which chose the same represenation. So two examples of it not really working out well.
<barcabuona> im not sure that's why
<barcabuona> ui is different from representation
<barcabuona> i also know haskell has multiple string types
<barcabuona> no idea why
<barcabuona> ocaml is for sure faster than most languages
<orbitz> Because it took them awhile to find the one(s) that doen't suck.
<barcabuona> but its stdlib sucks balls
<barcabuona> i mean you don't just need a fast language, you need a _nice_ language
<orbitz> Yes, the stdlib is known to be weak. There are a few options, I tend to prefer containers.
<barcabuona> otherwise i'd be writing this sucker in C
<Drup> barcabuona: sure, that's why we have several extensions. You ask about string = char list, we are explaining to you what it's a terrible idea and that nobody uses it, except in languages that made that mistake in their standard library and can't change it anymore.
jnavila has joined #ocaml
<orbitz> And wish they could.
<barcabuona> Drup: are you saying python has made a mistake then? string = string list if you wish in python
<barcabuona> or char list
<barcabuona> or whatever
<orbitz> FOr starters, list in python is nothign like list in Ocaml.
<barcabuona> also extensions that don't make it into the stdlib die
<barcabuona> im just talking about ui that's all
<barcabuona> not about how ocaml implemented it
<barcabuona> you don't use a language because of the implementation?
<orbitz> I'm not sure what you think the difference is
<barcabuona> you use it because it's got handy syntax
<barcabuona> im talking about handy syntax man
<orbitz> are you saying that "type string = string list" is what you want? Because that is how it's being interpreted.
dhil_ has joined #ocaml
<barcabuona> why should i care about how ocaml designed it?
shinnya has quit [Ping timeout: 268 seconds]
raphaelss has joined #ocaml
<barcabuona> strings are lists of chars 99% of the time. 100% of the time lists of strings
<orbitz> barcabuona: you are stating what the implementation should be if you are saying string should eb string list, whatever that means
<octachron> barcabuona, python list are ill-named array
<orbitz> barcabuona: I dont' think you are communicating yourself very well, unfortunately.
<barcabuona> ok
<Drup> If by "UI", you mean "API", then you have iterations and all sort of array-like operation on strings too.
<barcabuona> yeah that's what i mean
<barcabuona> so if a functional language's strong suit is pattern matching
<barcabuona> then that pattern matching needs to be fucking all over the language
<Drup> you don't have pattern matching, because pattern matching in OCaml is a tool to inspect the actual representation (we don't have pattern synonyms, this could be handy, but we don't have them)
<barcabuona> so match s with "hello" -> ... | "world" -> ...
<barcabuona> and also match s with c1::rest -> ...
<barcabuona> but also match s with s1::rest -> ...
<orbitz> barcabuona: YOu can certainly convert a string into a list of UChar.t if you waht
<barcabuona> because the language needs to bend itself around the programmer
<orbitz> want*
<barcabuona> because nobody wants to convert strings around with implode/explode which is not even in the freaking standard library
<barcabuona> because of course it's not efficient
<Drup> That's not nearly as easy to define as you think it is
<orbitz> The specifics you're asking for have unfortunately been tried in langauges before, as previously stated, and found to be problematic, as previously stated.
<barcabuona> but if it's not efficient then provide an efficient way to iter over a string, but with the natural langauge constructs like pattern matching
<barcabuona> am i being clear now?
<Drup> Why do you think pattern matching is the ultimate langage construct ?
<Drup> I mean, String.iter and String.fold are nice too.
<Drup> use them
<barcabuona> Drup: because i come from imperative programming and it is
<barcabuona> compared to that
<orbitz> barcabuona: have you looked at something like sedlex?
<barcabuona> Drup: if it was easy to define then why are we using decades of years old languages?
<barcabuona> it's a compiler's/interpreter's job to handle that stuff
<barcabuona> orbitz: im not really looking to do this righ tnow
<barcabuona> it was just a discussion
<orbitz> Just looking to complain about it righ tnow?
<barcabuona> this all stems from being able to do list_of_string
<barcabuona> orbitz: no it just came up
<barcabuona> but why not
<barcabuona> languages need improvement sometimes
<barcabuona> i come from extensive usage of python and C
<orbitz> barcabuona: Your tone make sit really hard to help you as you don't seem all that intersted in a genuine conversation. You don't seem to have conceding a single point or asked any follow-up questions as to why other langauges found a list representation problematic.
<barcabuona> no i am
<barcabuona> but what im saying is
<barcabuona> im the programmer
<barcabuona> get it?
<barcabuona> anyway i am also interested in the implementation ofc
<orbitz> I'm a programmer to.
<orbitz> too*
<barcabuona> so i mean
<Drup> And you have no idea how to design a language that is not a bundle of magic, yeah, I get it :p
<barcabuona> Drup: wut?
<barcabuona> alright os
<barcabuona> pretend your strings are arrays?
<barcabuona> then you can offer different interfaces to iter over them
<barcabuona> like one char at a time
<barcabuona> the whole string at a time (which is just one iteration)
<barcabuona> or maybe 2 chars at a time
<orbitz> barcabuona: if your best response is "but i'm the programmer", we aren't going to make much headway. There are plenty of things to complain about in Python and C that have not been changed over the years, but they are necessiarly a net-positive change. Perhaps you could spend some time understanding why Ocaml is the way it is and then once you have that you can propose changes.
<barcabuona> or an utf char at a time
<barcabuona> it doesn't seem all that difficult honestly but i've never tried
<orbitz> Uutf lets you iterate over a UTF encoded string one char at a time
<theblatte> famous last words
<def`> :D
<barcabuona> orbitz: i agree, but of course i start from what i know.
<barcabuona> for example i was saying the stdlib should be big
<orbitz> barcabuona: there are reasons why it isn't
<barcabuona> at least offer all basic operations on all basic types
<barcabuona> yet it is a challenge to be able to iter like i just explained over a string in many languages
<barcabuona> which is baffling
<theblatte> but not in OCaml, fortunately :D
<Drup> barcabuona: are you aware why python3 happened ?
<barcabuona> and i think it is the power in the popularity of python
sz0 has quit [Quit: Connection closed for inactivity]
<barcabuona> they had an issue with strings
<theblatte> want to iter over chars -> String.iter; want to iterate over utf -> Uutf.whatever
<Drup> One of the reason was that there handling of "iter over utf8 chars" was so broken they had to remake the API completely
<barcabuona> but they fixed that issue didn't they?
<orbitz> Python's large standard library is not entirely a win. The quality is very inconsistent, for example.
<orbitz> Python3 is either alive and well or dead depending on who you ask
<barcabuona> theblatte: ok thanks. this is what im talking about. want to iter over 2 chars?
<barcabuona> like step 2?
<barcabuona> all this is native python guys
<Drup> String.fold
<barcabuona> for c in s
<barcabuona> for c in s[::2]
<barcabuona> s in ['hello','world']
<barcabuona> there you go
pete_8 has joined #ocaml
<barcabuona> no 3 extensions
<barcabuona> you see?
<orbitz> that functionality is very costly at the langauge level
<barcabuona> may be
<theblatte> that's great mate, but python is more dynamic and so by nature does crazy magic things like this that OCaml by design does not want to do
<barcabuona> python is very slow
<orbitz> We do have List.mem anyways, or whatever it's called
<barcabuona> are you saying i can't have a language
<companion_cube> there's an iterator on codepoints in Uutf.
<barcabuona> that is exactly like python
<barcabuona> but static typing
<theblatte> indeed not
<orbitz> No, I'm saying nobody here has an interset in that language.
<companion_cube> barcabuona: it's called typescript ;-)
<orbitz> So you're compalining to teh wrong people.
<barcabuona> i mean i don't think the only way to pull this off is by having a slow implementation
<barcabuona> python is slow beacuse dynamic typing
<Drup> barcabuona: yet, it is.
<barcabuona> Drup: why?
<barcabuona> ok so
<barcabuona> let's do this in c shall we?
<barcabuona> let's go indepth
<orbitz> barcabuona: My usage of 'cost' was not even about speed. But getting "foo in bar" to make sense in a langauge requires a lot of crap.
<barcabuona> char* s
<theblatte> (no we shan't)
<barcabuona> you can have a for look 1 char at a time
<def`> (boarf, it's just adhoc polymorphism, you can encode that in scala, haskell, coq... not sure that you want though :P_
<companion_cube> orbitz: hmm, it could be well designed with typeclasses
<barcabuona> you can have a for look 2 chars at a time and to return a string you just return a pointer which can only iterate up to 2 positions
<orbitz> companion_cube: like I said, a lot of crap :)
<companion_cube> impl Contains<Str> for Str
<Drup> def`: they do have monadic comprehensions in scala and haskell
<companion_cube> I disagree that typeclasses are crap
<Drup> although nobody uses them in haskell except beginners
<companion_cube> I direly miss them
<orbitz> I'm being slightly silly. But I find type classes add a layer of indirection that can make programs much harder to gork.
<def`> it reminds me that modular implicits should come with a "Php" module.
<Drup> companion_cube: I don't miss type classes, not in how they are implemented in Haskell
<def`> Drup: I am interested to know why.
<companion_cube> I'd like modular implicits even more, sure
<companion_cube> but still
<orbitz> I'm terrified modular implicits will turn Ocaml into a langauge where I have no idea what is beign executed when I read the code.
<barcabuona> alright need to finish up on some things. have a good one guys. we need a big stdlib in ocaml ;)
<companion_cube> def`: Php? Like with all sorts of crazy implementations? :D
<Drup> def`: the exact difference between modular implicits and typeclasses :p
<companion_cube> can't wait for that
<orbitz> barcabuona: YOu're not the first person to raise that, don't expect much. And there are multipl eoptions for you to act as a stdlib
<companion_cube> barcabuona: everyone agrees on that; everyone disagrees on which one
<Drup> (you know, the part with global namespaces and orphaned instances)
<companion_cube> you could have scoped typeclasses without modules…
<def`> Drup: ah, that... I am not decided yet :P
FreeBirdLjj has quit [Remote host closed the connection]
<def`> companion_cube: but haskell stdlib correctness assume uniqueness of instance
FreeBirdLjj has joined #ocaml
Mat__ has joined #ocaml
<Drup> which is highly anti-modular
<companion_cube> yeah, yeah
<companion_cube> I was just saying that typeclasses could be clean, and they are a nice way of making stuff like `foo in bar` or `for foo in bar…` work
<companion_cube> because we also lack iterators
<companion_cube> (actually I don't want to think about this anymore)
<def`> :)
<Mat__> Hi, I would like to use Tls_lwt in this way so instead of sending tls data on the tcp socket, pass them to a function, and recieve the response by calling another. What is the best option in doing it?
<orbitz> Mat__: so you want to take encrypted bytes and get unencrypted bytes out?
FreeBirdLjj has quit [Ping timeout: 240 seconds]
<Mat__> I want to do this: use tls libary to do all tls handling, except that communicate with a function instead of a remote server over tcp. The middleman doesn't need to know the content, and only passes the encrypted content to a different channel
<orbitz> Mat__: If you want a pure function, the tls package offers that
<Mat__> Can you point me to that please?
<orbitz> Mat__: opam info tls
<orbitz> Tls_lwt is an effectful wrapper of the pure API
agravier has quit [Quit: agravier]
agravier has joined #ocaml
sh0t has quit [Remote host closed the connection]
ryanartecona has quit [Quit: ryanartecona]
agravier has quit [Quit: agravier]
al-damiri has joined #ocaml
olibjerd has left #ocaml [#ocaml]
olibjerd has joined #ocaml
yomimono has quit [Ping timeout: 255 seconds]
ryanartecona has joined #ocaml
SpiceGuid has joined #ocaml
<orbifx[m]> How are name collissions for open variants dealth with?
<orbifx[m]> If module A and module B both define 'Common ?
<companion_cube> they are compatible
<companion_cube> that's the point ;)
<Mat__> What types of file descriptors for io ocaml supports? I want to create a file desciptor to create io channel for two functions to communicate
olibjerd has quit [Ping timeout: 260 seconds]
yomimono has joined #ocaml
<nicoo> hannes`: Where can the implementation of tron.nqsb.io be found? As in, the trace comformance checker. (And yes, I'm assuming which Hannes you are)
MK__ has quit [Remote host closed the connection]
<orbifx[m]> companion_cube: what if they are not? or there is a guarantee?
toolslive has quit [Ping timeout: 260 seconds]
toolslive has joined #ocaml
<companion_cube> they are, always
Mat__ has quit [Ping timeout: 260 seconds]
<nicoo> hannes`: Nevermind, hannesm/trace-checker. Was looking under mirleft
tane has joined #ocaml
yomimono has quit [Ping timeout: 246 seconds]
jacobian has joined #ocaml
<jacobian> Is there a function which transmutes options into errors (from Result)?
dhil_ has quit [Ping timeout: 240 seconds]
<Drup> jacobian: it's present in most stdlib extension, but if you want a small package, use "rresult" (with 2 r)
yomimono has joined #ocaml
jnavila has quit [Ping timeout: 240 seconds]
olibjerd has joined #ocaml
segmond has quit [Quit: l8r]
yomimono has quit [Ping timeout: 260 seconds]
jacobian has quit [Read error: Connection reset by peer]
yomimono has joined #ocaml
kakadu__ has quit [Quit: Konversation terminated!]
hellofunk has joined #ocaml
samrat has quit [Ping timeout: 260 seconds]
yomimono has quit [Ping timeout: 255 seconds]
Simn has quit [Ping timeout: 255 seconds]
jack5638 has quit [Ping timeout: 268 seconds]
TheLemonMan has joined #ocaml
jack5638 has joined #ocaml
Merv_ has quit []
shinnya has joined #ocaml
olibjerd has quit [Quit: olibjerd]
Merv_ has joined #ocaml
KeyJoo has quit [Ping timeout: 246 seconds]
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
pierpa has joined #ocaml
TheLemonMan has joined #ocaml
KeyJoo has joined #ocaml
kakadu has joined #ocaml
kakadu has quit [Ping timeout: 246 seconds]
kakadu_ has joined #ocaml
pierpa has quit [Quit: Page closed]
ryanartecona has quit [Quit: ryanartecona]
KeyJoo has quit [Excess Flood]
KeyJoo has joined #ocaml
pierpa has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 255 seconds]
gasche has joined #ocaml
<gasche> companion_cube: could you remove the (now dead) hackaton link from the topic? :-)
<gasche> also, you (and other people here that helped along with the hackaton, thanks!) might be interested in https://discuss.ocaml.org/t/curating-contribution-ideas-and-organizing-hacking-sessions/382
yomimono has joined #ocaml
<_y> Topic was (by companion_cube, 2017-06-06 21:04:01): Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.04.0 release notes: http://ocaml.org/releases/4.04.html | Try OCaml in your browser: http://try.ocamlpro.com | Public channel logs at http://irclog.whitequark.org/ocaml | https://github.com/ocamllabs/compiler-hacking/wiki/6th-june-Hackaton:-temporary-organization-page
companion_cube changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.04.0 release notes: http://ocaml.org/releases/4.04.html | Try OCaml in your browser: http://try.ocamlpro.com | Public channel logs at http://irclog.whitequark.org/ocaml
barcabuona has quit [Ping timeout: 240 seconds]
barcabuona has joined #ocaml
<Drup> gasche: there was a framapad with a lot of ideas like that, but apparently framapad is down right now
sheijk has quit [Ping timeout: 245 seconds]
<gasche> Drup: I'm sure I helped write it, but I completely forgot about it :-'
sheijk has joined #ocaml
<gasche> (please post it on the topic when it's up again)
jnavila has joined #ocaml
jacobian has joined #ocaml
<jacobian> Drup, thanks
<Drup> I think the "Things to work on" page is a bit to verbose and ocasionally too specific. The content will become deprecated and not be updated enough
copy` has joined #ocaml
<Drup> (especially if you start reference bug reports and/or feature requests in various project nominally, nobody is going to think of updating the hackaton wiki once it's solved)
Enjolras_ has joined #ocaml
<Drup> ah, I see that you already agree, fair enough :p
jack5638 has quit [Ping timeout: 240 seconds]
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
madroach has quit [Remote host closed the connection]
Enjolras has quit [Remote host closed the connection]
madroach has joined #ocaml
raphaelss has quit [Ping timeout: 260 seconds]
<nicoo> gasche: How was the hackathon?
* nicoo needs to make one happen in the fake Cambridge
<gasche> nicoo: I think it went well
<gasche> sorry for not managing to organize it while you were there :p
<gasche> I'll try to get bthom to organize further events in the future, but I won't be in the US myself at this point
<gasche> (it
<gasche> 's interesting that there is demand for OCaml events in Boston)
jack5638 has joined #ocaml
<nicoo> gasche: I will have to make my own in the fake Cambridge
<nicoo> with blackjack and hookers (and Futurama references)
<nicoo> Also, yes, that sounds like a huge success
yomimono_ has joined #ocaml
jlam_ has joined #ocaml
jlam_ has quit [Client Quit]
jlam_ has joined #ocaml
yomimono has quit [Ping timeout: 258 seconds]
<gasche> ( I'm not comfortable joking about hookers, but any event would indeed be welcome; I guess the Cambridge people already have some solid organization going on so you could probably just attend -- although feel free to ping them to have one happen sooner rather than alter )
yomimono_ has quit [Ping timeout: 260 seconds]
Simn has joined #ocaml
gasche has left #ocaml ["ERC (IRC client for Emacs 24.5.1)"]
_andre has quit [Quit: leaving]
jnavila has quit [Remote host closed the connection]
ryanartecona has joined #ocaml
Simn has quit [Quit: Leaving]
rpg has joined #ocaml
infinity0 has quit [Remote host closed the connection]
infinity0 has joined #ocaml
mengu has joined #ocaml
<mengu> how did the hackathon go
hellofun` has joined #ocaml
<nicoo> mengu: Sending you the backlog
so has quit [Ping timeout: 240 seconds]
aniou has quit [Ping timeout: 240 seconds]
ngWalrus has quit [Ping timeout: 240 seconds]
aniou has joined #ocaml
tane has quit [Quit: Leaving]
so has joined #ocaml
hellofunk has quit [Ping timeout: 240 seconds]
ngWalrus has joined #ocaml
hellofun` has quit [Remote host closed the connection]
hellofunk has joined #ocaml
argent_smith has quit [Quit: Leaving.]
<barcabuona> hey guys
<barcabuona> i have an unescaped string
<barcabuona> "\"hi\""
<barcabuona> but for some reason when i start dealing with it
<barcabuona> *escaped
<barcabuona> ocaml recognizes the escape pattern
<barcabuona> i just want a string with " insisde
<barcabuona> so need ocaml toremove that \
<barcabuona> how do i do that?
<octachron> barcabuona, by recognize the escape pattern, you mean that the toplevel prints "\"hi\"" ?
hellofunk has quit [Ping timeout: 240 seconds]
andreas_ has quit [Quit: Connection closed for inactivity]
ygrek__ has joined #ocaml
pete_8 has quit [Ping timeout: 246 seconds]
ryanartecona has quit [Quit: ryanartecona]
vicfred has joined #ocaml
<barcabuona> octachron: nah but cycling over the string yields \"
<barcabuona> anyway i fixed it with a regexp
<barcabuona> global_replace
kakadu_ has quit [Remote host closed the connection]
mengu has quit [Remote host closed the connection]
mengu has joined #ocaml
jack5638 has quit [Ping timeout: 240 seconds]
mengu has quit [Ping timeout: 240 seconds]
rpg has quit [Ping timeout: 260 seconds]
nicooo has joined #ocaml
nicoo has quit [Remote host closed the connection]