Algebr`` has quit [Read error: Connection reset by peer]
Algebr`` has joined #ocaml
sveit has joined #ocaml
<sveit>
if i declare a module type in an *.mli file "module type T = sig type t .. end", is there a way to avoid having to duplicate the definition in the *.ml file?
tautologico has joined #ocaml
rgrinberg has joined #ocaml
<sveit>
to be more specific, suppose I have a file "t.mli" with some definitions including "module type T = sig type t .. end". When I then try to write a corresponding "t.ml" file, I find that I have to duplicate the module type there. There doesn't seem to be a way to just include it in a single location; omitting it from "t.ml" gives a compilation error, and omitting it from "t.mli" means I cannot access it from other code
nicholasf has quit [Ping timeout: 240 seconds]
<Algebr``>
I believe the answer is no
nicholasf has joined #ocaml
tautologico has quit [Ping timeout: 250 seconds]
FreeBirdLjj has joined #ocaml
tautologico has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 276 seconds]
rwmjones has quit [Ping timeout: 244 seconds]
rwmjones has joined #ocaml
FreeBirdLjj has joined #ocaml
sdothum has quit [Quit: ZNC - 1.6.0 - http://znc.in]
sdothum has joined #ocaml
tautologico has quit [Ping timeout: 258 seconds]
f- has joined #ocaml
tautologico has joined #ocaml
Algebr`` has quit [Ping timeout: 250 seconds]
tmtwd has joined #ocaml
tautologico has quit [Ping timeout: 272 seconds]
<sveit>
Algebr``: thanks! for anyone wondering, there is at least the workaround of having an mli file of only signatures, which can be used without any ml file at all.
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
sh0t has joined #ocaml
sveit has left #ocaml ["ERC (IRC client for Emacs 24.5.1)"]
sdothum has quit [Quit: ZNC - 1.6.0 - http://znc.in]
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
rgrinberg has quit [Ping timeout: 258 seconds]
ygrek has quit [Ping timeout: 272 seconds]
shinnya has quit [Ping timeout: 240 seconds]
vgrocha has quit [Ping timeout: 244 seconds]
kushal has quit [Quit: Leaving]
kushal has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
Algebr`` has joined #ocaml
pierpa has quit [Ping timeout: 276 seconds]
tautologico has joined #ocaml
tmtwd has quit [Ping timeout: 258 seconds]
Algebr`` has quit [Read error: Connection reset by peer]
tmtwd has joined #ocaml
FreeBird_ has joined #ocaml
FreeBirdLjj has quit [Read error: Connection reset by peer]
sh0t has quit [Remote host closed the connection]
shinnya has joined #ocaml
jonasen has joined #ocaml
AlexDenisov has joined #ocaml
tautologico has quit [Ping timeout: 258 seconds]
kushal has quit [Ping timeout: 244 seconds]
kdas__ has joined #ocaml
tmtwd has quit [Ping timeout: 240 seconds]
govg has quit [Ping timeout: 276 seconds]
govg has joined #ocaml
copy` has quit [Quit: Connection closed for inactivity]
kdas__ is now known as kushal
kushal has quit [Changing host]
kushal has joined #ocaml
shinnya has quit [Ping timeout: 258 seconds]
Algebr`` has joined #ocaml
FreeBird_ has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
agarwal1975 has quit [Ping timeout: 258 seconds]
nicholasf has quit []
Simn has joined #ocaml
pyon has quit [Ping timeout: 258 seconds]
AlexDenisov has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
MercurialAlchemi has joined #ocaml
tane has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 240 seconds]
mcc has quit [Quit: Connection closed for inactivity]
A1977494 has joined #ocaml
A19774941 has joined #ocaml
A1977494 has quit [Ping timeout: 240 seconds]
silver has joined #ocaml
A19774941 has quit [Quit: Leaving.]
dexterph has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
AlexDenisov has joined #ocaml
dexterph has quit [Remote host closed the connection]
dexterph has joined #ocaml
rossberg_ has quit [Ping timeout: 264 seconds]
fraggle_ has quit [Read error: Connection reset by peer]
ygrek has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
fraggle_ has joined #ocaml
MercurialAlchemi has joined #ocaml
rossberg_ has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 260 seconds]
MercurialAlchemi has joined #ocaml
<Algebr``>
what part of the ast do I match on for just a plain value in ppx?
<Algebr``>
Example, PStr [{ pstr_desc = Pstr_eval ({ pexp_loc = loc; pexp_desc = Pexp_constant (Pconst_string (sym, None))}, _)}] -> gets you sym as a string
<Algebr``>
but say for something simple like [%foo bar] you just want to do f bar, so just want to match on the value bar itself as an identifier
Mercuria1Alchemi has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 264 seconds]
AltGr has joined #ocaml
Algebr`` has quit [Ping timeout: 250 seconds]
dakk has quit [Ping timeout: 276 seconds]
dakk has joined #ocaml
tmtwd has joined #ocaml
axiles has joined #ocaml
AlexDenisov has quit [Read error: Connection reset by peer]
AlexDenisov has joined #ocaml
AlexDenisov has quit [Read error: Connection reset by peer]
AlexDenisov has joined #ocaml
AlexDenisov has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
AlexDenisov has joined #ocaml
tmtwd has quit [Ping timeout: 250 seconds]
AlexDenisov has quit [Read error: Connection reset by peer]
AlexDenisov has joined #ocaml
jwatzman|work has joined #ocaml
AlexDenisov has quit [Client Quit]
AlexDenisov has joined #ocaml
<Drup>
Algebr: for this kind of questions, "ocaml -dparsetree" and look at the output.
AlexDenisov has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
ygrek has quit [Ping timeout: 272 seconds]
AlexDenisov has joined #ocaml
AlexDenisov has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
sdothum has joined #ocaml
A1977494 has joined #ocaml
MercurialAlchemi has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
Mercuria1Alchemi has quit [Ping timeout: 240 seconds]
FreeBirdLjj has joined #ocaml
malc_ has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
ggole has joined #ocaml
dave24 has joined #ocaml
tautologico has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
yomimono has joined #ocaml
malc_` has joined #ocaml
tautologico has quit [Ping timeout: 240 seconds]
malc_ has quit [Ping timeout: 250 seconds]
MercurialAlchemi has quit [Ping timeout: 240 seconds]
fraggle_ has quit [Remote host closed the connection]
malc_` is now known as malc_
darkf has quit [Quit: Leaving]
duncan_bayne has joined #ocaml
<duncan_bayne>
Hi :) Quick question re. building from source. I'm running 'make install' but getting: cp: cannot stat ‘stdlib.cmxa’: No such file or directory
<duncan_bayne>
Suspect I'm doing something daft; this is the first time I've installed ocaml from source. Any suggestions?
<malc_>
duncan_bayne: make install without prior make world[.opt]?
fraggle_ has joined #ocaml
<duncan_bayne>
malc: Thanks :) That solved it.
<mrvn>
please file a bug so that a dependency is added in the makefile
malc_` has joined #ocaml
malc_ has quit [Ping timeout: 252 seconds]
MercurialAlchemi has joined #ocaml
fraggle_ has quit [Remote host closed the connection]
AlexDenisov has joined #ocaml
malc_`` has joined #ocaml
malc_` has quit [Ping timeout: 240 seconds]
A19774941 has joined #ocaml
rgrinberg has joined #ocaml
A1977494 has quit [Ping timeout: 252 seconds]
ontologiae has joined #ocaml
rgrinberg has quit [Quit: WeeChat 1.5]
rgrinberg has joined #ocaml
duncan_bayne has quit [Ping timeout: 276 seconds]
MercurialAlchemi has quit [Ping timeout: 240 seconds]
fraggle_ has joined #ocaml
A19774941 has quit [Quit: Leaving.]
dwillems has joined #ocaml
malc_``` has joined #ocaml
ontologiae has quit [Ping timeout: 250 seconds]
Sorella has quit [Quit: Connection closed for inactivity]
malc_`` has quit [Ping timeout: 276 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
FreeBird_ has joined #ocaml
agarwal1975 has joined #ocaml
FreeBirdLjj has quit [Ping timeout: 250 seconds]
vgrocha has joined #ocaml
FreeBird_ has quit [Ping timeout: 276 seconds]
AlexDenisov has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
sh0t has joined #ocaml
beginner has joined #ocaml
<beginner>
what is the difference between somethin like 'a. 'a -> int and just 'a -> int? I am a bit confused about explicit polymorpism
<companion_cube>
`'a. 'a -> int` is mostly used in objects and records
<companion_cube>
the difference is that 'a does not occur in the object/record type
<companion_cube>
e.g. type foo = { call: 'a. 'a -> 'a }
<companion_cube>
here, foo does not depend on 'a
<beginner>
companion_cube: thats cool, i always wondered how I can get rid of 'a foo, in some cases
<companion_cube>
well this is for quite specific use cases
<beginner>
companion_cube: do you use this often, and if so for what cases?
<companion_cube>
no, I mostly use it for things like continuations, so it's a bit advanced
tautologico has joined #ocaml
<companion_cube>
in general, you can only store very polymorphic functions this way, not data
AlexDenisov has joined #ocaml
<beginner>
companion_cube: can gadts be used this way, to avoid the 'a foo?
<companion_cube>
hmmm
<companion_cube>
what are you actually trying to do? :p
AlexDenisov has quit [Read error: Connection reset by peer]
AlexDeni_ has joined #ocaml
<beginner>
companion_cube: Get a better understanding of whats possible with OCaml features, like GADTs or this explicit polymorphism. Broaden the OCaml horizon
AlexDeni_ has quit [Read error: Connection reset by peer]
<ggole>
You can use GADTs to "hide" the polymorphic result of a function in some cases
<ggole>
Probably better to write some test functions to see how polymorphic arguments work first though
AlexDenisov has joined #ocaml
<beginner>
i found this cambridge lecture about advanced functional programming very interesting, they have a chapter about gadts
<ggole>
They're certainly a lot of fun to play with
tautologico has quit [Ping timeout: 240 seconds]
<beginner>
i am always wondering what kind of language are expressable with gadts, regular languages or context free grammars
shinnya has joined #ocaml
<ggole>
GADTs are just data types. You can express arbitrary graphs with them.
<beginner>
data types with constraints, i was thinking about what language these constraints resamble
<companion_cube>
hmmmm
<beginner>
companion_cube: could you elaborate?
<companion_cube>
I'm not sure it's relevant to talk about "regular languages" for GADTs
<companion_cube>
they can express interesting typing constraints, is all
<beginner>
maybe the other way round, when i have a constraint that i can express in a cfg or regular language would that be possible to express with gadts
<ggole>
I would say that GADTs are mostly interesting because they express less, with a type level guarantee of the reduced power.
<beginner>
What to you mean with "reduced power"?
<ggole>
That they can represent fewer things (than the equivalent plain data type)
<beginner>
why fewer?
<ggole>
Well, the type constraints are constraints. They constrain.
<ggole>
In this case the GADT is interesting exactly because it rules out the example program
f- has quit [Max SendQ exceeded]
ghtdak has joined #ocaml
f- has joined #ocaml
<beginner>
ggole: now i understand what you meant about fewer things, thanks
<ggole>
beginner: a good GADT exercise would be to write an interpreter for each term
<beginner>
ggole: i will try that
AlexDenisov has quit [Read error: Connection reset by peer]
ontologiae has joined #ocaml
AlexDenisov has joined #ocaml
AlexDenisov has quit [Read error: Connection reset by peer]
pyon has joined #ocaml
AlexDenisov has joined #ocaml
AlexDenisov has quit [Read error: Connection reset by peer]
AlexDenisov has joined #ocaml
Guest_84847 has joined #ocaml
<Guest_84847>
Allah is doing
<Guest_84847>
sun is not doing Allah is doing
<Guest_84847>
moon is not doing Allah is doing
<Guest_84847>
stars are not doing Allah is doing
<Guest_84847>
planets are not doing Allah is doing
<Guest_84847>
galaxies are not doing Allah is doing
<Guest_84847>
oceans are not doing Allah is doing
<Guest_84847>
mountains are not doing Allah is doing
<dave24>
>kiwiirc.com
<Guest_84847>
trees are not doing Allah is doing
<Guest_84847>
mom is not doing Allah is doing
<Guest_84847>
dad is not doing Allah is doing
<Guest_84847>
boss is not doing Allah is doing
<Guest_84847>
job is not doing Allah is doing
<Guest_84847>
dollar is not doing Allah is doing
<Guest_84847>
degree is not doing Allah is doing
<Guest_84847>
medicine is not doing Allah is doing
<companion_cube>
again?
<Guest_84847>
customers are not doing Allah is doing
<dakk>
wtf?
<Guest_84847>
you can not get a job without the permission of allah
<Guest_84847>
you can not get married without the permission of allah
<companion_cube>
mrvn: ping
<companion_cube>
flux: ping
<zozozo>
seems like allah lost its capital letter...
<Guest_84847>
nobody can get angry at you without the permission of Allah
<Guest_84847>
light is not doing Allah is doing
<companion_cube>
sense is not making Guest_84847
<mehdib>
Error: Unbound constructor Allah
<Guest_84847>
fan is not doing Allah is doing
<Guest_84847>
businessess are not doing Allah is doing
<Guest_84847>
america is not doing Allah is doing
<dave24>
I was going to ask a question about ocaml, but I decided to wait because our dear guest is spamming the channel
<dave24>
and now I figured it out myself anyway
<Guest_84847>
fire can not burn without the permission of allah
<companion_cube>
mrvn, flux: I'd suggest to appoint more ops
<ggole>
/ignore is right there...
<Guest_84847>
knife can not cut without the permission of allah
<ggole>
But yes, more ops would probably be a good idea
<companion_cube>
ops cannot kick without the permission of allah, it seems
<Guest_84847>
rulers are not doing Allah is doing
<Guest_84847>
governments are not doing Allah is doing
yegods has joined #ocaml
<Guest_84847>
sleep is not doing Allah is doing
<Guest_84847>
hunger is not doing Allah is doing
<Guest_84847>
food does not take away the hunger Allah takes away the hunger
<Guest_84847>
water does not take away the thirst Allah takes away the thirst
<companion_cube>
ffs
<Guest_84847>
seeing is not doing Allah is doing
<Guest_84847>
hearing is not doing Allah is doing
<Guest_84847>
seasons are not doing Allah is doing
<Guest_84847>
weather is not doing Allah is doing
<Guest_84847>
humans are not doing Allah is doing
<Guest_84847>
animals are not doing Allah is doing
<Guest_84847>
the best amongst you are those who learn and teach quran
<Guest_84847>
one letter read from book of Allah amounts to one good deed and Allah multiplies one good deed ten times
<dave24>
can i read the same letter repeatedly?
<Guest_84847>
hearts get rusted as does iron with water to remove rust from heart recitation of Quran and rememberance of death
<Guest_84847>
heart is likened to a mirror
<Guest_84847>
when a person commits one sin a black dot sustains the heart
<Guest_84847>
to accept Islam say that i bear witness that there is no deity worthy of worship except Allah and Muhammad peace be upon him is his slave and messenger
<Guest_84847>
Allah created the sky without any pillars
<mquin>
Guest_84847: knock it off, please
<Guest_84847>
allah makes the sun rise from the east and Allah makes the sun set in the west
<nore>
mquin: unfortulately, it's been almost 1h he's been doing that and no op is present to kick him :/
<Guest_84847>
allah makes the day into the night and Allah makes the night into the day
Guest_84847 has quit [Disconnected by services]
<mehdib>
thanks!
<nore>
thanks!
<tobast>
\o/
<ggole>
dave24: what do you mean?
so has joined #ocaml
<dave24>
ggole: which message are you referring to?
<ggole>
<dave24> can i read the same letter repeatedly?
<dave24>
the guest said reading one letter of koran is one good deed
<ggole>
Oh, I thought it was an OCaml question -_-
<dave24>
;D
malc_```` has joined #ocaml
tautologico has quit [Ping timeout: 240 seconds]
malc_``` has quit [Ping timeout: 276 seconds]
dexterph has quit [Ping timeout: 276 seconds]
slash^ has joined #ocaml
Algebr`` has joined #ocaml
AlexDenisov has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tautologico has joined #ocaml
yegods has quit [Remote host closed the connection]
yegods has joined #ocaml
alpen has quit [Ping timeout: 250 seconds]
alpen has joined #ocaml
unbalancedparen has joined #ocaml
tautologico has quit [Ping timeout: 260 seconds]
Algebr`` has quit [Ping timeout: 250 seconds]
malc_```` is now known as malc_
yegods has quit [Remote host closed the connection]
dakk has quit [Ping timeout: 240 seconds]
jwatzman|work has quit [Quit: jwatzman|work]
ygrek has joined #ocaml
Algebr`` has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 272 seconds]
yegods has joined #ocaml
yomimono has quit [Ping timeout: 240 seconds]
dwillems has quit [Ping timeout: 276 seconds]
mcspud has quit [Ping timeout: 250 seconds]
yegods has quit [Ping timeout: 252 seconds]
al-damiri has quit [Quit: Connection closed for inactivity]
cloneme has joined #ocaml
<cloneme>
howdy
mcspud has joined #ocaml
al-damiri has joined #ocaml
Algebr`` has quit [Ping timeout: 250 seconds]
pierpa has joined #ocaml
orbifx has joined #ocaml
gl has joined #ocaml
<gl>
Guest74260 who are you?
<gl>
i heard there are some spam issues in here
<ggole>
There was one spammer, <Guest_84847>
<gl>
alright then
<ggole>
I take it you're an admin? If so, thanks for dropping by.
<gl>
i'm just the owner of the chan, but i was away when i received the message
<ggole>
Oh, OK
<flux>
gl, perhaps you could appoint companion_cube and ggole as ops
<flux>
(I don't have the access to do that)
A1977494 has joined #ocaml
<gl>
sure
<gl>
ggole: are you okay with that?
<gl>
:)
<ggole>
Sure
<flux>
though am I reading it correctly that ggole is not signed in to freenode
<ggole>
Oh yeah, I'd need to go through that again
tormen has joined #ocaml
<ggole>
...but not now, I'm about to head off
<gl>
is ggole your registered nickname?
<ggole>
It used to be, but I think it is probably lapsed
<tormen>
Hi :) ... If I have the choice between using a Set and a plain list ... which one is faster/better ?
<tormen>
... list I guess ?
<companion_cube>
depends on what you do
<flux>
tormen, it really depends on how you are going to use them
<companion_cube>
if you test for membership often, Set is much better
<ggole>
iirc after 6 months or so they drop registrations to free up old nicks
<gl>
companion_cube: you have +o access
<companion_cube>
thanks!
<tormen>
okey. I want to use it in a "fold". So "add" and then I need a "get-all" .... where with the list ... I am just answering my own question ;) ... I can just hand over the list ^^
<tormen>
darn. it is too hot. How can one clearly think with this weather ... ^^
<mrvn>
we can't
<tormen>
:D
<flux>
ac :)
<flux>
fold, add and get-all are all well-suited for lists
<gl>
ggole: let me know when you have a registered nickname, then
<tormen>
flux: :) ... yep. Thanks!
yegods has joined #ocaml
ygrek has quit [Ping timeout: 252 seconds]
<ggole>
gl: will do
<ggole>
All right, I gotta leave - see you around
ggole has quit []
MercurialAlchemi has joined #ocaml
<gl>
well, bye
gl has left #ocaml [#ocaml]
Algebr`` has joined #ocaml
t4nk204 has joined #ocaml
ygrek has joined #ocaml
dave24 has quit [Quit: leaving]
<t4nk204>
Is this the right place to ask about mysql bindings? I've been using them for a while, no problems, but trying to get a transaction to work is failing. Any known limitations regarding transactions? Didn't see any in docs. Cannot get any to work for me.
<flux>
t4nk204, yes, this is the right place. though I haven't used them.
<flux>
seems like bindings shouldn't bring these kind of limitations, though
<t4nk204>
I'm getting complaints about sql syntax yet the same sql statement works just fine in phpMyAdmin for mysql server. Seems now that any transaction I attempt through ocaml mysql binding fails.
tmtwd has joined #ocaml
yegods has quit [Remote host closed the connection]
shinnya has quit [Ping timeout: 252 seconds]
malc_` has joined #ocaml
malc_ has quit [Ping timeout: 240 seconds]
slash^ has quit [Read error: Connection reset by peer]
zpe has joined #ocaml
copy` has joined #ocaml
yegods has joined #ocaml
buddyholly has quit [Ping timeout: 240 seconds]
tmtwd has quit [Ping timeout: 264 seconds]
Kakadu has joined #ocaml
Algebr`` has quit [Read error: Network is unreachable]
Algebr`` has joined #ocaml
zpe has quit [Remote host closed the connection]
MercurialAlchemi has quit [Ping timeout: 276 seconds]
cdidd has quit [Ping timeout: 240 seconds]
MercurialAlchemi has joined #ocaml
jonasen has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
cdidd has joined #ocaml
jonasen has joined #ocaml
tautologico has joined #ocaml
orbifx1 has joined #ocaml
sveit has joined #ocaml
yegods has quit [Remote host closed the connection]
<sveit>
yesterday I asked a question about duplicating module types in *.mli and the corresponding *.ml file. I thought a workaround was to have a *.mli file without a corresponding *.ml file. My problem is that if i have t.mli with "module type M = sig type t end" with no *.ml, then try to write a.mli with "include (module type of T)" and a.ml with "include T", all in the same directory, ocamlbuild succeeds with "ocamlbuild a.cma" (I have also
<sveit>
tried a.cmo) but when I try to #load "a.cma" it fails with "reference to undefined global T". Is there a way to force "linking" of a .mli or a .cmi?
<sveit>
my current workaround is just to call "t.mli -> t.ml", but that seems not to be the recommended way
tautologico has quit [Ping timeout: 244 seconds]
vgrocha has quit [Quit: Leaving]
<Kakadu>
AFAIR, you can try to create .mllib file with modules which should be included into cma
<Kakadu>
(I supposte that t.cmi is not in your cma. You can check it using ocamlobjinfo)
<companion_cube>
if you're an invited speaker, you might not pay the fee (idk); if you have a talk accepted it's the regular fee
<Kakadu>
okay, thanks
Simn has quit [Quit: Leaving]
<companion_cube>
(but few people are "invited speakers")
<companion_cube>
(it's a mark of prestige usually)
<Kakadu>
OKay...
<Drup>
kakadu: it doesn't, but you can get help to cover the costs if you have a talk.
<Drup>
there are details on the website, contact them
<sveit>
kakadu: thanks! i tried putting "t" and "t.cmi" into "a.mllib" and then running "ocamlbuild a.cma". again, the build succeeds but i get the same "reference to undefined global T" error
ontologiae has quit [Ping timeout: 250 seconds]
<Kakadu>
sveit: btw, does it make any sense to include module type to .ml file?
Kakadu has quit []
Kakadu has joined #ocaml
yegods has joined #ocaml
<sveit>
kakadu: not sure what you mean? i have tried (which works) to instead of having t.mli have t.ml
<sveit>
but it seems this is not "best practice"
yegods has quit [Read error: Connection reset by peer]
yegods has joined #ocaml
<Kakadu>
sveit: Basically, you want to have declaration of module type M in your .ml file, don't you?
<Kakadu>
If yes you can try `include T`
<sveit>
hmm. ok so what I have now is (1) t.mli : module type M = sig type t end (2) a.mli : include (module type of T) (3) a.ml : include T . are you suggesting I write t.ml : include T?
<sveit>
of course the point is i have a module that I would like to export, amongst other things like functions and modules, lots of module types. the problem i am trying to avoid is that module types seem to need to be duplicated across ml and mli files
dakk has joined #ocaml
AlexDenisov has joined #ocaml
<Kakadu>
Weird, I listed some modules in mllib file but they are not linked to cm[x]a
<sveit>
thanks for looking into it! i'll just stick with the *.ml file i guess.
<Kakadu>
you can also make some noise in maillist
<sveit>
new to the language, i will probably subscribe soon :)
jonasen has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
tane has quit [Ping timeout: 272 seconds]
yegods has quit []
<sveit>
i also have another, loosely related question. you can make a type abstract so that you can be sure invariants of the type will be maintained (i.e. hide the representation and only allow creation by certain functions and constants). is there a similar notion for modules? what i mean is suppose I have a "module type A = sig type a; val z : a; val f : a -> a -> a end" and want to have "module type B = sig module BA : A; val g : a -> a; g
<sveit>
a = f z a end", i.e. somehow guarantee that g uses f in the way i specified
<sveit>
sorry, "module type B = sig module BA : A; val g : BA.a -> BA.a; g a = BA.f BA.z a"
<Kakadu>
I don't really understand how we can use function a->a->a wrong...
<sveit>
kakadu: i guess the point is I know I can write a functor to give me a module of type B from a module of type A
<sveit>
this is just like saying I can generate an instance of a type
<sveit>
but I can make the type abstract to ensure "invalid" instances of the type can't be made
<Kakadu>
mmm, maybe you are talking about generative functors?
<sveit>
but with the setup above, a user could just write a new module that satisfies the signature of B, would be usable everywhere, but might just have "g = id"
<Kakadu>
I don't think that something like you want exists
fraggle_ has quit [Read error: Connection reset by peer]
Mandus has joined #ocaml
<sveit>
kakadu: thanks, i figured no :)
tane has joined #ocaml
agarwal1975 has quit [Ping timeout: 260 seconds]
Kakadu has quit []
Kakadu has joined #ocaml
t4nk204 has quit []
sveit has quit [Ping timeout: 260 seconds]
shinnya has joined #ocaml
silver has quit [Quit: rakede]
tane has quit [Quit: Leaving]
shinnya has quit [Ping timeout: 276 seconds]
MercurialAlchemi has quit [Ping timeout: 264 seconds]
AlexDenisov has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
ontologiae has joined #ocaml
Kakadu has quit []
Kakadu has joined #ocaml
A1977494 has quit [Quit: Leaving.]
AltGr has left #ocaml [#ocaml]
wizeman has quit [Quit: Connection closed for inactivity]
malc_` has quit [Remote host closed the connection]