flux changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | OCaml 4.00.1 http://bit.ly/UHeZyT | http://www.ocaml.org | Public logs at http://tunes.org/~nef/logs/ocaml/
ollehar has joined #ocaml
csakatoku has quit [Ping timeout: 264 seconds]
eikke has quit [Ping timeout: 252 seconds]
eikke has joined #ocaml
zpe has quit [Ping timeout: 276 seconds]
eikke has quit [Ping timeout: 256 seconds]
dsheets has quit [Ping timeout: 240 seconds]
ygrek has joined #ocaml
zpe has joined #ocaml
montik_ has joined #ocaml
montik has quit [Ping timeout: 264 seconds]
ulfdoz_ has joined #ocaml
q66 has quit [Quit: Leaving]
zpe has quit [Ping timeout: 264 seconds]
ulfdoz has quit [Ping timeout: 248 seconds]
ulfdoz_ is now known as ulfdoz
yacks has quit [Ping timeout: 246 seconds]
fraggle_laptop has quit [Remote host closed the connection]
csakatoku has joined #ocaml
emmanuelux has quit [Remote host closed the connection]
ygrek has quit [Ping timeout: 248 seconds]
zpe has joined #ocaml
zpe has quit [Ping timeout: 264 seconds]
madroach has quit [Ping timeout: 248 seconds]
madroach has joined #ocaml
osnr1 has joined #ocaml
darkf has joined #ocaml
osnr has quit [Ping timeout: 256 seconds]
ygrek has joined #ocaml
csakatok_ has joined #ocaml
amiller_ has joined #ocaml
Asmadeus_ has joined #ocaml
vbmithr_ has joined #ocaml
tchell_ has joined #ocaml
rks`_ has joined #ocaml
adrien_ has joined #ocaml
csakatoku has quit [*.net *.split]
skchrko has quit [*.net *.split]
Asmadeus has quit [*.net *.split]
amiller has quit [*.net *.split]
tchell has quit [*.net *.split]
vbmithr has quit [*.net *.split]
rks` has quit [*.net *.split]
adrien has quit [*.net *.split]
zpe has joined #ocaml
skchrko has joined #ocaml
bobry_ has joined #ocaml
pootler has quit [Ping timeout: 246 seconds]
orbitz_ has joined #ocaml
thelema_ has joined #ocaml
Brocoli_ has joined #ocaml
pootler_ has quit [Ping timeout: 268 seconds]
patronus_ has joined #ocaml
maxibolt has joined #ocaml
bobry has quit [Ping timeout: 264 seconds]
Armael has quit [Ping timeout: 264 seconds]
orbitz has quit [Ping timeout: 264 seconds]
patronus has quit [Ping timeout: 264 seconds]
thizanne has quit [Ping timeout: 264 seconds]
PM has quit [Ping timeout: 264 seconds]
Arthur_ has quit [Ping timeout: 264 seconds]
thelema has quit [Ping timeout: 264 seconds]
Arthur has joined #ocaml
yroeht has quit [Ping timeout: 264 seconds]
PM has joined #ocaml
bobry_ is now known as bobry
yroeht has joined #ocaml
Neros_ has joined #ocaml
BiDOrD_ has joined #ocaml
zpe has quit [Ping timeout: 248 seconds]
hyperbor1ean has joined #ocaml
gbluma_ has joined #ocaml
pootler has joined #ocaml
pootler_ has joined #ocaml
jpdeplaix` has joined #ocaml
ollehar has quit [Ping timeout: 248 seconds]
noplamodo_ has joined #ocaml
gnuvince- has joined #ocaml
skchrko has quit [*.net *.split]
Neros has quit [*.net *.split]
cdidd has quit [*.net *.split]
hyperboreean has quit [*.net *.split]
noplamodo has quit [*.net *.split]
jpdeplaix has quit [*.net *.split]
BiDOrD has quit [*.net *.split]
gbluma has quit [*.net *.split]
deavid has joined #ocaml
orbitz has joined #ocaml
cthuluh_ has joined #ocaml
orbitz_ has quit [*.net *.split]
gnuvince has quit [*.net *.split]
willb1 has quit [*.net *.split]
transfinite has quit [*.net *.split]
brendan has quit [*.net *.split]
deavidsedice has quit [*.net *.split]
cthuluh has quit [*.net *.split]
whitequark has quit [*.net *.split]
alang has quit [*.net *.split]
zorun has quit [*.net *.split]
cdidd has joined #ocaml
osnr1 has quit [Quit: Leaving.]
brendan has joined #ocaml
willb1 has joined #ocaml
transfinite has joined #ocaml
anemator has joined #ocaml
<anemator> does anyone know a good of way of handling ~/.ocamlinit on a system with multiple ocaml installs (courtesy of opam)?
zpe has joined #ocaml
<anemator> basically i have certain i have third-party libraries installed on one ocaml install and no third party libraries installed on another ocaml install, so the the '#use', '#require', etc. lines crap out on the latter
pootler_ has quit [Ping timeout: 248 seconds]
pootler has quit [Ping timeout: 248 seconds]
pootler has joined #ocaml
pootler_ has joined #ocaml
osnr has joined #ocaml
zpe has quit [Ping timeout: 240 seconds]
iZsh has quit [Ping timeout: 245 seconds]
whitequark has joined #ocaml
alang has joined #ocaml
zorun has joined #ocaml
ggole has joined #ocaml
Neros_ has quit [Ping timeout: 268 seconds]
zpe has joined #ocaml
iZsh has joined #ocaml
zpe has quit [Ping timeout: 240 seconds]
osnr has quit [Quit: Leaving.]
ben_zen has quit [Quit: leaving]
watermind has quit [Quit: Konversation terminated!]
chrisdotcode has quit [Ping timeout: 264 seconds]
anemator has quit [Quit: Page closed]
zpe has joined #ocaml
zpe has quit [Ping timeout: 256 seconds]
csakatoku has joined #ocaml
csakatok_ has quit [Read error: Connection reset by peer]
zpe has joined #ocaml
zpe has quit [Ping timeout: 276 seconds]
adrien_ is now known as Guest61291
Arthur is now known as Guest79661
ygrek is now known as Guest14175
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
introom has joined #ocaml
zpe has joined #ocaml
weie has quit [Read error: Connection reset by peer]
weie has joined #ocaml
zpe has quit [Ping timeout: 276 seconds]
Asmadeus_ is now known as Asmadeus
introom has quit [Remote host closed the connection]
introom has joined #ocaml
Guest14175 has quit [Quit: Guest14175]
f[x] has joined #ocaml
f[x] has quit [Client Quit]
f[x] has joined #ocaml
f[x] has quit [Client Quit]
f[x] has joined #ocaml
f[x] has quit [Client Quit]
f[x] has joined #ocaml
zpe has joined #ocaml
f[x] has quit [Client Quit]
BiDOrD has joined #ocaml
f[x] has joined #ocaml
f[x] is now known as fx
fx is now known as y
y is now known as ydsdsd
ydsdsd is now known as ygrek_k
ygrek_k is now known as f[x]
BiDOrD_ has quit [Ping timeout: 264 seconds]
chrisdotcode has joined #ocaml
f[x] is now known as ygrek
ygrek has quit [Client Quit]
f[x] has joined #ocaml
f[x] has quit [Remote host closed the connection]
ygrek has joined #ocaml
ygrek has quit [Client Quit]
ygrek has joined #ocaml
zpe has quit [Ping timeout: 264 seconds]
Brocoli_ is now known as Armael
Guest61291 is now known as adrien
osnr has quit [Quit: Leaving.]
ygrek has quit [Ping timeout: 264 seconds]
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
<ggole> Hmm, nice
zpe has joined #ocaml
Neros has joined #ocaml
dfarmer has joined #ocaml
zpe has quit [Ping timeout: 264 seconds]
ygrek has joined #ocaml
zpe has joined #ocaml
introom has quit [Remote host closed the connection]
osnr has quit [Quit: Leaving.]
zpe has quit [Ping timeout: 256 seconds]
zpe has joined #ocaml
hto has quit [Quit: Lost terminal]
dfarmer has quit [Ping timeout: 245 seconds]
Arsenik has joined #ocaml
bobry has quit []
bobry has joined #ocaml
milosn has quit [Ping timeout: 246 seconds]
raichoo has joined #ocaml
<whitequark> is there uhh.. a way to get the memory address of an object in ocaml?
<whitequark> considering it, I think, does not use a moving GC?
<whitequark> I'm not actually going to do anything with it; it's just a visual way to represent object identity in pretty-printing
csakatoku has quit [Remote host closed the connection]
Arsenik has quit [Remote host closed the connection]
introom has joined #ocaml
introom has quit [Remote host closed the connection]
<whitequark> seems like let addr : int = Obj.magic obj; works
<ggole> Don't do that
<ggole> Addresses are not stable in OCaml
<whitequark> ah I see
domsj has quit [Read error: Operation timed out]
csakatoku has joined #ocaml
<ggole> Also, Obj.magic is evil
<whitequark> so?
<whitequark> if one understands it constraints, it's safe to use
<whitequark> > If you have files that must elude the hygiene squad, just tag them with precious or not_hygienic.
<whitequark> precious
<whitequark> lol.
introom has joined #ocaml
thomasga has joined #ocaml
csakatoku has quit [Remote host closed the connection]
csakatoku has joined #ocaml
introom has quit [Remote host closed the connection]
eikke has joined #ocaml
<flux> it is the same as in GNU Make
hkBst has joined #ocaml
hkBst has quit [Changing host]
hkBst has joined #ocaml
zpe has quit [Remote host closed the connection]
ben_zen has joined #ocaml
ttamttam has joined #ocaml
csakatoku has quit [Remote host closed the connection]
yezariaely has joined #ocaml
<yezariaely> I want to introduce smart constructors to built ctors of an algebraic data type but still want to allow pattern matching. Is it possible to only disallow direct creation but still allow pattern matching somehow?
<thomasga> look at 'private' types
<flux> it's nice when there are language features that directly respond to one's needs ;)
beckerb has joined #ocaml
ontologiae_ has joined #ocaml
introom has joined #ocaml
<yezariaely> thomasga: a very nice!
<yezariaely> a = ah
domsj has joined #ocaml
Kakadu has joined #ocaml
Simn has joined #ocaml
introom has quit [Ping timeout: 264 seconds]
Kakadu_ has joined #ocaml
Kakadu has quit [Read error: Connection reset by peer]
snearch has joined #ocaml
wwilly has joined #ocaml
csakatoku has joined #ocaml
<wwilly> bonjour
<yezariaely> wow private types are cool
Snark has joined #ocaml
ontologiae has joined #ocaml
ontologiae_ has quit [Read error: Connection reset by peer]
milosn has joined #ocaml
zpe has joined #ocaml
<yezariaely> just curious: what is the advantage of requiring to annotate recursive functions with rec? over just handling all of them as recursive functions? Couldn't one just "check" if they are used recursively?
Arthur_ has joined #ocaml
<gasche> non-recursive bindings can use previous bindings of the same name before shadowing them
<gasche> let length x = normalize (length x)
<gasche> yezariaely: you can't do that if you assume implicit "rec" everywhere
<yezariaely> ah sure. thanks for the pointer.
<gasche> I believe that any binding form should have *both* a non-recursive and a recursive variant (the recursive one only when it makes sense, of course)
<yezariaely> yes, that makes sense
<gasche> whichever is the least-effort syntactic default is a style question; you could make "let" recursive and have "let nonrec"
introom has joined #ocaml
Kakadu_ has quit []
noplamodo has joined #ocaml
milosn_ has joined #ocaml
Neros_ has joined #ocaml
cthuluh has joined #ocaml
eikke_ has joined #ocaml
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
milosn has quit [*.net *.split]
eikke has quit [*.net *.split]
Neros has quit [*.net *.split]
cthuluh_ has quit [*.net *.split]
noplamodo_ has quit [*.net *.split]
Guest79661 has quit [*.net *.split]
snearch has quit [Quit: Verlassend]
UncleVasya has joined #ocaml
eikke_ is now known as eikke
<ggole> I admit, I curse a little every time I forget the 'rec'.
<ggole> Happens all the time :/
<yezariaely> that was the origin of my question ;-)
<whitequark> use coffeescript!
<whitequark> it doesn't have shadowing. at all.
<yezariaely> lol
<whitequark> the author thinks it is unnecessary and confusing.
<Armael> : d
<yezariaely> i.e. one cannot define the same variable twice or what is the semantics?
<whitequark> yeah. if a variable is defined in some outer scope, then consequental bindings will just mutate it
<whitequark> (and close over it)
<yezariaely> that is like in imperative languages?
<whitequark> coffeescript is imperative, ya know
<gasche> this is *the* major mistake of coffeescript
<gasche> forbidding shadowing makes routine code maintenance operations painful
<whitequark> the major mistake of coffeescript is more or less its existence
<whitequark> because it's 80% syntax, and the syntax is horrible
<gasche> getting rid of the explicit binder makes it *unsafe*
<yezariaely> whaaa that IS ugly...
<gasche> whitequark: I don't mind people using their preferred form of syntactic sugar over JS already-not-wonderful syntax
<whitequark> apart from this, it is also almost entirely significant whitespace
<gasche> breaking the notion of variable binding, I do
<whitequark> right
<whitequark> to everyone using omake here: https://twitter.com/camloeba/status/353072020956778496 :D
osa1 has joined #ocaml
jpdeplaix` is now known as jpdeplaix
<flux> hmm, I suppose to do 'caml_failwith' with a dynamically allocated string you need to allocate an ocaml string etc?
<gasche> flux: caml_failwith from fail.h takes a C string as parameter
<flux> yes, but if I dynamically allocate it with (say) strdup, it will introduce a memory leak?
<flux> as I have no opportunity to release the string
<flux> caml_(failwith|invalidarg|etc)_printf would fill that niche nicely ;)
<gasche> you can also use caml_raise_with_arg to pass a ocaml-side value directly
<flux> uh, stupid me
<flux> I can just use a normal automatically allocated buffer
<flux> I was something thinking malloc() or static is the only way to go...
<gasche> you could also use the GC functions to build the ocaml-string from your input
<flux> yes, but that doesn't sound like the lowest-effort-approach
introom has quit [Remote host closed the connection]
spearalo1 has quit [Ping timeout: 260 seconds]
spearalot has joined #ocaml
mcclurmc has joined #ocaml
<whitequark> sooo the stock menhir does not offer *any* details of the error in exception Parse.Error? O_o
<gasche> well you should have the error position as well
<gasche> what kind of other details do you think would be appropriate?
<whitequark> gasche: I don't see the error position there.
<whitequark> *even* error position
<whitequark> other appropriate details would include the error'd rule, offending token, maybe a set of possible tokens at that position... bison offers some of that data and the stacks, through I never found the stacks actually useful
<whitequark> menhir's mli has just this: "exception Error
<asmanur> whitequark: you can have that by hacking around the lexer so that to store last viewed token in a reference, and display the token when an error occurs
<whitequark> asmanur: I see
<yezariaely> I want to create an interface from the union of two interfaces. How can I do that? I have a name collision on type t
hyperbor1ean has quit [Quit: leaving]
hyperboreean has joined #ocaml
<companion_cube> whitequark: you should use the info in your Lexing.lexbuf
<companion_cube> yezariaely: include Foo include Bar with type t := t
<yezariaely> companion_cube: what is the difference between := and = ?
ben_zen has quit [Ping timeout: 245 seconds]
<yezariaely> thx!
ygrek has quit [Ping timeout: 245 seconds]
maxibolt is now known as thizanne
osa1 has quit [Quit: Konversation terminated!]
mfp_ is now known as mfp
ollehar has joined #ocaml
MarcWebe1 is now known as MarcWeber
csakatok_ has joined #ocaml
csakatoku has quit [Ping timeout: 268 seconds]
zpe has quit [Remote host closed the connection]
skchrko has joined #ocaml
q66 has joined #ocaml
csakatok_ has quit [Ping timeout: 276 seconds]
zpe has joined #ocaml
ollehar has quit [Ping timeout: 268 seconds]
Kakadu has joined #ocaml
dsheets has joined #ocaml
yacks has joined #ocaml
zpe has quit [Remote host closed the connection]
zpe has joined #ocaml
csakatoku has joined #ocaml
ollehar has joined #ocaml
pootler has quit [Quit: leaving]
pootler_ has quit [Remote host closed the connection]
pootler has joined #ocaml
pootler_ has joined #ocaml
pootler__ has joined #ocaml
wwilly has quit [Remote host closed the connection]
Drup has joined #ocaml
mort___ has joined #ocaml
_andre has joined #ocaml
Arsenik has joined #ocaml
ttamttam has quit [Quit: ttamttam]
Arsenik has quit [Client Quit]
jbrown has quit [Remote host closed the connection]
pootler_1 has joined #ocaml
<whitequark> can I cross-compile ocaml? is ocaml bytecode self-contained?
<companion_cube> I think ocaml bytecode is portable, yes
<whitequark> does it automatically include all libraries used?
<companion_cube> I don't think so
spearalo1 has joined #ocaml
<companion_cube> but you can ship the .cma with your binary ;)
<whitequark> hmpf. good.
<whitequark> that actually gives me a lot of portability.
* companion_cube wonders whether opam can be told just to build bytecode
<thomasga> (opam doesnt have any knowledge of the underlying build system to build the packages)
<thomasga> (and genrally it just calls 'make')
pootler__ has quit [*.net *.split]
csakatoku has quit [*.net *.split]
spearalot has quit [*.net *.split]
<whitequark> idk, I'm fine with even manually extracting .cma files
<whitequark> with a script
<whitequark> searching ocaml library path doesn't sound like the most complicated problem in CS
<whitequark> ... it's not like it is (gasp) synchronising twitter DM status
<pippijn> wmeyer: I'm definitely doing something wrong
<pippijn> wmeyer: 40 seconds on good days is too much, and it's only for one type of target
cross_ has quit [Quit: leaving]
<pippijn> ok, I think I know..
<pippijn> wmeyer: 12 seconds now
<pippijn> I memoise quite much.. the database is now 3.5MB
<Simn> If I have a function returning "func record,record.field", can I rely on the evaluation order or is that not defined?
orbitz has quit [Quit: Reconnecting]
orbitz has joined #ocaml
<Drup> Simn: the evaluation order is not specified, except for short circuit operators, so no, you shouldn't
<companion_cube> Simn: relying on the evaluation order is not very robust, I suggest you use a let
<pippijn> Simn: no
<Simn> Heh, I never knew. Thanks!
<pippijn> Simn: why is it relevant?
Simn is now known as Simn|gone
<pippijn> oh, I see
<pippijn> pattern_ctx has mutable fields
<Simn|gone> Yes
<whitequark> in fact, evaluation order is different in bytecode compiler and native compiler!
<whitequark> so you *will* stumble into it
<Simn|gone> That's exactly the issue we were having.
<pippijn> unless you never use bytecode
<pippijn> like me
<pippijn> (but I'm changing now)
<ousado> is the evaluation order of tuple arguments defined?
<pippijn> no
<pippijn> you mean (func a, func b)?
<ousado> yes
<pippijn> no
<pippijn> and [func a; func b] neither
<pippijn> if ocaml had a parallel runtime, the lack of order could be used to perform parallel computations :)
<MarcWeber> pippijn, ousado :) No its not.
<Drup> pippijn: and blows everyone mind with race conditions
<MarcWeber> I've found the issue in haxe. Exactly that case.
<pippijn> Drup: yeah
<MarcWeber> Thanks @ gasche, too
<ousado> that's why I'm asking
<pippijn> autoparallel is easier in purely functional languages
<whitequark> pippijn: I wonder if one can strap something like OpenMP to ocaml
<pippijn> it can be (and is) done in monadic I/O in ocaml
<whitequark> it's much easier with its set of functional data structure
<whitequark> oh, neat
<Drup> whitequark: the problem is not the lack of tools
<pippijn> whitequark: the ocaml runtime is inherently non-threadable
<pippijn> but I'm curious about ocamljava.. does it have real threads?
<whitequark> right.
<pippijn> java has good thread support
<Drup> whitequark: there is tools to use message passing concurency with ocaml
<pippijn> yeah
<companion_cube> there is some ongoing work to make it possible to have multiple ocaml runtimes in a single process
<pippijn> well in my opinion, using threads for heavy parallel computation is the wrong way to go, anyway
<pippijn> companion_cube: with thread-local?
<whitequark> ocamljava is at 3.11.2...
<companion_cube> pippijn: I think so
<pippijn> whitequark: yeah :\
<companion_cube> it's done by someone a ocamlpro
<pippijn> companion_cube: I want to work at ocamlpro :)
<pippijn> they do cool stuff
<Drup> yeah, Lucas's work is quite awesome =')
<pippijn> maybe I should really get into compiler dev..
<pippijn> ocaml compiler dev, that is
<whitequark> pippijn: there's a 4.00.1 preview
<pippijn> wmeyer: ok, 11 seconds is the best I can do, the rest is I/O bound, I think
<pippijn> is there a way to get the sum of time spent in syscalls?
<MarcWeber> pippijn: time command in shell?
<MarcWeber> I'm not sure it lists user, system, cpu total
<whitequark> there's also something in strace
<pippijn> oh yeah
<pippijn> MarcWeber: I forgot about that
<pippijn> omake 10.89s user 0.58s system 96% cpu 11.925 total
<pippijn> I guess it's not that I/O bound, after all
<pippijn> but I'm not sure there is much I can do about it
<pippijn> that's omake, then
<pippijn> I memoised the most expensive computations
<companion_cube> are you working on improving build systems' performance?
<pippijn> companion_cube: I'm working on my own
<MarcWeber> pippijn: using .opt versions, parallizing, dropping preprocessors, not writing bin-annot can speed up. That's all I know about.
<companion_cube> your own build system? :s
<MarcWeber> But often none of those is a real option
<pippijn> MarcWeber: no, I'm not building anything
<pippijn> this is the time needed to do nothing
<pippijn> just up to date checking
<whitequark> what the hell
<MarcWeber> pippijn: You know that there are sophisticade solutions, eg the one building chrome?
<whitequark> what are you trying to build?!
<pippijn> 4961 files in 1133 directories
<whitequark> but why
<pippijn> MarcWeber: what's that?
<MarcWeber> ninja
<whitequark> ninja is basically `make plumbing'
<whitequark> looks very nice.
<pippijn> whitequark: ocamlbuild is not scalable and not compositionable
<pippijn> maybe it's more scalable now, but still not compositionable
<MarcWeber> pippijn: I can give you my ruby code .. :) It can generate a makefile ..
<companion_cube> the feature I want from a build system is simplicity, not compositionnality :s
<pippijn> MarcWeber: make is not scalable
<pippijn> companion_cube: you do want compositionality
<companion_cube> you mean for submodules, or something like this?
<MarcWeber> If you inline libs it seems to be pretty fast for my case.
<pippijn> yes
<MarcWeber> Anyway I'd be interested in a build system which allows me to specify build options.
<whitequark> pippijn: composability?
<pippijn> build options?
<pippijn> whitequark: yes
<MarcWeber> something like "build haxe with backend flash but without C#"
<Drup> companion_cube: plug multiples plugins into ocamlbuild easily is highly desirable.
<companion_cube> I don't use ocamlbuild's plugin system ^^
<pippijn> MarcWeber: that's easy
eikke has quit [Ping timeout: 256 seconds]
<companion_cube> but of course if you use C stubs that must be mandatory, I suppose?
<MarcWeber> pippijn: How would you do that?
<pippijn> companion_cube: no
<MarcWeber> And is there a way to pass two preprocessor commands to ocaml(c/opt) ?
<Drup> companion_cube: of if you use eliom, js_of_ocaml, other custom compilers, metaocaml, etc
<pippijn> MarcWeber: I would make each backend a library
<Drup> or*
<pippijn> MarcWeber: and link them in depending on options
<companion_cube> Drup: hmm, I think you can tell ocamlbuild which compiler to use
<companion_cube> but there are already far too many build systems for ocaml...
<pippijn> companion_cube: if you generate code, you need to write custom rules
<pippijn> companion_cube: if you write tools that generate code, you want to distribute the rules with your tool
<companion_cube> that must be why I don't use preprocessor :]
<pippijn> companion_cube: not possible with ocamlbuild
<pippijn> people need to copy/paste your rules into their myocamlbuild.ml
<companion_cube> -ocamlc, -ocamlopt, etc. ?
<companion_cube> any took a look at jenga, btw?
<pippijn> this is a library, and it can be dropped anywhere in the source directory of my project
<pippijn> it can also be there alone, provided all its dependencies are installed in the system
<pippijn> that's composability
<pippijn> or compositionality.. I don't know
<pippijn> you don't want to split the OCamlRequires variable into system dependencies and local dependencies
<whitequark> pippijn: pretty sure it's "composability"
<pippijn> ok
<pippijn> MarcWeber: ninja hm..
<pippijn> the opposite of omake
<pippijn> MarcWeber: it still suffers from the same old "needs to look at *every* file in the tree to check up-to-dateness"
fasta_ is now known as fasta
<MarcWeber> pippijn: And how long does it take in your case? I mean eg how long does it take to run "find" in your directory?
<pippijn> not very long
<MarcWeber> So do you think that stating your 1000 file is really the issue?
<orbitz> I like make, although I'm not that good with it
yezariaely has quit [*.net *.split]
raichoo has quit [*.net *.split]
BiDOrD has quit [*.net *.split]
patronus_ has quit [*.net *.split]
vbmithr_ has quit [*.net *.split]
dtg has quit [*.net *.split]
Jenza has quit [*.net *.split]
rwmjones has quit [*.net *.split]
othiym23 has quit [*.net *.split]
NaCl has quit [*.net *.split]
<MarcWeber> Many additional alternatives
pootler_1 has quit [*.net *.split]
_andre has quit [*.net *.split]
pootler_ has quit [*.net *.split]
ollehar has quit [*.net *.split]
dsheets has quit [*.net *.split]
Kakadu has quit [*.net *.split]
cthuluh has quit [*.net *.split]
noplamodo has quit [*.net *.split]
whitequark has quit [*.net *.split]
alang has quit [*.net *.split]
zorun has quit [*.net *.split]
milosn_ has quit [*.net *.split]
brendan has quit [*.net *.split]
Armael has quit [*.net *.split]
mcclurmc has quit [*.net *.split]
gnuvince- has quit [*.net *.split]
gbluma_ has quit [*.net *.split]
wagle_ has quit [*.net *.split]
MarcWeber has quit [*.net *.split]
olasd has quit [*.net *.split]
mathieui has quit [*.net *.split]
jlouis_ has quit [*.net *.split]
Simn|gone has quit [*.net *.split]
ggole has quit [*.net *.split]
willb1 has quit [*.net *.split]
cdidd has quit [*.net *.split]
jpdeplaix has quit [*.net *.split]
tchell_ has quit [*.net *.split]
darkf has quit [*.net *.split]
ohama has quit [*.net *.split]
pippijn has quit [*.net *.split]
srcerer has quit [*.net *.split]
pootler has quit [*.net *.split]
q66 has quit [*.net *.split]
ontologiae has quit [*.net *.split]
domsj has quit [*.net *.split]
chrisdotcode has quit [*.net *.split]
rks`_ has quit [*.net *.split]
ulfdoz has quit [*.net *.split]
asmanur has quit [*.net *.split]
Khady has quit [*.net *.split]
so has quit [*.net *.split]
Arthur_ has quit [*.net *.split]
bobry has quit [*.net *.split]
PM has quit [*.net *.split]
flux has quit [*.net *.split]
Ptival has quit [*.net *.split]
demonimin has quit [*.net *.split]
companion_cube has quit [*.net *.split]
vpm has quit [*.net *.split]
IbnFirnas has quit [*.net *.split]
ccasin has quit [*.net *.split]
rgrinberg has quit [*.net *.split]
zzz_ has quit [*.net *.split]
bernardofpc has quit [*.net *.split]
mort___ has quit [*.net *.split]
Neros_ has quit [*.net *.split]
deavid has quit [*.net *.split]
yroeht has quit [*.net *.split]
dezzy has quit [*.net *.split]
adrien has quit [*.net *.split]
montik_ has quit [*.net *.split]
nicoo has quit [*.net *.split]
Derander has quit [*.net *.split]
caligula__ has quit [*.net *.split]
pr has quit [*.net *.split]
mfp has quit [*.net *.split]
pango has quit [*.net *.split]
tianon has quit [*.net *.split]
def-lkb has quit [*.net *.split]
avsm has quit [*.net *.split]
ousado has quit [*.net *.split]
mal`` has quit [*.net *.split]
hnrgrgr has quit [*.net *.split]
zopt has quit [*.net *.split]
snarkyboojum has quit [*.net *.split]
bitbckt has quit [*.net *.split]
madroach has quit [*.net *.split]
Nahra_ has quit [*.net *.split]
metasyntax` has quit [*.net *.split]
testcocoon has quit [*.net *.split]
josch_ has quit [*.net *.split]
talzeus has quit [*.net *.split]
sgnb has quit [*.net *.split]
Qrntz has quit [*.net *.split]
troydm has quit [*.net *.split]
gasche has quit [*.net *.split]
lenstr has quit [*.net *.split]
wmeyer has quit [*.net *.split]
tlockney has quit [*.net *.split]
adrien_oww has quit [*.net *.split]
cow-orker has quit [*.net *.split]
_habnabit has quit [*.net *.split]
davekong has quit [*.net *.split]
gustav___ has quit [*.net *.split]
emias has quit [*.net *.split]
j0sh has quit [*.net *.split]
ia0 has quit [*.net *.split]
spearalo1 has quit [*.net *.split]
skchrko has quit [*.net *.split]
hyperboreean has quit [*.net *.split]
UncleVasya has quit [*.net *.split]
Snark has quit [*.net *.split]
hkBst has quit [*.net *.split]
thomasga has quit [*.net *.split]
thelema_ has quit [*.net *.split]
Asmadeus has quit [*.net *.split]
amiller_ has quit [*.net *.split]
TaXules has quit [*.net *.split]
mlh has quit [*.net *.split]
orbitz has quit [*.net *.split]
Drup has quit [*.net *.split]
zpe has quit [*.net *.split]
yacks has quit [*.net *.split]
weie has quit [*.net *.split]
transfinite has quit [*.net *.split]
thizanne has quit [*.net *.split]
bholst has quit [*.net *.split]
jdoles has quit [*.net *.split]
jonafan has quit [*.net *.split]
contempt has quit [*.net *.split]
xenocons_ has quit [*.net *.split]
ggherdov has quit [*.net *.split]
avsm_cl has quit [*.net *.split]
vext01 has quit [*.net *.split]
beckerb has quit [*.net *.split]
iZsh has quit [*.net *.split]
jave has quit [*.net *.split]
SuperNoeMan has quit [*.net *.split]
Watcher7|off has quit [*.net *.split]
jyeo has quit [*.net *.split]
lopex has quit [*.net *.split]
Leonidas has quit [*.net *.split]
fasta has quit [*.net *.split]
fds has quit [*.net *.split]
rossberg has quit [*.net *.split]
stomp has quit [*.net *.split]
chris2 has quit [*.net *.split]
ipoulet has quit [*.net *.split]
Cypi has quit [*.net *.split]
madroach has joined #ocaml
Nahra_ has joined #ocaml
testcocoon has joined #ocaml
josch_ has joined #ocaml
talzeus has joined #ocaml
sgnb has joined #ocaml
Qrntz has joined #ocaml
troydm has joined #ocaml
gasche has joined #ocaml
lenstr has joined #ocaml
wmeyer has joined #ocaml
tlockney has joined #ocaml
davekong has joined #ocaml
adrien_oww has joined #ocaml
cow-orker has joined #ocaml
_habnabit has joined #ocaml
gustav___ has joined #ocaml
emias has joined #ocaml
j0sh has joined #ocaml
ia0 has joined #ocaml
yezariaely has joined #ocaml
raichoo has joined #ocaml
BiDOrD has joined #ocaml
patronus_ has joined #ocaml
vbmithr_ has joined #ocaml
dtg has joined #ocaml
Jenza has joined #ocaml
rwmjones has joined #ocaml
othiym23 has joined #ocaml
NaCl has joined #ocaml
yacks has joined #ocaml
eikke has joined #ocaml
orbitz has joined #ocaml
Drup has joined #ocaml
zpe has joined #ocaml
weie has joined #ocaml
transfinite has joined #ocaml
thizanne has joined #ocaml
bholst has joined #ocaml
jdoles has joined #ocaml
jonafan has joined #ocaml
contempt has joined #ocaml
xenocons_ has joined #ocaml
ggherdov has joined #ocaml
avsm_cl has joined #ocaml
vext01 has joined #ocaml
<wmeyer> pippijn, gasche: hello.
<wmeyer> companion_cube: hello
zpe has quit [Remote host closed the connection]
cago has joined #ocaml
spearalo1 has joined #ocaml
pootler_1 has joined #ocaml
_andre has joined #ocaml
mort___ has joined #ocaml
pootler_ has joined #ocaml
pootler has joined #ocaml
ollehar has joined #ocaml
dsheets has joined #ocaml
Kakadu has joined #ocaml
q66 has joined #ocaml
skchrko has joined #ocaml
hyperboreean has joined #ocaml
mcclurmc has joined #ocaml
UncleVasya has joined #ocaml
cthuluh has joined #ocaml
Neros_ has joined #ocaml
milosn_ has joined #ocaml
noplamodo has joined #ocaml
Arthur_ has joined #ocaml
ontologiae has joined #ocaml
Snark has joined #ocaml
Simn|gone has joined #ocaml
domsj has joined #ocaml
beckerb has joined #ocaml
hkBst has joined #ocaml
thomasga has joined #ocaml
bobry has joined #ocaml
chrisdotcode has joined #ocaml
iZsh has joined #ocaml
ggole has joined #ocaml
zorun has joined #ocaml
alang has joined #ocaml
whitequark has joined #ocaml
willb1 has joined #ocaml
brendan has joined #ocaml
cdidd has joined #ocaml
deavid has joined #ocaml
gnuvince- has joined #ocaml
jpdeplaix has joined #ocaml
gbluma_ has joined #ocaml
yroeht has joined #ocaml
PM has joined #ocaml
Armael has joined #ocaml
thelema_ has joined #ocaml
adrien has joined #ocaml
rks`_ has joined #ocaml
tchell_ has joined #ocaml
Asmadeus has joined #ocaml
amiller_ has joined #ocaml
darkf has joined #ocaml
ulfdoz has joined #ocaml
montik_ has joined #ocaml
jave has joined #ocaml
TaXules has joined #ocaml
mfp has joined #ocaml
asmanur has joined #ocaml
wagle_ has joined #ocaml
nicoo has joined #ocaml
MarcWeber has joined #ocaml
ohama has joined #ocaml
olasd has joined #ocaml
pippijn has joined #ocaml
SuperNoeMan has joined #ocaml
dezzy has joined #ocaml
mlh has joined #ocaml
pango has joined #ocaml
tianon has joined #ocaml
Khady has joined #ocaml
mathieui has joined #ocaml
def-lkb has joined #ocaml
avsm has joined #ocaml
jlouis_ has joined #ocaml
Watcher7|off has joined #ocaml
so has joined #ocaml
srcerer has joined #ocaml
ousado has joined #ocaml
flux has joined #ocaml
Ptival has joined #ocaml
mal`` has joined #ocaml
demonimin has joined #ocaml
companion_cube has joined #ocaml
vpm has joined #ocaml
jyeo has joined #ocaml
IbnFirnas has joined #ocaml
lopex has joined #ocaml
ccasin has joined #ocaml
Cypi has joined #ocaml
ipoulet has joined #ocaml
bitbckt has joined #ocaml
chris2 has joined #ocaml
pr has joined #ocaml
caligula__ has joined #ocaml
stomp has joined #ocaml
rossberg has joined #ocaml
zopt has joined #ocaml
snarkyboojum has joined #ocaml
hnrgrgr has joined #ocaml
fds has joined #ocaml
fasta has joined #ocaml
Leonidas has joined #ocaml
Derander has joined #ocaml
rgrinberg has joined #ocaml
zzz_ has joined #ocaml
bernardofpc has joined #ocaml
contempt has quit [Max SendQ exceeded]
ivan\ has quit [Max SendQ exceeded]
zpe has joined #ocaml
* wmeyer today, I am just tired :-)
ivan\ has joined #ocaml
zpe has quit [Read error: Connection reset by peer]
zpe has joined #ocaml
mort___ has quit [Remote host closed the connection]
bholst has quit [Quit: http://quassel-irc.org - Chat comfortably. Anywhere.]
mort___ has joined #ocaml
<pippijn> MarcWeber: I think ninja is good
<pippijn> MarcWeber: I could build a nice build system on top of it
yezariaely has quit [Quit: Leaving.]
yezariaely has joined #ocaml
ivan\ has quit [Changing host]
ivan\ has joined #ocaml
sgnb is now known as Guest37101
NaCl is now known as Guest79601
Guest37101 is now known as sgnb`
cago has quit [*.net *.split]
mcclurmc has quit [*.net *.split]
gnuvince- has quit [*.net *.split]
gbluma_ has quit [*.net *.split]
wagle_ has quit [*.net *.split]
MarcWeber has quit [*.net *.split]
olasd has quit [*.net *.split]
mathieui has quit [*.net *.split]
jlouis_ has quit [*.net *.split]
<eikke> avsm: could you be my hero of the day? :P
cago has joined #ocaml
mcclurmc has joined #ocaml
gnuvince- has joined #ocaml
gbluma_ has joined #ocaml
wagle_ has joined #ocaml
MarcWeber has joined #ocaml
olasd has joined #ocaml
mathieui has joined #ocaml
jlouis_ has joined #ocaml
yezariaely has quit [Client Quit]
yezariaely has joined #ocaml
yezariaely has quit [Client Quit]
yezariaely has joined #ocaml
yezariaely has quit [Client Quit]
yezariaely has joined #ocaml
pootler_1 has quit [*.net *.split]
_andre has quit [*.net *.split]
pootler_ has quit [*.net *.split]
ollehar has quit [*.net *.split]
dsheets has quit [*.net *.split]
Kakadu has quit [*.net *.split]
cthuluh has quit [*.net *.split]
noplamodo has quit [*.net *.split]
whitequark has quit [*.net *.split]
alang has quit [*.net *.split]
zorun has quit [*.net *.split]
milosn_ has quit [*.net *.split]
brendan has quit [*.net *.split]
Armael has quit [*.net *.split]
adrien has quit [*.net *.split]
montik_ has quit [*.net *.split]
nicoo has quit [*.net *.split]
Derander has quit [*.net *.split]
caligula__ has quit [*.net *.split]
pr has quit [*.net *.split]
mfp has quit [*.net *.split]
pango has quit [*.net *.split]
tianon has quit [*.net *.split]
def-lkb has quit [*.net *.split]
avsm has quit [*.net *.split]
ousado has quit [*.net *.split]
mal`` has quit [*.net *.split]
hnrgrgr has quit [*.net *.split]
zopt has quit [*.net *.split]
snarkyboojum has quit [*.net *.split]
bitbckt has quit [*.net *.split]
spearalo1 has quit [*.net *.split]
skchrko has quit [*.net *.split]
hyperboreean has quit [*.net *.split]
UncleVasya has quit [*.net *.split]
Snark has quit [*.net *.split]
hkBst has quit [*.net *.split]
thomasga has quit [*.net *.split]
thelema_ has quit [*.net *.split]
Asmadeus has quit [*.net *.split]
amiller_ has quit [*.net *.split]
TaXules has quit [*.net *.split]
mlh has quit [*.net *.split]
beckerb has quit [*.net *.split]
iZsh has quit [*.net *.split]
jave has quit [*.net *.split]
SuperNoeMan has quit [*.net *.split]
Watcher7|off has quit [*.net *.split]
jyeo has quit [*.net *.split]
lopex has quit [*.net *.split]
Leonidas has quit [*.net *.split]
fasta has quit [*.net *.split]
fds has quit [*.net *.split]
rossberg has quit [*.net *.split]
stomp has quit [*.net *.split]
chris2 has quit [*.net *.split]
ipoulet has quit [*.net *.split]
Cypi has quit [*.net *.split]
pootler_1 has joined #ocaml
_andre has joined #ocaml
pootler_ has joined #ocaml
ollehar has joined #ocaml
dsheets has joined #ocaml
Kakadu has joined #ocaml
cthuluh has joined #ocaml
noplamodo has joined #ocaml
whitequark has joined #ocaml
alang has joined #ocaml
zorun has joined #ocaml
bholst has joined #ocaml
spearalo1 has joined #ocaml
skchrko has joined #ocaml
hyperboreean has joined #ocaml
UncleVasya has joined #ocaml
Snark has joined #ocaml
hkBst has joined #ocaml
thomasga has joined #ocaml
thelema_ has joined #ocaml
Asmadeus has joined #ocaml
amiller_ has joined #ocaml
TaXules has joined #ocaml
q66_ has joined #ocaml
eikke has quit [Read error: Operation timed out]
q66 has quit [Quit: Leaving]
beckerb has joined #ocaml
iZsh has joined #ocaml
jave has joined #ocaml
SuperNoeMan has joined #ocaml
Watcher7|off has joined #ocaml
jyeo has joined #ocaml
lopex has joined #ocaml
Leonidas has joined #ocaml
fasta has joined #ocaml
fds has joined #ocaml
rossberg has joined #ocaml
stomp has joined #ocaml
chris2 has joined #ocaml
ipoulet has joined #ocaml
Cypi has joined #ocaml
q66_ is now known as q66
contempt has joined #ocaml
milosn_ has joined #ocaml
brendan has joined #ocaml
Armael has joined #ocaml
mfp has joined #ocaml
pango has joined #ocaml
tianon has joined #ocaml
def-lkb has joined #ocaml
avsm has joined #ocaml
ousado has joined #ocaml
mal`` has joined #ocaml
hnrgrgr has joined #ocaml
snarkyboojum has joined #ocaml
zopt has joined #ocaml
bitbckt has joined #ocaml
yezariaely1 has joined #ocaml
yezariaely has quit [Client Quit]
contempt has quit [Max SendQ exceeded]
yezariaely1 is now known as yezariaely
mlh has joined #ocaml
contempt has joined #ocaml
cross has joined #ocaml
adrien has joined #ocaml
montik_ has joined #ocaml
nicoo has joined #ocaml
Derander has joined #ocaml
caligula__ has joined #ocaml
pr has joined #ocaml
brendan has quit [Ping timeout: 264 seconds]
travisbrady has joined #ocaml
ollehar has quit [Ping timeout: 256 seconds]
ygrek has joined #ocaml
osa1 has joined #ocaml
cross has quit [Quit: leaving]
jpdeplaix has quit [Ping timeout: 245 seconds]
cross has joined #ocaml
ygrek has quit [Remote host closed the connection]
ygrek has joined #ocaml
beckerb has quit [Ping timeout: 245 seconds]
beckerb has joined #ocaml
eikke has joined #ocaml
gautamc has joined #ocaml
hkBst has quit [Quit: Konversation terminated!]
smondet has joined #ocaml
Kakadu has quit []
smondet has quit [Remote host closed the connection]
yroeht has quit [Ping timeout: 276 seconds]
deavidsedice has joined #ocaml
ygrek has quit [Ping timeout: 276 seconds]
deavid has quit [Ping timeout: 276 seconds]
ygrek has joined #ocaml
cross_ has joined #ocaml
cross has quit [Ping timeout: 276 seconds]
Neros has joined #ocaml
travisbrady has quit [Quit: travisbrady]
ben_zen has joined #ocaml
Neros_ has quit [Ping timeout: 276 seconds]
smondet has joined #ocaml
yezariaely has quit [Quit: Leaving.]
yroeht has joined #ocaml
toolslive has joined #ocaml
raichoo has quit [Quit: leaving]
walter has joined #ocaml
osa1 has quit [Ping timeout: 264 seconds]
jpdeplaix has joined #ocaml
ollehar has joined #ocaml
fraggle_ has joined #ocaml
zpe has quit [Remote host closed the connection]
<pippijn> gasche:
<pippijn> let rec derive_pat : letter -> pattern -> (exprset_pat * Tag.t) list =
<pippijn> fun l -> function
<pippijn> or
<pippijn> let rec derive_pat l : pattern -> (exprset_pat * Tag.t) list = function
zpe has joined #ocaml
<pippijn> it's not important to me that the type of l is specified
bkpt has joined #ocaml
cago has left #ocaml []
domsj` has joined #ocaml
<gasche> pippijn: you can use both
<gasche> you can also use _ for the types you don't want to specify
<gasche> I personally prefer the second form to avoid the "fun l -> function" that I find a bit heavy
ccasin has quit [Remote host closed the connection]
<gasche> some people rather want to see the whole signature at once
domsj has quit [Ping timeout: 268 seconds]
brendan has joined #ocaml
domsj` has quit [Ping timeout: 264 seconds]
tane has joined #ocaml
bkpt has quit [Ping timeout: 252 seconds]
walter has quit [Quit: This computer has gone to sleep]
bkpt has joined #ocaml
csakatoku has joined #ocaml
lopexx has joined #ocaml
<pippijn> wmeyer: I'm down to 9 seconds
ccasin has joined #ocaml
raichoo has joined #ocaml
<pippijn> wmeyer: it's getting close to my original automake/gnu make performance
eikke has quit [Ping timeout: 264 seconds]
skchrko has quit [Quit: Leaving]
csakatoku has quit [Remote host closed the connection]
milosn_ has quit [Ping timeout: 264 seconds]
osa1_ has joined #ocaml
<pippijn> wmeyer: scratch that, I did something wrong
<pippijn> wmeyer: 12 seconds
pootler_1 has quit [Ping timeout: 256 seconds]
pootler_ has quit [Ping timeout: 256 seconds]
pootler has quit [Ping timeout: 268 seconds]
ttamttam has joined #ocaml
ollehar has quit [Ping timeout: 264 seconds]
pootler has joined #ocaml
pootler_ has joined #ocaml
pootler__ has joined #ocaml
csakatoku has joined #ocaml
dfarmer has joined #ocaml
mort___ has quit [Ping timeout: 276 seconds]
csakatoku has quit [Ping timeout: 268 seconds]
dfarmer has quit [Quit: Leaving]
darkf has quit [Quit: Leaving]
mcclurmc has quit [Ping timeout: 264 seconds]
milosn has joined #ocaml
lopexx has quit [Ping timeout: 268 seconds]
ollehar has joined #ocaml
zpe has quit [Remote host closed the connection]
<whitequark> uh, can I specify a default value for a record field?
<orbitz> whitequark: you should always be creating records through a function, which sould specify default avlue
<whitequark> ok
<whitequark> why can't I have both a data structure built with method calls and a method in let rec?
<whitequark> oh right, that doesn't make sense
ttamttam has quit [Quit: ttamttam]
<ggole> Always is a bit strong
<ggole> But if you're wanting any machinery it's function time
<toolslive> once you have a record, there's syntax support to create another with only a few fields changed. { a with x=x'}
<whitequark> yeah, discovered that already
<whitequark> functional update
osa1_ has quit [Ping timeout: 276 seconds]
<whitequark> I need eh... some cyclic data structures created with functions which refer to the cyclic data structures
<whitequark> I guess that will be tricky
<toolslive> not really. let rec can be used for non-functional values as well
<whitequark> yeah, but I cannot initialize a structure with a function defined in the same letrec as the structure
<whitequark> which is what I want
<ggole> I've found let rec for data structures is almost always having the mutable parts of things point at each other
<whitequark> and it makes sense that I cannot do it; it's probably not even possible for general record
<whitequark> ggole: it's immutable, that is the point
ben_zen has quit [Ping timeout: 268 seconds]
<toolslive> you can postpone the definition a bit...
<whitequark> and I don't want to make it mutable, I just want to create the structure
<whitequark> well, lemme check what I can do first.
<toolslive> like this: let x = .... in fun () -> ....
<toolslive> for example fiddling a private ref into a closure: let counter = ref 0 in fun () -> let () = incr counter in !counter
<toolslive> something like that
<toolslive> you can create cyclic values but you need to do it in several steps with a ref holding some intermediate result temporarily.
<toolslive> that cyclic value can be immutable as well.
<whitequark> hmm
<toolslive> altough, you want to do this with records?
<whitequark> yes
<ggole> I don't think you could type that
<toolslive> type x = { next: x} ?
<ggole> Type would be infinite
<whitequark> toolslive: like that, yes
<whitequark> er, wait
<whitequark> that's recursive type
<whitequark> though my type is already recursive, it's not a problem
<toolslive> let rec x = 1 :: x;;
<whitequark> yeah, figured it
<toolslive> of have an option type and construct it in 2 steps
<ggole> type r = { f : <type of r> -> unit; ... }
<ggole> Like that?
<whitequark> ggole: no
<whitequark> type klass = { metaclass : klass }
<whitequark> that's my type
<ggole> Oh, that's fine
<whitequark> now I want to do let rec kClass = { metaclass: kClass }
<whitequark> lemme check if that works
<ggole> Yep
<whitequark> LLVM does funny things with actual recursive types
<whitequark> it allows to encode them in its bitcode/assembly
<whitequark> but if you try to do anything, it just explodes by exhausting stack
<ggole> Doesn't it expect them to go through a pointer?
<whitequark> er, no, that's just different types
<ggole> Hmm
<ggole> I guess they couldn't be bothered checking
<whitequark> it has some performance implications
<whitequark> and LLVM is (and rightly so) all about perf
<whitequark> still funny though.
<toolslive> type x = {next : x };; let rec my_x = { next = my_x};;
<toolslive> works fine.
<toolslive> just don't try to print it ;)
<ggole> Set #print_depth to 4 or something and printing self-referential types isn't so bad
csakatoku has joined #ocaml
<ggole> (Better to #install_printer though)
<ggole> I wish print_depth was smarter, actually
<ggole> You could keep a stack for each type
<ggole> Instead of just one
<ggole> (stack/count/whatever)
<toolslive> but it might be better to have a sum type: type klass = | Bottom | HasParent of klass
ygrek has quit [Ping timeout: 268 seconds]
csakatoku has quit [Ping timeout: 264 seconds]
<whitequark> toolslive: no, that really doesn't map to problem domain
<whitequark> metaclass isn't a parent. every class has a metaclass
<whitequark> it's just that initialization of class Class is weird for a set of reasons
<whitequark> metacircular as hell
<whitequark> I do have a k_ancestor : klass option; though
<ggole> Clearly you should model it with classes :p
<whitequark> ggole: oh god no
<whitequark> I did model it with classes in Ruby
<ggole> But the alliteration!
zpe has joined #ocaml
<toolslive> what's the metaclass of a metaclass?
yacks has quit [Quit: Leaving]
dsheets has quit [Ping timeout: 256 seconds]
<whitequark> all metaclasses have their metaclass set to Class.
<whitequark> in Ruby, there's an infinite lazily created chain of metaclasses of metaclasses
<whitequark> but it isn't necessary and does not map well to my compiler
<orbitz> creating a really solid API is quite an endeavor
<whitequark> Ruby's class/metaclass system is pretty good.
<toolslive> type klass = Class | WithMeta of klass ?
<whitequark> toolslive: then I would need to do pattern matching everywhere I use classes
<whitequark> don't want to do that
<whitequark> and uh, again: all classes have metaclasses
<toolslive> well, sometimes it's simpler to have a sentinel
lopexx has joined #ocaml
<toolslive> and you don't need to do patternmatching everywhere.....
<toolslive> you can have something like the maybe monad
<toolslive> (just pointing to some options there, not wanting to force you to go anywhere)
<toolslive> otherwise you also have to check if a class isn't its own metaclass .....
<toolslive> I don't understand it.
<whitequark> nevermind then
<toolslive> the metaclass of a metaclass is merely a class?
<whitequark> yes
<whitequark> well, the Class
<toolslive> then why don't you model it that way?
<whitequark> because I wanted metaclasses to be just classes?
<whitequark> no options, no variants, etc
<toolslive> well, it sure looks ugly like this.
<toolslive> all these records without mutable fields but with useless initializations like Table.create []
<whitequark> yeah
<whitequark> Table is mutable
<whitequark> so gotta initialize it each time
<whitequark> oh right, and that [] should have been ref []... it's a bug
<toolslive> so a class cannot change ?
pootler__ has quit [Ping timeout: 256 seconds]
pootler_ has quit [Ping timeout: 264 seconds]
pootler has quit [Ping timeout: 264 seconds]
<whitequark> every field except name, ancestor and metaclass essentially contains a mutable object
eikke has joined #ocaml
<toolslive> ok. so if classes are mutable, then why aren't their fields mutable?
pootler has joined #ocaml
<whitequark> why should they be? the present system is mutable enough to model all interactions I want
<whitequark> I never e.g. swap method tables of a class or something like that
<whitequark> so I want to forbid that expressly
pootler_ has joined #ocaml
pootler__ has joined #ocaml
<toolslive> by adding a fixed field with a mutable value.
<toolslive> looks a bit weird.
<whitequark> the values are mutable inherently
<whitequark> they're hashtables
<whitequark> so I can't make them immutable anyway
<toolslive> there's a Map with the same functionality.
alang_ has joined #ocaml
<toolslive> but immutable.
<whitequark> though, it makes sense to model prepended/appended as mutable fields
<whitequark> toolslive: and it's a red-black tree, right?
<whitequark> Tables are hashtables for a reason: I *want* them to be hashtables, exactly that data structure
<toolslive> last time I looked at it.
<toolslive> why?
ollehar1 has joined #ocaml
<whitequark> because: 1) the most expensive operation in my interpreter is method lookup, 2) I have a *lot* of those tables
<whitequark> to my knowledge, a hash table fits this use case well
<toolslive> with all this going on, I would really model it with ocaml classes as well.
<whitequark> hmpf
<whitequark> can ocaml classes be defined mutually recursive with ADTs?
<toolslive> depends on what you mean with ADT
ollehar has quit [Ping timeout: 256 seconds]
<whitequark> sum/product types
ggole has quit []
gal_bolle has joined #ocaml
<whitequark> type value = Class of klass | Int of int and class klass = object val some : value end
<whitequark> doesn't seem to parse
<toolslive> you can make value polymorph and make it work
<whitequark> why is it better than my current approach?
<whitequark> (I need to get AFK for a bit, but I read backlog.)
<toolslive> # type 'a x = X | Y of 'a;;
<toolslive> type 'a x = X | Y of 'a
<toolslive> # class type z = object end;;
<toolslive> class type z = object end
<toolslive> # type zx = z x;;
<toolslive> type zx = z x
<toolslive> #
<toolslive> I'm not saying it's better but your current approach is ugly as hell.
<toolslive> degustibus et coloribus ...
pootler_1 has joined #ocaml
toolslive has quit [Quit: Leaving]
zpe has quit [Remote host closed the connection]
Yoric has joined #ocaml
gal_bolle has quit [Quit: Konversation terminated!]
Yoric has quit [Ping timeout: 252 seconds]
csakatoku has joined #ocaml
yacks has joined #ocaml
<pippijn> 19:05 < whitequark> uh, can I specify a default value for a record field?
<pippijn> whitequark: I usually have an empty version of the record somewhere with all default values and do { empty with stuff }
csakatoku has quit [Ping timeout: 276 seconds]
hyperboreean has quit [Ping timeout: 248 seconds]
<flux> pippijn, doesn't work if you can't have defaults for all fields, though
<pippijn> right
<pippijn> then I have a function to make it
<pippijn> maybe I should go with orbitz' suggestion and always have a function
<pippijn> I don't know, I haven't used ocaml enough to have coding conventions
ollehar1 has quit [Ping timeout: 256 seconds]
mye has joined #ocaml
mye has quit [Client Quit]
mye has joined #ocaml
Yoric has joined #ocaml
mye has quit [Quit: mye]
Yoric has quit [Ping timeout: 252 seconds]
csakatoku has joined #ocaml
travisbrady has joined #ocaml
zpe has joined #ocaml
ontologiae has quit [Ping timeout: 268 seconds]
ttamttam has joined #ocaml
fraggle_ has quit [Remote host closed the connection]
csakatoku has quit [Ping timeout: 264 seconds]
Yoric has joined #ocaml
zpe has quit [Ping timeout: 264 seconds]
<amiller_> will structural equality = ever use physical equality as a short cut
<amiller_> if i have a list "xs" of size N
<amiller_> will (xs = xs) run constant time or linear time in N
<companion_cube> no
<hnrgrgr> amiller_: (xs = xs) is linear while (Pervasives.compare xs xs) is constant.
<amiller_> really, hm.
<hnrgrgr> I can't remember why.
Snark has quit [Ping timeout: 248 seconds]
<companion_cube> hmm, so pervasives.compare first tries physical equality?
travisbrady has quit [Quit: travisbrady]
wagle_ is now known as wagle
speredenn has joined #ocaml
<hnrgrgr> companion_cube: yes.
<wmeyer> pippijn: nice
<hnrgrgr> amiller_: after digging history, the rational seems to be 'float' comparison: 'nan == nan' while 'nan <> nan'.
<whitequark> by the way, extlib is a nice library which provides eg Option.map and friends
<whitequark> and it doesn't depend on unix so I can use it with js_of_ocaml! yay
snearch has joined #ocaml
cross_ has quit [Remote host closed the connection]
gnuvince- is now known as gnuvince
gautamc has quit [Read error: Connection reset by peer]
_andre has quit [Quit: leaving]
gautamc has joined #ocaml
speredenn has quit [Quit: Leaving]
speredenn has joined #ocaml
speredenn has quit [Read error: Connection reset by peer]
speredenn has joined #ocaml
osa1_ has joined #ocaml
emmanuelux has joined #ocaml
csakatoku has joined #ocaml
Neros has quit [Ping timeout: 256 seconds]
emmanuelux has quit [Max SendQ exceeded]
Zerker has joined #ocaml
csakatoku has quit [Ping timeout: 264 seconds]
domsj has joined #ocaml
weie_ has joined #ocaml
<wmeyer> ping adrien
weie has quit [Ping timeout: 256 seconds]
ttamttam has left #ocaml []
fraggle_ has joined #ocaml
Guest79601 is now known as NaCl
Zerker has quit [Quit: Colloquy for iPad - Timeout (10 minutes)]
raichoo has quit [Quit: leaving]
transfinite has quit [Quit: transfinite]
<adrien> pong
<adrien> but I'm quite drunk
transfinite has joined #ocaml
<wmeyer> adrien: hey! good sutff :D
<wmeyer> i am quite sleepy today :-)
<wmeyer> well, don't worry, we'll comeback to cross compilation patches when you'll have time for it.
snearch has quit [Quit: Verlassend]
<adrien> alcohol went straight into my blood
<adrien> I think I'll have time on sunday
<wmeyer> ok, no worries
Zerker has joined #ocaml
<wmeyer> I am not pushing in fact, you said that you will have an "ongoing social events up-coming" - I don't mind, but we need to keep pace 8-)
Simn|gone is now known as Simn
<adrien> I probably didn't say "social event" :D
Simn is now known as Guest40959
<wmeyer> I invented that term now :D
<adrien> :-)
<wmeyer> adrien: once we have all the patches in, we'll organise the social event somewhere to celebrate it
<adrien> hahaha :-)
<wmeyer> :-)
<wmeyer> I'm quite serious here
pootler_2 has joined #ocaml
<adrien> these beer were unplanned but nowadays I make my week's planning and add a few days just of being "busy" to be sure
<adrien> \o/
pootler_3 has joined #ocaml
<wmeyer> it's always good to break out from the routines
fraggle_ has quit [Read error: Connection reset by peer]
dsheets has joined #ocaml
<adrien> I'm starting to get worried that "beer" is the routine actually :D
<wmeyer> haha
<wmeyer> yes indeed :-)
pootler_ has quit [Ping timeout: 256 seconds]
<wmeyer> beer is always good, where is work sometimes is just boring
pootler__ has quit [Ping timeout: 268 seconds]
* wmeyer having a tomato juice now 8-)
pootler_1 has quit [Ping timeout: 264 seconds]
pootler has quit [Ping timeout: 276 seconds]
<adrien> bloody mary, huh
<adrien> there are a few places in paris where you get belgium beers
<adrien> and they're fairly strong
<wmeyer> oh belgium beers are fantastic
pootler has joined #ocaml
pootler_ has joined #ocaml
<wmeyer> I have to switch to tomato juice mhhhhm
Guest40959 is now known as Simn
<wmeyer> there is a beer festival in some pub these days
<wmeyer> they do have some exotic beers
<jpdeplaix> Faro is a good one
jdoles has quit [Read error: Operation timed out]
orbitz has quit [Read error: Operation timed out]
jonafan has quit [Read error: Operation timed out]
<wmeyer> jpdeplaix: never drunk Faro
osnr has joined #ocaml
osnr has quit [Changing host]
osnr has joined #ocaml
jonafan has joined #ocaml
jdoles has joined #ocaml
walter has joined #ocaml
orbitz has joined #ocaml
<jpdeplaix> wmeyer: you should do, so :) We have a beers amateurs association at my school. I drunk some pretty amazing beers.
<jpdeplaix> it's in french, but it's ok
<jpdeplaix> if you want to look at the names
walter has quit [Client Quit]
<wmeyer> it looks like Faro is sweet?
<wmeyer> thanks, looks interesting :-)
lopexx has quit []
<jpdeplaix> wmeyer: yes it's sweet and delicious
<wmeyer> haha: Delirium Tremens - that's something when adrien will move on to the patches
csakatoku has joined #ocaml
<eikke> that's a belgian beer
<adrien> faro is very sweet, yeah
<adrien> nice one
<eikke> (one of the many)
<adrien> good night :P
<wmeyer> adrien: night!
<wmeyer> eikke: yes, Belgian beers are very good
<eikke> sure they are
<whitequark> ugh. ocaml's `open' does not compose
<whitequark> open Sexplib.Std
<whitequark> open ExtHashtbl
<whitequark> and now I can have either of two extensions of Hashtbl
<wmeyer> so what would you expect, may I ask?
<wmeyer> and what does that mean it does not compose
<whitequark> what I want is to use both `Hashtbl.sexp_of_t`, provided by Sexplib.Std; and `Hashtbl.find_option`, provided by ExtHashtbl.
<wmeyer> surely open just concatenates environment with the paths removed first component
<eikke> monkey-patching! having 2 modules with the same name in scope means merging them into 1 :P and for same-named module members, pick one randomly
<whitequark> eikke: yes, something like that
<wmeyer> you can rename them before you open new one
<wmeyer> the module, type or value
<whitequark> wmeyer: as I said: does not compose.
<wmeyer> and open actually overrides in case of colisions
csakatoku has quit [Ping timeout: 268 seconds]
<whitequark> I want both extensions for the same module.
<wmeyer> you can then include them
<wmeyer> in the local module
<whitequark> hm
<wmeyer> and then open that module
Zerker has quit [Remote host closed the connection]
<whitequark> right
<whitequark> thanks
<wmeyer> you are welcome
Zerker has joined #ocaml
<wmeyer> and I am not sure if you can do it without functorsied interfaces in both of your extensions
<wmeyer> ExtLib was designed to work on top the stdlib
<wmeyer> where core has own Hashtbl
<whitequark> oh, I don't use Core
<whitequark> just Sexplib.
<wmeyer> ah ok
<whitequark> both Sexplib and Extlib work fine with js_of_ocaml, whereas Core doesn't
<whitequark> and I don't actually need most of Core features anyway
Zerker has quit [Remote host closed the connection]
Zerker has joined #ocaml
<pippijn> wmeyer: I split my baselib into a corelib and baselib
<pippijn> corelib doesn't use batteries and doesn't have C code
<pippijn> so it works with js
Yoric has quit [Ping timeout: 252 seconds]
Zerker has quit [Remote host closed the connection]
speredenn has quit [Quit: Leaving]
Zerker has joined #ocaml
<pippijn> so, extlib works with js, that's good, maybe I can use it
<whitequark> it also has UTF8 routines
emmanuelux has joined #ocaml
<pippijn> yeah
tane has quit [Quit: Verlassend]
<pippijn> so maybe I can get rid of mine
ben_zen has joined #ocaml
ollehar has joined #ocaml
Zerker has quit [Read error: Connection reset by peer]
<whitequark> yours is more extensive
<whitequark> it has various conversion stuff and I probably going to need utf-16
<whitequark> not sure yet; need benchmarks
Zerker has joined #ocaml
smondet has quit [Quit: Weekend!]
Zerker has quit [Remote host closed the connection]
Zerker has joined #ocaml
Zerker has quit [Remote host closed the connection]
eikke has quit [Ping timeout: 264 seconds]
osa1_ has quit [Ping timeout: 264 seconds]
eikke has joined #ocaml
<wmeyer> pippijn: good stuff, you would tell me when you can draw nice dependency graphs of your projects in the pub here :-)
<wmeyer> (amazing compiler paper)
<wmeyer> (along with other great stuff from NR)
<wmeyer> pippijn: I played with K framework, actually I am excited about using it at work
mcclurmc has joined #ocaml
lopexx has joined #ocaml
ollehar has quit [Ping timeout: 276 seconds]
thomasga has quit [Quit: Leaving.]
mcclurmc has quit [Ping timeout: 264 seconds]
troydm has quit [Ping timeout: 248 seconds]
pootler_2 has quit [Ping timeout: 264 seconds]
pootler_3 has quit [Ping timeout: 264 seconds]
pootler has quit [Ping timeout: 248 seconds]
pootler_ has quit [Ping timeout: 264 seconds]
ollehar has joined #ocaml
Asmadeus has quit [Changing host]
Asmadeus has joined #ocaml
<ousado> wow
<ousado> and I was checking his blog every few days..
bji has joined #ocaml
<bji> hello
<bji> can I get a small amount of ocaml help?
<bji> I am not an ocaml programmer and functional programming is very foreign to me
<bji> I am trying to modify some existing ocaml code
<wmeyer> ousado: hello!
<ousado> bji: hi - working on haxe?
<bji> and am looking for the most expedient way
<bji> yeah
<ousado> wmeyer: hey
<wmeyer> I saw that, yes, I thought you notice it
<bji> I am writing a much better hxcpp built in debugger
* wmeyer is bored with everything
<bji> anyhoo what I need to know is
<bji> I have a construct like this:
<bji> List.iter (fun (v, e) -> do_some_stuff) my_list;
<ousado> wmeyer: :(
raichoo has joined #ocaml
<bji> I want to use an integer that increments for every list element within do_some_stuff
<bji> what is the way to accomplish this?
<bji> Yeah I'm a c++ guy and I tried
<bji> "let counter = ref 0 in ..."
<bji> and then "counter++" within the do_some_stuff
<wmeyer> ousado: even Coq become boring, I have to find my corner, thinking about next generation of hardware (from prism of software), and what recently my couleague described me :-) but that's a secret
<bji> but that doesn't work of course !
<wmeyer> bji: so what exactly you want to do in the body of the closure?
<wmeyer> describe your problem, not in terms of code
<bji> let's say that I just want to print out a number for every element in the list
<bji> and have that number be one greater than the last for every list element
<wmeyer> so there are several options:
<ousado> bji: let i = !counter in counter := !counter + 1;
<ousado> for the ref stuff
<wmeyer> seasoned Haskeller would generate an another list with indicies, zip it and then print it
<wmeyer> experienced OCaml would use stdlib and and fold_left combinator
<wmeyer> practical OCamler would use Core or Batteries to do this task, to generate the first list
<wmeyer> and seasoned OCamler would use reference, and update it inside the closure as you want to do
<bji> ok so something like this?
<wmeyer> so there is no recipe for it, I'd probably resort to last one
<wmeyer> this is a common problem in fact, I wrote this code quite few times.
<bji> List.iter (fun (v, e) -> let counter = ref 0 in begin output(counter); counter := !counter + 1; end) my_list;
<wmeyer> no good
<bji> sorry
<wmeyer> counter should be outside the closure
<bji> I realy know nothing about counter
<bji> I mean
<bji> nothing about ocaml
<ousado> lol
<bji> I am "learning" it just by modifying this code:)
<wmeyer> bji: that's fine, you are learning
<bji> OK so now I have
<bji> let counter = ref 0 in List.iter (fun (v, e) -> begin output(counter);
<bji> counter := !counter + 1; end) my_list;
troydm has joined #ocaml
<bji> is that better?
<wmeyer> you don't beed begin and end, but yes, that should work in principle
<bji> cool beans
ben_zen has quit [Ping timeout: 248 seconds]
<wmeyer> and why you want list, you if you don't use any of `v' or `e'
<bji> I use v
<bji> I just condensed the example
<bji> I don't use e though
<wmeyer> so have fun with ocaml bji :-)
<bji> thank you
<wmeyer> i came from C++ too
<wmeyer> and these days ended up not doing any C++
<wmeyer> and quite happy
<bji> quick question
<bji> how to convert that counter to a string?
<wmeyer> string_of_int, Printf.sprintf
<bji> cool thanks
<wmeyer> you are welcome
jyeo has quit [Remote host closed the connection]
ggherdov has quit [Write error: Broken pipe]
davekong has quit [Remote host closed the connection]
lopex has quit [Remote host closed the connection]
IbnFirnas has quit [Read error: Connection reset by peer]
bobry has quit [Write error: Broken pipe]
<ousado> wmeyer: any special reason for that being a secret?
bji has quit [Remote host closed the connection]
<wmeyer> ousado: yes, I don't know yet what I am talking about =)
<wmeyer> need to drop all my projects which steal my time at the moment, and do the stuff which fits the bill :-)
pootler has joined #ocaml
pootler_ has joined #ocaml
pootler__ has joined #ocaml
chrisdotcode has quit [Ping timeout: 268 seconds]
<ousado> heh, nice title
<wmeyer> it's an amazing book
<wmeyer> it sucked me for hours
<wmeyer> today
<wmeyer> anyway, I will go for sleep, have a great rest of the day everybody! :-)
<ousado> hm. interesting. I tend to not like that kind of books in general
<wmeyer> ousado: try
<wmeyer> well, the writer does iteratively, plus he is focused on psychology and subconciounous reasons of the procrastination
<wmeyer> and offers solution for this
<wmeyer> in a form of simple exercises, to show what's happening in our minds, and highlight how to fight with that, and introduce methods for dealing with tasks in timely basis, at the same time having a time to be creative
<ousado> sounds good.
<wmeyer> it also, shows a system how to manage the backlog
<wmeyer> it's very important for people for us, OCamlers who want to carry on with the stuff
<wmeyer> some people have it out of the box
<ousado> indeed.
<wmeyer> unfortunately I am not kind of person who is good at it
<wmeyer> but i maybe brilliant after implementing his system
<ousado> this was my first week writing more ocaml than anything else, btw
<wmeyer> what he is saying is very clever
<wmeyer> ousado: good luck.
<wmeyer> and please don't forget to extend your knowledge to other corners
<wmeyer> don't do just OCaml
<ousado> I'm not
chrisdotcode has joined #ocaml
<wmeyer> my last discovery was K framework
<ousado> I'm helping to write a new backend for haxe, actually
<ousado> so this is ocaml+haxe+C
<wmeyer> great, is it for which language?
<ousado> C
<wmeyer> pure C?
<ousado> it's going to be a C target
<wmeyer> that's great I'd like to see a C target
<wmeyer> in Haxe
<ousado> yes, me too
<ousado> there's already quite some things in shape
ollehar has quit [Ping timeout: 264 seconds]
<wmeyer> I don't use anything else from lolw level language, just C
<ousado> but the GC is a problem, still
<wmeyer> GC is a problem
<wmeyer> but you can reuse OCaml GC for this? :-)
<wmeyer> good idea?
<ousado> I want to try a combination of region inference and GC
<ousado> hmm.. maybe?
<wmeyer> why not just reuse OCaml runtime or Boehm
<ousado> ah no, license
<wmeyer> Q
<wmeyer> then use Boehm
<wmeyer> or Mono GC
<ousado> yes, boehm will be one option
<ousado> and maybe SGen, yes
<ousado> but it's an interesting part of the project
chrisdotcode has quit [Remote host closed the connection]
<ousado> and with all the static information, I think it should be possible to do better than boehm
<wmeyer> ousado: surely runtimes take time and effort to get to the right shape
<ousado> which doesn't know anything about the types
<ousado> yes, definitely
<ousado> as long as boehm is an option, all is fine
<ousado> since I'm not an expert in the field, it would be crazy to assume to get something better done quickly anyway
<wmeyer> I don't believe you need anything else than just good GC, so bohem allows you to stay in C
<wmeyer> it's not crazy, but it would take time
<ousado> yes, and it will, but since all code is generated, there's no problem with having pluggable GCs
<ousado> the static analysis part makes my brain hurt, but it's really fun.
<wmeyer> you can also try another GC, Qish ( http://starynkevitch.net/Basile/qishintro.html )
<wmeyer> here is more information about GC's http://www.cs.kent.ac.uk/people/staff/rej/gc.html
<ousado> oh nice
eikke has quit [Ping timeout: 264 seconds]
eikke has joined #ocaml
<Simn> Oh right, I kind of forgot about the whole GC thing... :)
<ousado> hehe
<wmeyer> some people still remember =)
<ousado> wmeyer: Simn is one of the two haxe compiler core developers
<wmeyer> ousado: nice to hear, I hope you will find a generic solution for your gc problems. A backend for C language is a bit special you see
<wmeyer> for any language that does have no option for automatic management is difficult when you compile from a higher level language that does have this option
<wmeyer> did you think about a assembler backend for Haxe?
* wmeyer hides
<ousado> hehe
<ousado> actually as I skimmed the paper you linked above, I did
<ousado> but I'm not really worried about the GC, to be honest
<wmeyer> you should not be, but that's very time consuming part
<Simn> You are allowed to worry about GC once higher order functions and dynamic dispatching works. :D
<ousado> .. and the type parameter stuff
osnr has quit [Quit: Leaving.]
Simn has quit [Quit: Leaving]
UncleVasya has quit [Quit: Leaving]
eikke has quit [Ping timeout: 248 seconds]
gnuvince has quit [Ping timeout: 264 seconds]
lopexx has quit []
csakatoku has joined #ocaml
csakatoku has quit [Ping timeout: 276 seconds]
<ousado> is it possible to have default implementations for parts of a functor?
bkpt has quit [Quit: Leaving]
ollehar has joined #ocaml
<wmeyer> ousado: what do you mean by `default implementations for parts of a functor`?
<ousado> a function implementation
<wmeyer> still does not ring, functor in OCaml sense or C++ sense?
<wmeyer> function implementations, you can always include some module inside a functor
<wmeyer> in particular:
<wmeyer> module Foo (Default : BAR) (Argument : BAZ) = struct include Default ... end
<wmeyer> so this allows you to build a Functor with default implementation
<ousado> hmm
<wmeyer> however you can't parametrise the interfaces in OCaml
Neros has joined #ocaml
raichoo has quit [Quit: leaving]
<ousado> wmeyer: interesting
<wmeyer> (means you can't exchange to something different then BAR once you supply this syntacticaly)
<wmeyer> I suppose you can do it in Coq with dependent records
<ousado> I shouldn't be too greedy I guess
<ousado> I really like modules
<wmeyer> default modules are perfectly fine in OCaml