talzeus has quit [Remote host closed the connection]
raichoo has joined #ocaml
_habnabit has quit [Remote host closed the connection]
_habnabit has joined #ocaml
talzeus has joined #ocaml
talzeus has quit [Remote host closed the connection]
_habnabit has quit [Remote host closed the connection]
ontologiae has joined #ocaml
talzeus has joined #ocaml
derek_c has quit [Quit: leaving]
_habnabit has joined #ocaml
thomasga has joined #ocaml
f[x] has joined #ocaml
ontologiae has quit [Ping timeout: 256 seconds]
zpe has joined #ocaml
_habnabit has quit [Remote host closed the connection]
_habnabit has joined #ocaml
zpe has quit [Ping timeout: 240 seconds]
mika1 has joined #ocaml
cago has joined #ocaml
osnr has joined #ocaml
talzeus has quit [Remote host closed the connection]
talzeus has joined #ocaml
osnr has quit [Ping timeout: 255 seconds]
ontologiae has joined #ocaml
eikke has joined #ocaml
cdidd has quit [Ping timeout: 248 seconds]
eikke has quit [Ping timeout: 240 seconds]
zpe has joined #ocaml
testcocoon has quit [Quit: Coyote finally caught me]
testcocoon has joined #ocaml
zpe has quit [Ping timeout: 240 seconds]
testcocoon has quit [Client Quit]
eikke has joined #ocaml
testcocoon has joined #ocaml
testcocoon has quit [Client Quit]
testcocoon has joined #ocaml
testcocoon has quit [Client Quit]
testcocoon has joined #ocaml
Kakadu has joined #ocaml
testcocoon has quit [Client Quit]
testcocoon has joined #ocaml
testcocoon has quit [Client Quit]
testcocoon has joined #ocaml
testcocoon has quit [Client Quit]
testcocoon has joined #ocaml
Kakadu has quit [Client Quit]
Kakadu has joined #ocaml
Yoric has quit [Ping timeout: 256 seconds]
eikke has quit [Ping timeout: 264 seconds]
eikke has joined #ocaml
testcocoon has quit [Client Quit]
testcocoon has joined #ocaml
ollehar has joined #ocaml
testcocoon has quit [Client Quit]
testcocoon has joined #ocaml
ohama has quit [Ping timeout: 260 seconds]
ohama has joined #ocaml
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
zpe has joined #ocaml
osnr has quit [Ping timeout: 268 seconds]
zpe has quit [Ping timeout: 256 seconds]
tane has quit [Quit: Verlassend]
Zeev has joined #ocaml
weie has quit [Quit: Leaving...]
zpe has joined #ocaml
zpe has quit [Read error: No route to host]
zpe has joined #ocaml
adrien_oww has quit [Ping timeout: 268 seconds]
mcclurmc has joined #ocaml
adrien_oww has joined #ocaml
Yoric has joined #ocaml
rwmjones is now known as rwmjones_rowing
weie has joined #ocaml
eikke has quit [Ping timeout: 264 seconds]
rwmjones_rowing is now known as rwmjones
dsheets has joined #ocaml
cdidd has joined #ocaml
ontologiae has quit [Ping timeout: 264 seconds]
skchrko has quit [Remote host closed the connection]
csakatok_ has quit [Remote host closed the connection]
_andre has joined #ocaml
eikke has joined #ocaml
skchrko has joined #ocaml
troydm has quit [Read error: Operation timed out]
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
osnr has quit [Ping timeout: 256 seconds]
f[x] has quit [Ping timeout: 264 seconds]
spanish has joined #ocaml
foo808_ has joined #ocaml
Drup has joined #ocaml
foo808 has quit [Ping timeout: 245 seconds]
talzeus has quit [Remote host closed the connection]
djcoin has joined #ocaml
<spanish>
yeah!, I got a couple of nice fixes de-sissyfying mtasc, though I finally had to do pre-process ocaml thourgh a loop on the makefile, which is completely unsuitable
<spanish>
but I couldn't get ocaml behaving at all
<spanish>
hell, that's correct english
<spanish>
what I did was to prefix source files with `sp-' and then preprocess them and output as the same without it, then run ocaml
troydm has joined #ocaml
adrien_o1w has joined #ocaml
ontologiae has joined #ocaml
adrien_oww has quit [Ping timeout: 255 seconds]
<gasche>
spanish: have you got your repro case around to try?
<gasche>
I'm quite sure you should be able to use the "-pp" option to avoid Makefile hacks
darkf has quit [Quit: Leaving]
darkf has joined #ocaml
eikke has quit [Ping timeout: 255 seconds]
eikke has joined #ocaml
cdidd has quit [Read error: Connection reset by peer]
thomasga1 has joined #ocaml
thomasga has quit [Ping timeout: 264 seconds]
<spanish>
what gasche?
<spanish>
I guess you mean if I can handle you the source?
<gasche>
spanish: a few days ago I asked you for a small reproductible example of the issue you had
<gasche>
(integrating a cpp pass in an OCaml compilation workflow)
<gasche>
when you said you tried with -pp but it didn't work
<spanish>
the link I pasted was a reproducible case gasche
<gasche>
could you give that link again?
<spanish>
it's not just the compiler, but the lexer also, and the whole thing
<spanish>
ocaml is not really meant to be flexible to anything that it's ocaml
<spanish>
*that it's not ocaml
* gasche
not convinced
tane has joined #ocaml
<spanish>
the file you should be looking should be `test/Makefile.am'
<spanish>
or `compiler/Makefile.am' can't recall for sure
<spanish>
if you modify that file and type `make' `Makefile' gets rebuilt and yur changes apply
<gasche>
I don't have the URL adress of the file (anymore), could you give it again
<gasche>
?
<spanish>
sure, let me see
ollehar has quit [Ping timeout: 252 seconds]
remyzorg has joined #ocaml
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
<pippijn>
I'm not getting useful backtraces from Printexc.print_backtrace when using Lwt
clog has quit [^C]
clog has joined #ocaml
mattrepl has quit [Quit: mattrepl]
dsheets has quit [Read error: Operation timed out]
<gasche>
the use of `Tuple and `Function is defined in deriving/syntax/type.ml
<MarcWeber>
comparing the camlp4f output this is the resolt of the type a= line of tuple and "int -> int"
<gasche>
were is the "->" ?
<gasche>
have you tried the second proposal with (`Function f)?
<gasche>
s/were/where/
<MarcWeber>
srf
<MarcWeber>
sry
<Kakadu>
pippijn: more concretely, I'm looking for testers now
<MarcWeber>
gasche: That compiles just fine.
travisbrady has quit [Quit: travisbrady]
pootler_ has joined #ocaml
pootler__ has joined #ocaml
eikke has quit [Read error: Operation timed out]
<MarcWeber>
So polymorphic variants are like creating variants "on the fly" without declaring a type? Its like "Either" for arbitrary many variants - and the "left/right" have sane names ?
<companion_cube>
it's indeed creating variants on the fly
<gasche>
meh
<companion_cube>
but types are still there :)
Kakadu has quit [Quit: Konversation terminated!]
raichoo has joined #ocaml
<ggole>
That's not really like Either...
<companion_cube>
I think what MarcWeber meant, is that variants can replaced a Either type by something more explicit in names
<companion_cube>
something with more explicit cases
smondet has joined #ocaml
<gasche>
Polymorphic variants are both structural (they don't need to be declared upfront to have an identity) and extensible (they can be extended by either row polymorphism or subtyping)
dsheets has quit [Ping timeout: 260 seconds]
<gasche>
in the deriving codebase, I think polymorphic variants are used because of the extensibility aspect
<gasche>
in practice all the variants involved are declared upfront
<ggole>
The subtyping seems a bit flaky
<gasche>
(which is good practice if you want to avoid confusing type error messages)
<ggole>
You have to cast a lot :(
<gasche>
the subtyping is explicit
<gasche>
which is more or less the "good" way to do subtyping in a language with polymorphism
gautamc has quit [Read error: Connection reset by peer]
<ggole>
GADTs can express something a bit like a subtyping relation
<ggole>
But I haven't grokked those in all fullness yet
<ggole>
They also seem to require annotations. But perhaps that is the price to pay for sane subtyping.
gautamc has joined #ocaml
<gasche>
inference of polymorphism, inference of subtyping, pick one
<gasche>
(note that in OCaml there are really two languages involved: the term language, with implicit polymorphism and explicit subtyping, and the module language with no polymorphism and implicit subtyping)
<ggole>
So far I've found that the datatypes I wish to subtype are not polymorphic
* companion_cube
tries to imagine what module-level polymorphism would be
<gasche>
but I'm not sure what you mean about using GADTs for subtyping; I don't think that would work without injective a primitive notion of subtyping at some point
<gasche>
companion_cube: abstraction on module types
<companion_cube>
hmm
<ggole>
Say, type 'a foo = Foo : int -> [`Foo] foo | Bar : float -> [`Bar] foo
<gasche>
ah
<ggole>
Then you can use gadt constaints to talk about subsets of constructors
<gasche>
that's not really subtyping, but more like playing with phantom types
<ggole>
Yes
<gasche>
there is no "real" subtyping involved if you never cast values
<ggole>
but the effect is remarkably similar
<ggole>
You get to forget about irrelevant constructors when matching, for instance
<companion_cube>
ggole: not if you consider extensibility
<ggole>
Yes, this is "up front" subtyping
<ggole>
I'm not sure if it would be a good idea or not, frankly
<ggole>
Still working on my understanding of GADTs
<gasche>
I personally prefer to avoid using polymorphic variants to instantiate GADT parameters
<gasche>
I think GADTs alone are complex enough with simple (abstract) types
<companion_cube>
gasche: wait, GADT often require type annotations anyway :D
<ggole>
It seems to work ok in my toy examples
<ggole>
Although annotations are required where a subtype is matched on
<gasche>
functors also give you that impression :-'
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
<ggole>
How would you attack a "subtype problem"? Basic variants, and assert false on the "impossible" values?
* ggole
doesn't care for that
<gasche>
what do you call a "subtype problem"?
<gasche>
(I will leave soon, btw.)
speredenn has quit [Read error: Operation timed out]
<ggole>
When you naturally have a variant that is the same as another variant, except one or more legs is impossible
remyzorg has quit [Quit: Quitte]
<ggole>
Say you are modelling instruction operands. The most general operand can be a register, memory, or an immediate value.
<ggole>
But some instructions have operands that cannot be one of those.
<gasche>
yeah, I know
<gasche>
this problem
<ggole>
How do you model this without writing the same code ten times?
<gasche>
I think it depends on how much the sub-variant is used
<gasche>
if it's one or two time, I'm fine with assert false
<gasche>
if it's an important immediate language, I usually copy ADTs
<gasche>
(or polymorphic variants but with strict annotations)
<gasche>
I haven't had to do that design again in presence of GADTs yet
<ggole>
And then duplicate code for the copied ADTs -_-
<ggole>
Neither solution really feels right
osnr has quit [Ping timeout: 266 seconds]
<ggole>
I have the beginnings of a toy model based on the "subtype" trick I mentioned
<ggole>
But I'm not sure about it so far
<gasche>
if I have to choose between "feels right" and "easy to understand, maintain and explain on the long run", I prefer the latter
<ggole>
Sure
<ggole>
But it would be nice to have both :)
ollehar has quit [Ping timeout: 264 seconds]
<gasche>
got to go; see you
<ggole>
Later.
skchrko has quit [Quit: Leaving]
ollehar has joined #ocaml
ttamttam has quit [Ping timeout: 264 seconds]
ollehar has quit [Read error: Connection reset by peer]
travisbrady has joined #ocaml
beckerb has quit [Ping timeout: 245 seconds]
Yoric has quit [Ping timeout: 264 seconds]
ontologiae has quit [Ping timeout: 256 seconds]
zpe has quit [Remote host closed the connection]
<MarcWeber>
Two more questions: If I want to derive Show of a foreign module, there is no other way then patching that makefile to make deriving derive the show code?
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
ontologiae has joined #ocaml
<MarcWeber>
http://dpaste.com/1257190/ Is it possible to derive show for "type ('k, 'v) map = ..", either by using deriving (Show) or by writing that implementation manually?
skchrko has joined #ocaml
<ggole>
I don't know much about derive, but it's hard to see how you could write show manually for any type 'k
maufred_ has quit [Ping timeout: 246 seconds]
<ggole>
The ocaml "solution" here is functors, but they can be clumsy.
thomasga1 has quit [Ping timeout: 264 seconds]
ttamttam has joined #ocaml
ulfdoz has joined #ocaml
f[x] has quit [Ping timeout: 256 seconds]
mattrepl has joined #ocaml
ttamttam has quit [Client Quit]
ollehar has joined #ocaml
dsheets has joined #ocaml
troydm has quit [Quit: What is hope? That all of your wishes and all of your dreams come true? (C) Rau Le Creuset]
troydm has joined #ocaml
pootler_ has quit [Ping timeout: 246 seconds]
pootler__ has quit [Ping timeout: 268 seconds]
pootler_ has joined #ocaml
pootler__ has joined #ocaml
yacks has quit [Ping timeout: 246 seconds]
emmanuelux has joined #ocaml
justdit has joined #ocaml
zpe has joined #ocaml
zpe has quit [Read error: Operation timed out]
mattrepl has quit [Quit: mattrepl]
<ollehar>
is first class module signatures something that could be useful?
<troydm>
ollehar: depends on how you are going to use them?
<troydm>
ollehar: but i don't think that ocaml supports that
<ollehar>
no
<ollehar>
I heard scala had something like it
<ollehar>
like first class typeclasses
<troydm>
don't know anything about scala
<troydm>
i should probably learn
<troydm>
but i do like clojure more
yacks has joined #ocaml
mattrepl has joined #ocaml
tobiasBora has quit [Ping timeout: 256 seconds]
ttamttam has joined #ocaml
justdit has quit [Quit: Lost terminal]
eikke has joined #ocaml
ttamttam has left #ocaml []
ulfdoz has quit [Ping timeout: 246 seconds]
ulfdoz has joined #ocaml
<pippijn>
meh, Lwt.async is only in 2.4, not in 2.3 (which ubuntu has)
<pippijn>
look at that, ubuntu is more outdated than debian
tani has joined #ocaml
Yoric has joined #ocaml
tane has quit [Ping timeout: 260 seconds]
ontologiae has quit [Ping timeout: 240 seconds]
Kakadu has joined #ocaml
ggole has quit []
eikke has quit [Ping timeout: 260 seconds]
tobiasBora has joined #ocaml
tobiasBora has quit [Remote host closed the connection]
thomasga has joined #ocaml
mcclurmc has quit [Ping timeout: 260 seconds]
BiDOrD has joined #ocaml
BiDOrD_ has quit [Ping timeout: 248 seconds]
ollehar has quit [Ping timeout: 246 seconds]
darkf has quit [Quit: Leaving]
travisbrady has quit [Quit: travisbrady]
tobiasBora has joined #ocaml
thomasga has quit [Quit: Leaving.]
Drup has quit [Ping timeout: 264 seconds]
testcocoon has quit [Read error: Connection reset by peer]
Watcher7|off is now known as Watcher7
travisbrady has joined #ocaml
testcocoon has joined #ocaml
Zeev has quit [Ping timeout: 264 seconds]
Drup has joined #ocaml
mattrepl has quit [Quit: mattrepl]
mattrepl has joined #ocaml
mattrepl has quit [Client Quit]
_andre has quit [Quit: leaving]
UncleVasya has joined #ocaml
weie_ has joined #ocaml
weie has quit [Ping timeout: 255 seconds]
tianon has quit [Ping timeout: 246 seconds]
chrisdotcode has quit [Remote host closed the connection]
osa1 has joined #ocaml
tianon has joined #ocaml
Snark has quit [Quit: leaving]
Kakadu has quit []
raichoo has quit [Quit: leaving]
cdidd has quit [Ping timeout: 260 seconds]
cdidd has joined #ocaml
mcclurmc has joined #ocaml
eikke has joined #ocaml
spanish has quit [Quit: Leaving]
<amiller_>
what would be the difficulty in implementing a quoting scheme for parsetree.mli
<amiller_>
there isn't anything in particular about it is there?
<amiller_>
i mean anything harder than what's done for camlp4
travisbrady has quit [Quit: travisbrady]
travisbrady has joined #ocaml
djcoin has quit [Quit: WeeChat 0.4.0]
manud has joined #ocaml
travisbrady has quit [Quit: travisbrady]
ulfdoz has quit [Ping timeout: 246 seconds]
<gasche>
amiller_: what do you mean by "a quoting scheme"?
<amiller_>
<:parsetree< if true then () else () >>
<gasche>
you should look at Alain Frisch's extension_points branch
<amiller_>
oh
osa1 has quit [Quit: Konversation terminated!]
manud has quit [Ping timeout: 252 seconds]
skchrko has quit [Quit: Leaving]
Yoric has quit [Ping timeout: 252 seconds]
q66 has quit [Remote host closed the connection]
smondet has quit [Quit: Gotta go home]
<ousado>
where can I find info about how ocaml implements HOFs?
eikke has quit [Ping timeout: 255 seconds]
eikke has joined #ocaml
oriba has joined #ocaml
tobiasBora has quit [Quit: Konversation terminated!]