ebzzry has quit [Remote host closed the connection]
troydm has quit [Ping timeout: 252 seconds]
troydm has joined #ocaml
nikki93 has quit [Remote host closed the connection]
WraithM has quit [Ping timeout: 255 seconds]
michael_lee has quit [Ping timeout: 276 seconds]
jao has quit [Ping timeout: 255 seconds]
troydm has quit [Ping timeout: 252 seconds]
michael_lee has joined #ocaml
troydm has joined #ocaml
troydm has quit [Ping timeout: 252 seconds]
troydm has joined #ocaml
nikki93 has joined #ocaml
WraithM has joined #ocaml
q66 has quit [Quit: Leaving]
nikki93 has quit [Remote host closed the connection]
troydm has quit [Ping timeout: 252 seconds]
troydm has joined #ocaml
troydm has quit [Ping timeout: 252 seconds]
eikke__ has quit [Ping timeout: 240 seconds]
yacks has joined #ocaml
troydm has joined #ocaml
troydm has quit [Ping timeout: 252 seconds]
eikke__ has joined #ocaml
eikke__ has quit [Ping timeout: 252 seconds]
boogie has quit [Remote host closed the connection]
johnnydiabetic has quit [Quit: Leaving]
fraggle_ has quit [Ping timeout: 265 seconds]
fraggle_ has joined #ocaml
johnnydiabetic has joined #ocaml
johnnydiabetic has quit [Ping timeout: 276 seconds]
WraithM has quit [Ping timeout: 252 seconds]
<whitequark>
ugh, cmdliner is horrible
WraithM has joined #ocaml
<whitequark>
instead of doing something useful, I have to decipher its esoteric syntax and even more esoteric error messages
<whitequark>
Error: The type of this expression, '_a Term.t * Term.info, contains type variables that cannot be generalized
<whitequark>
the fuck does this even mean.
<whitequark>
I mean, not in the type theory sense, in the sense of
<whitequark>
"what do I need to fix in my code to make it go away".
michael_lee has quit [Ping timeout: 265 seconds]
axiles has joined #ocaml
studybot has quit [Remote host closed the connection]
shinnya has quit [Ping timeout: 255 seconds]
<gasche>
whitequark: I try to fix the parallel build whenever I can
<gasche>
but most people don't rely on it so they don't notice when it breaks
<gasche>
(and I think that's not important enough to go into CI)
<gasche>
re. your cmdliner issue, cannot say anything without the code
<gasche>
(except explaining you the type theory if you're interested)
<gasche>
(well it's probably mutable state you use in a chessy way, or a `let f = foo` that needs to be come `let f x = foo x`)
<whitequark>
gasche: already fixed it; shouldn't've used "assert false" as the command body
<whitequark>
the value restriction; I know
<gasche>
so latter case
<gasche>
`let f = assert false` is not such a good idea anyway if you want to test your code at some point
<whitequark>
nonono, let f _ = assert false"
<gasche>
that shouldn't warn
<whitequark>
well, duh
<whitequark>
let me make a testcase.
<gasche>
maybe you used `let g = f ()` somewhere
<whitequark>
nope, it's as simple as it gets
<whitequark>
I wonder if it's maybe due to types which are too abstract
<gasche>
too-abstract sometimes prevent doing eta-expansion, but the problem wouldn't be of the form you describe
<whitequark>
I mean, if you have a "type 'a t" (not "type +'a t"!) and a function "val create : unit -> 'a t", won't OCaml be conservative here and treat the type as containing mutable data?
<whitequark>
so let foo = create () would be of type '_a t ?
<gasche>
yes
<gasche>
but not "let foo _ = create ()"
<whitequark>
well, cmdliner has "val pure : 'a -> 'a Term.t"
<whitequark>
and apparently Term.t doesn't declare variance
<whitequark>
you're supposed to lift functions with it, so... "pure (fun _ -> assert false) : ('_a -> '_b) Term.t"
<gasche>
whitequark: Term.t is not covariant, because it is implemented in object-oriented style
<gasche>
so Daniel couldn't apply your suggestion without rather invasive implementation changes
<whitequark>
oh.
<gasche>
in fact it's not even clear such a change can be done
<gasche>
semantically, you need to be able to parse and print terms
<gasche>
if you know how to print t, you don't know how to print u for t <= u
<whitequark>
right
ebzzry has joined #ocaml
<adrien>
gasche: people don't rely on parallel builds because they're known not to work :)
<gasche>
I'm fine with that as long as I can make them work during a edit-compile-test-heavy afternoon
tlockney is now known as tlockney_away
<adrien>
and btw, I still don't know what to do with the .depend.nt files btw; get them out of source control and generate them on-the-fly?
<adrien>
make -j4 || make -j4 || make
<gasche>
(I have no idea what the .depend.nt are for)
<adrien>
sed 's/\.o/\.obj/g' .depend > .depend.nt
<adrien>
(got it? and no, I'm not kidding)
<adrien>
actually my question was not about removing them from source control and doing them dynamically; too early for me to remember the question though
<adrien>
plus I'm going to be working on win-builds tomorrow: a possible fix for cygwin then documentation and hopefully a release on tomorrow
<gasche>
if the depend are included, we could make them .$(OBJ) everywhere
WraithM has joined #ocaml
<adrien>
they are, and that was my idea (I think)
<gasche>
I wish you a good release :p
<adrien>
thanks, so far it seems everything is working nicely: installation is easy, updates too, it's fast, antivirus software don't complain, ...
tlockney_away is now known as tlockney
Simn has joined #ocaml
tlockney is now known as tlockney_away
LU324 has quit [Quit: No Ping reply in 180 seconds.]
ontologiae has quit [Ping timeout: 240 seconds]
ebzzry has quit [Ping timeout: 255 seconds]
ebzzry has joined #ocaml
ygrek_ has joined #ocaml
dan_ has joined #ocaml
dan_ is now known as wdan
WraithM has quit [Ping timeout: 252 seconds]
demonimin has quit [Remote host closed the connection]
demonimin has joined #ocaml
tlockney_away is now known as tlockney
Kakadu has joined #ocaml
tlockney is now known as tlockney_away
rgrinberg has quit [Quit: Leaving.]
ustunozgur has joined #ocaml
ustunozgur has quit [Remote host closed the connection]
ustunozgur has joined #ocaml
avsm has joined #ocaml
divyanshu has joined #ocaml
divyanshu has quit [Client Quit]
divyanshu has joined #ocaml
divyanshu has quit [Client Quit]
ustunozg_ has joined #ocaml
ustunozgur has quit [Ping timeout: 276 seconds]
ggole has joined #ocaml
tlockney_away is now known as tlockney
divyanshu has joined #ocaml
rand000 has joined #ocaml
tlockney is now known as tlockney_away
ygrek_ has quit [Ping timeout: 240 seconds]
avsm has quit [Quit: Leaving.]
ontologiae has joined #ocaml
divyanshu has quit [Ping timeout: 276 seconds]
ontologiae has quit [Ping timeout: 240 seconds]
divyanshu has joined #ocaml
BitPuffin has joined #ocaml
Submarine has quit [Quit: Leaving]
BitPuffin has quit [Ping timeout: 252 seconds]
Arsenik has joined #ocaml
BitPuffin has joined #ocaml
ygrek_ has joined #ocaml
ollehar has joined #ocaml
pminten has joined #ocaml
tlockney_away is now known as tlockney
shinnya has joined #ocaml
tlockney is now known as tlockney_away
ygrek_ has quit [Ping timeout: 240 seconds]
tane has joined #ocaml
nikki93 has joined #ocaml
divyanshu has quit [Ping timeout: 240 seconds]
divyanshu has joined #ocaml
maattdd has joined #ocaml
<ebzzry>
Is there a built-in, trivial way to create the list [1; 2; 3; 4; 5] in OCaml, programmatically?
<ggole>
Built-in, no. Trivial, yes.
<ggole>
let rec nums low high = if low >= high then [] else low::nums (succ low) high
<ggole>
Then nums 1 6
<ebzzry>
ggole: ok. thanks.
ygrek_ has joined #ocaml
ustunozg_ has quit [Remote host closed the connection]
<ggole>
(If you're using Batteries or Core they might provide that one already, dunno.)
<mrvn>
that only wortks for small numbers because it isn't tail recursive
<ggole>
Just like the stdlib
<ggole>
And if you care, that's easily fixed
tlockney_away is now known as tlockney
<ggole>
(It'd be nice if OCaml had TRMC...)
<gasche>
ggole: I've slowly come to accept that a well-specified TRMC would be a nice extension
<gasche>
I wasn't convinced before that's a bit operational
<gasche>
*because* that's operational
<gasche>
but I buy the argument that you want to be able to write elegant functions and still be efficient
tlockney is now known as tlockney_away
<Drup>
trmc ?
maattdd has quit [Ping timeout: 240 seconds]
ontologiae has joined #ocaml
<rks`>
same question as Drup
ygrek_ has quit [Ping timeout: 252 seconds]
<gasche>
tail-recursion modulo context
<gasche>
hm
<gasche>
modulo cons
<gasche>
but the name *should* be modulo context
ontologiae has quit [Ping timeout: 252 seconds]
<ggole>
gasche: I can't deny that it is a bit operational
<ggole>
But you end up having to work around it in a strict language
<ggole>
An interesting question is what patterns should be supported: it might be good to support exception handlers wrapped around recursive calls, for instance
<ggole>
(If that can be done in a sane way.)
<Drup>
ggole: is that still needed with the new extended pattern thingy ?
<ggole>
I dunno, haven't played with that yet. Does it interfere with tail calls?
<gasche>
Clemens and Felleisen used a modulo-context-like technique to keep track of stack-based security policies
<gasche>
but don't think capturing exception frames would make sense here
<gasche>
(and as Drup says it can be avoided with "match with exception")
<ggole>
The original meaning (from Prolog, iirc) was modulo-constructor.
<ggole>
Which has the advantage of being easy to explain.
Eyyub has joined #ocaml
BitPuffin has quit [Ping timeout: 265 seconds]
<ggole>
gasche: oh by the way, before I forget, the ocamlbuild question I had for you a few days back was about passing flags to ocamlmktop
nikki93 has quit [Remote host closed the connection]
<ggole>
I wanted to ask whether -cflags should be passed (which it currently isn't)
Eyyub has quit [Ping timeout: 265 seconds]
ssq has joined #ocaml
ollehar1 has joined #ocaml
pminten has quit [Quit: Leaving]
tlockney_away is now known as tlockney
Eyyub has joined #ocaml
tlockney is now known as tlockney_away
<ssq>
Is opalang dead language ? Trying to install it on my debian machine but failing hard.
<Drup>
if it's not dead, it's dying
<Drup>
it's a shame, because the language was interesting, but they got overly ambitious and tried to change target in the middle
<Drup>
the last version of it is more like a typed extension of js for nodejs than really a ml-like language :/
<ssq>
ah i see
<ssq>
Drup: Thanks for explanation.
testcocoon has quit [Quit: Coyote finally caught me]
maattdd has joined #ocaml
<Drup>
but yeah, it's pretty much dead. there is no traffic on the mailing list at all :/
<ssq>
I was very excited but now ..
<Drup>
look at ocsigen / eliom, it's in the same area :)
johnnydiabetic has joined #ocaml
<ssq>
will do ^^
testcocoon has joined #ocaml
tobiasBora has joined #ocaml
<Kakadu>
ssq: Ocsigen is nice, best web framework I've ever seen
SethTisue has joined #ocaml
ygrek_ has joined #ocaml
divyanshu has quit [Ping timeout: 240 seconds]
darkf has quit [Quit: Leaving]
LU324 has joined #ocaml
divyanshu has joined #ocaml
ssq has left #ocaml ["ERC Version 5.3 (IRC client for Emacs)"]
Thooms has joined #ocaml
maattdd has quit [Ping timeout: 240 seconds]
tlockney_away is now known as tlockney
companion_cube has quit [Ping timeout: 240 seconds]
companion_cube has joined #ocaml
tlockney is now known as tlockney_away
ontologiae has joined #ocaml
q66 has joined #ocaml
q66 has joined #ocaml
ontologiae has quit [Ping timeout: 265 seconds]
wdan has quit [Quit: Leaving...]
Anarchos has joined #ocaml
ollehar has quit [Ping timeout: 240 seconds]
ygrek_ has quit [Ping timeout: 240 seconds]
avsm has joined #ocaml
BitPuffin has joined #ocaml
SethTisue has quit [Quit: SethTisue]
SethTisue has joined #ocaml
SethTisue has quit [Quit: SethTisue]
<nicoo>
ebzzry: Array.init 5 (fun i -> i+1) |> Array.to_list
<nicoo>
List.init is in Batteries, IIRC
tlockney_away is now known as tlockney
shinnya has quit [Ping timeout: 252 seconds]
ollehar has joined #ocaml
tlockney is now known as tlockney_away
racycle_ has joined #ocaml
sheijk has joined #ocaml
studybot has joined #ocaml
axiles has quit [Ping timeout: 252 seconds]
ollehar has quit [Ping timeout: 240 seconds]
tlockney_away is now known as tlockney
ontologiae has joined #ocaml
tlockney is now known as tlockney_away
SethTisue has joined #ocaml
<BitPuffin>
Someone should create a programming language called subjective caml
SethTisue has quit [Client Quit]
<tane>
BitPuffin, the compiler interfers what the programmer had in mind? :)
<tane>
infers*
ssq has joined #ocaml
<ssq>
/join #opalang
maattdd has joined #ocaml
rgrinberg has joined #ocaml
<mrvn>
with DTRT[tm] (do the right thing)
<mrvn>
and WYMIWYG (what you mean is what you get)
divyanshu has quit [Ping timeout: 276 seconds]
rgrinberg has quit [Quit: Leaving.]
divyanshu has joined #ocaml
SethTisue has joined #ocaml
<Kakadu>
anybody is aware of what is happening with deriving,deriving-ocsigen and type-conv recently?
<Kakadu>
They have introduced some refactorings and...
sheijk has quit [Ping timeout: 255 seconds]
<Kakadu>
I don't know which packages to pass now
<mrvn>
that's what 'git reset' is for
SethTisue has quit [Client Quit]
Thooms has quit [Quit: WeeChat 0.3.8]
sheijk has joined #ocaml
tlockney_away is now known as tlockney
WraithM has joined #ocaml
boogie has joined #ocaml
tlockney is now known as tlockney_away
Nuki has joined #ocaml
pminten has joined #ocaml
maattdd has quit [Ping timeout: 240 seconds]
ssq has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
<Kakadu>
It is not really obvious what should I reset
dsheets has joined #ocaml
axiles has joined #ocaml
Nuki has quit [Remote host closed the connection]
rgrinberg has joined #ocaml
Eyyub has quit [Ping timeout: 252 seconds]
pminten has quit [Remote host closed the connection]
tlockney_away is now known as tlockney
maattdd has joined #ocaml
<rgrinberg>
is the ocamlbuild wiki completely dead?
SethTisue has joined #ocaml
eikke__ has joined #ocaml
tani has joined #ocaml
maattdd has quit [Ping timeout: 252 seconds]
dsheets has quit [Ping timeout: 276 seconds]
<gasche>
rgrinberg: which one?
Arsenik has quit [Remote host closed the connection]
tane has quit [Ping timeout: 255 seconds]
<gasche>
if you're thinking of the alternative manual, it's waiting to be awakened by contributions
<rgrinberg>
the old wiki
<rgrinberg>
hosted by inria I think
<rgrinberg>
I can't find it anymore though, so I'm not sure
Arsenik has joined #ocaml
<gasche>
ah
<gasche>
someone has a dump somewhere, but it was spammed and taken offline
<gasche>
the plan is to get the content on ocaml.org eventually
<rgrinberg>
what was the homepage again? time for the way-back machine :D
<rgrinberg>
nvm, found it.
racycle_ has quit [Quit: ZZZzzz…]
ollehar1 has quit [Ping timeout: 264 seconds]
dsheets has joined #ocaml
Eyyub has joined #ocaml
moop7 has joined #ocaml
<moop7>
hello
johnnydiabetic has quit [Quit: Leaving]
<moop7>
the ocaml standard library is distributed under the LGPL
<moop7>
does that mean it's forbidden to distribute ocaml-compiled executables without the corresponding source code?
<gasche>
moop7: no
ontologiae has quit [Ping timeout: 265 seconds]
<gasche>
there is a linking exception added to the LGPL
<gasche>
(which morally does not contaminate linked code anyway)
<moop7>
ah okay
<rgrinberg>
gasche: btw, doesn't menhir not have that exception?
<gasche>
rgrinberg: if that was the case, it would probably be a mistake of menhir's author
<gasche>
I never had a look
<gasche>
rgrinberg: no, I justed checked and menhir has the exception
<rgrinberg>
yeah just confirmed myself you're right
eikke__ has quit [Ping timeout: 276 seconds]
ontologiae has joined #ocaml
msch has quit [Ping timeout: 240 seconds]
msch has joined #ocaml
tobiasBora has quit [Quit: Konversation terminated!]
maattdd has joined #ocaml
<adrien>
gasche: haha
<adrien>
gasche: but I'm not sure I'm surprised he reinvented something
maattdd has quit [Ping timeout: 265 seconds]
jpeeters has joined #ocaml
Thooms has joined #ocaml
<adrien>
gasche: also adding support with cowboy is a fairly large task: it takes some work in order to start getting something
<adrien>
gasche: but with a few sed over headers, one would get almost immediate results
<adrien>
gasche: and that's the typical situation that leads to "I can do it myself (better/simpler/faster/...)"
eikke__ has joined #ocaml
<avsm>
really odd that ocamlbuild doesnt have an include pflag tag
<avsm>
i.e. <foo/*>: include(../bar/)
<avsm>
the other way makes it really hard to manage subpackages, and forces oasis to generate a zillion tags
Eyyub has quit [Ping timeout: 240 seconds]
tlockney is now known as tlockney_away
moop7 has quit [Quit: Page closed]
ollehar has joined #ocaml
ollehar has quit [Ping timeout: 264 seconds]
avsm has quit [Quit: Leaving.]
avsm has joined #ocaml
<whitequark>
adrien: cowboy?
<gasche>
avsm: note that from myocamlbuild.ml you can use Path.define_context "foo" ["foo"; "bar"; "baz"] to set the include environment, I believe
<gasche>
(I have actually never played with that much)
<gasche>
(note that include(foo) wouldn't really respect the _tags semantics)
Eyyub has joined #ocaml
avsm has quit [Ping timeout: 252 seconds]
<adrien>
whitequark: layer on top of yacfe-light which exposes a C AST which has been stripped off of the parts that are not needed to store the API of a library
avsm has quit [Read error: Connection reset by peer]
Submarine has quit [Remote host closed the connection]
ollehar has joined #ocaml
<Anarchos>
gasche what could be the right solution ?
Thooms has joined #ocaml
john3213 has joined #ocaml
john3213 has left #ocaml [#ocaml]
maattdd has joined #ocaml
nikki93 has joined #ocaml
maattdd has quit [Ping timeout: 240 seconds]
tobiasBora has quit [Quit: Konversation terminated!]
ggole has quit []
tobiasBora_ has joined #ocaml
tobiasBora_ is now known as tobiasBora
ontologiae has quit [Ping timeout: 252 seconds]
yacks has quit [Ping timeout: 264 seconds]
Anarchos has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
divyanshu has quit [Quit: Computer has gone to sleep.]
ontologiae has joined #ocaml
axiles has quit [Remote host closed the connection]
ollehar has quit [Ping timeout: 240 seconds]
tianon has quit [Read error: Connection reset by peer]
<rgrinberg>
does ocamlbuild have builtin rules for cppo?
<Drup>
no
<rgrinberg>
i see, well at least they aren't hard to write ^_^
ollehar has joined #ocaml
<Drup>
personally, I put it directly in ByteOpt/NativeOpt in oasis
<termos>
I installed a package with opam, but how can I open it in ocaml? This questions feels so stupid, but I can't find anything on google
<rgrinberg>
termos: you can experiment with the package from the toplevel with #require "package_name";
<Drup>
(if you have topfind loaded, which is probably not the case if you are asking this question :p)
tianon has joined #ocaml
<rgrinberg>
if you use utop, it should be there by default i think?
<Drup>
yes
<rgrinberg>
termos: use utop :D
<whitequark>
termos: or #use "topfind" in regular toplevel
<termos>
okey thanks! looks like it worked
nikki93 has quit [Remote host closed the connection]
Arsenik has quit [Remote host closed the connection]
tianon has quit [Read error: Connection reset by peer]
tianon has joined #ocaml
tianon has quit [Changing host]
tianon has joined #ocaml
nikki93 has joined #ocaml
eikke__ has quit [Ping timeout: 258 seconds]
eikke__ has joined #ocaml
Simn has quit [Quit: Leaving]
nikki93 has quit [Remote host closed the connection]
ebzzry has quit [Ping timeout: 240 seconds]
ebzzry has joined #ocaml
ontologiae has quit [Ping timeout: 264 seconds]
maattdd has joined #ocaml
ontologiae has joined #ocaml
eikke__ has quit [Ping timeout: 240 seconds]
Thooms has quit [Read error: No route to host]
eikke__ has joined #ocaml
johnnydiabetic has joined #ocaml
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
avsm1 has quit [*.net *.split]
shinnya has quit [*.net *.split]
rgrinberg has quit [*.net *.split]
cthuluh has quit [*.net *.split]
Ptival has quit [*.net *.split]
Tamae has quit [*.net *.split]
alex_nx has quit [*.net *.split]
reynir has quit [*.net *.split]
Asmadeus has quit [*.net *.split]
so has quit [*.net *.split]
ccasin has quit [*.net *.split]
tchell has quit [*.net *.split]
Armael has quit [*.net *.split]
rs0 has quit [*.net *.split]
AeroNotix has quit [*.net *.split]
saarin has quit [*.net *.split]
contempt has quit [*.net *.split]
jlouis has quit [*.net *.split]
chris2 has quit [*.net *.split]
bitbckt has quit [*.net *.split]
zozozo has quit [*.net *.split]
_habnabit has quit [*.net *.split]
rossberg has quit [*.net *.split]
mdenes has quit [*.net *.split]
hannes has quit [*.net *.split]
termos has quit [*.net *.split]
asmanur_ has quit [*.net *.split]
mrvn has quit [*.net *.split]
bunzen has quit [*.net *.split]
whitequark has quit [*.net *.split]
mal`` has quit [*.net *.split]
_5kg has quit [*.net *.split]
flux has quit [*.net *.split]
Kakadu has quit [*.net *.split]
seliopou has quit [*.net *.split]
dinosaure has quit [*.net *.split]
robink has quit [*.net *.split]
jbrown has quit [*.net *.split]
penryu has quit [*.net *.split]
willb1 has quit [*.net *.split]
sheijk_ has quit [*.net *.split]
martintrojer has quit [*.net *.split]
__marius____ has quit [*.net *.split]
pango has quit [*.net *.split]
samebchase has quit [*.net *.split]
n0v has quit [*.net *.split]
jave_ has quit [*.net *.split]
IbnFirnas has quit [*.net *.split]
Axman6 has quit [*.net *.split]
tobiasBora has quit [Write error: Broken pipe]
srcerer has quit [Ping timeout: 252 seconds]
maattdd has quit [Ping timeout: 252 seconds]
samebchase has joined #ocaml
robink has joined #ocaml
Thooms` has joined #ocaml
avsm1 has joined #ocaml
shinnya has joined #ocaml
sheijk_ has joined #ocaml
rgrinberg has joined #ocaml
contempt has joined #ocaml
jlouis has joined #ocaml
seliopou has joined #ocaml
cthuluh has joined #ocaml
saarin has joined #ocaml
rs0 has joined #ocaml
Armael has joined #ocaml
tchell has joined #ocaml
so has joined #ocaml
ccasin has joined #ocaml
AeroNotix has joined #ocaml
Asmadeus has joined #ocaml
alex_nx has joined #ocaml
reynir has joined #ocaml
Tamae has joined #ocaml
Ptival has joined #ocaml
bunzen has joined #ocaml
mal`` has joined #ocaml
_5kg has joined #ocaml
mrvn has joined #ocaml
flux has joined #ocaml
termos has joined #ocaml
asmanur_ has joined #ocaml
_habnabit has joined #ocaml
whitequark has joined #ocaml
hannes has joined #ocaml
zozozo has joined #ocaml
bitbckt has joined #ocaml
mdenes has joined #ocaml
martintrojer has joined #ocaml
rossberg has joined #ocaml
dinosaure has joined #ocaml
__marius____ has joined #ocaml
Axman6 has joined #ocaml
jbrown has joined #ocaml
pango has joined #ocaml
penryu has joined #ocaml
17SAACTKL has joined #ocaml
willb1 has joined #ocaml
n0v has joined #ocaml
jave_ has joined #ocaml
IbnFirnas has joined #ocaml
sheijk has joined #ocaml
contempt has quit [Max SendQ exceeded]
17SAACTKL has quit [Write error: Broken pipe]
contempt has joined #ocaml
<whitequark>
I cringe every time cmdliner makes me write "pure obviously_very_impure_function" ಠ_ಠ
studybot has quit [Ping timeout: 272 seconds]
<whitequark>
should've called it "lift" or something
sheijk_ has quit [Ping timeout: 242 seconds]
chris2 has joined #ocaml
johnnydiabetic has quit [Quit: Leaving]
contempt has quit [Ping timeout: 252 seconds]
tautologico has joined #ocaml
contempt has joined #ocaml
<whitequark>
gasche: hmm, I wonder if OCaml is right in conflating variance and mutability
<whitequark>
I mean, aren't there cases where the type parameter should be invariant, but the underlying storage is immutable, so value restriction should not apply?
<companion_cube>
one thing is sure, mutability implies invariant
<companion_cube>
invariance*
<whitequark>
yes, but not vice versa
studybot has joined #ocaml
<companion_cube>
you can specify that the type is invariant, can't you?
<whitequark>
yes, but I can't specify that it's invariant *and* immutable
<whitequark>
i.e. OCaml thinks that invariance implies mutability
<companion_cube>
how?
tlockney_away is now known as tlockney
<companion_cube>
i don't think OCaml contains the notion of 'mutability' in the type language
<companion_cube>
you have types, with some variance properties
<companion_cube>
that doesn't tell much about their mutability
Thooms` has quit [Ping timeout: 240 seconds]
<whitequark>
# module M : sig type 'a t val create : unit -> 'a t end = struct type 'a t = int let create () = 1 end;;
<whitequark>
module M : sig type 'a t val create : unit -> 'a t end
<whitequark>
# module M' = struct let x = M.create () end;;
<whitequark>
module M' : sig val x : '_a M.t end
<whitequark>
note the '_a
<whitequark>
there *is* a notion of mutability in the type system, in a way
manizzle has quit [Ping timeout: 252 seconds]
<companion_cube>
a limitation caused by it, yes
nikki93 has joined #ocaml
<whitequark>
how do you call a "string" in german?
<companion_cube>
I don't speak german, sorry :D
<whitequark>
apparently "Zeichenfolge"
sheijk has quit [Ping timeout: 264 seconds]
sheijk has joined #ocaml
ollehar1 has joined #ocaml
ollehar1 has quit [Client Quit]
ollehar has quit [Ping timeout: 240 seconds]
teiresias has quit [Ping timeout: 265 seconds]
rand000 has quit [Quit: leaving]
teiresias has joined #ocaml
Tamae has quit [Read error: Connection reset by peer]
Tamae has joined #ocaml
Enjolras has quit [Quit: Lost terminal]
darkf has joined #ocaml
claudiuc has quit [Remote host closed the connection]
Nuki has quit [Remote host closed the connection]
maattdd has joined #ocaml
madroach has quit [Ping timeout: 252 seconds]
madroach has joined #ocaml
maattdd has quit [Ping timeout: 252 seconds]
maattdd has joined #ocaml
NoNNaN has quit [Remote host closed the connection]
NoNNaN has joined #ocaml
nikki93 has quit [Remote host closed the connection]
ontologiae has quit [Ping timeout: 252 seconds]
studybot has quit [Remote host closed the connection]