<Drup>
1) have a foo_sigs.mli and put all th signature there
<Drup>
2) ppx_import
<Enjolras>
and since module types and module are two different kind of object, it's not possible to write something like module T = struct type t = int end module type TS = sig include T val foo : t -> int end
<Enjolras>
hmm
<Enjolras>
Drup: 1) is what i do, but you still have to write the types twice
<Enjolras>
or do you mean 1) and 2) are two steps of the same solution ?
<Drup>
No, but you can put module containing only types is the foo_sigs.mli
<Enjolras>
(this has been annoying me for *years* so i decided today was the day i asked what people were doing :p)
<Enjolras>
Drup: sorry ? i don't manage to understand your last sentence :/
<Enjolras>
in* ?
<Drup>
yes, in*
<Enjolras>
sorry, but i don't understand. Once you have put modules types in foo_sigs.mli, then what ? how do you convert them back to actual types ?
<Drup>
that's what I'm saying, you can put *modules* that contains only types in foo_sigs.mli
<Drup>
it also works
<Drup>
not only module types
<Enjolras>
i tried, but it says syntax error. Is that new ? i have ocaml 4.02.1 here
<Drup>
module M : sig ... end
<Drup>
it's still an mli
<Enjolras>
Oh ! I get it. You can sort of declare a module type and skip the implemtation if it conains only types. Nice !
<Enjolras>
thank you ! :)
nullcatxxx_ has quit [Read error: Connection reset by peer]
python476 has joined #ocaml
nullcatxxx_ has joined #ocaml
wiml has quit [Quit: wiml]
j0sh has quit [Remote host closed the connection]
<seliopou>
i meant more like, where's the module in their code where they get their entropy?
<seliopou>
spelunking through core is hairy business
gobbledigook has joined #ocaml
darkf has joined #ocaml
nullcatxxx_ has quit [Ping timeout: 260 seconds]
nullcatxxx_ has joined #ocaml
travisbrady has quit [Quit: travisbrady]
Tekilla has joined #ocaml
_andre has quit [Read error: Connection reset by peer]
johnf_ has quit [Remote host closed the connection]
ivan\ has quit [Ping timeout: 246 seconds]
triogenes has joined #ocaml
<triogenes>
hey all - i'm having issues installing core through opam - on a fresh install of ocaml on fedora 22
<ianhedoesit>
I know, I mean there is literally a function called `float` which is the same as `float_of_int` but there's not a literal function `int` which is `float_of_int`
<toolslive>
yes, naming isn't always consistent in the std lib. neither is design
<dmbaturin>
Ah. Well, design mistake that stuck probably.
<ianhedoesit>
dmbaturin: no, but it's a nice tool it semms. it doesn't answer my question though. I don't expect there to be a good reason, I was just hoping I was missing something
<dmbaturin>
In any case, float_of_int also exists. I normally use that rather than float.
<ianhedoesit>
yeah, it just seems odd that the documentation for `float` is just "Same as float_of_int." for no good reason. (I understand things happen and cruft happens, but I was hoping for a more technical reason.)
ivan\ has quit [Ping timeout: 246 seconds]
orbifx has joined #ocaml
<dmbaturin>
Maybe it's something from CAML Light times.
<orbifx>
hello all
<dmbaturin>
You can recreate the int conterpart of this design issue with let int = int_of_float :)
<dmbaturin>
Hi orbifx!
<ianhedoesit>
;) I could, but that's no fun.
<orbifx>
hello dmbaturin!
<fds>
It would be nice if they fixed a load of these irregularities in syntax and the standard library, but oh well.
<flux>
I think the 'float' is more reasonable have as it's a mostly non-destructive transformation, whereas 'int' would then choose a policy how to round
bugabinga has quit [Quit: No Ping reply in 180 seconds.]
<flux>
and float is also more practically useful than 'int' would be. you more often start with integers and to to floats than vice versa.
<flux>
s/to to/go to/
ivan\ has joined #ocaml
<flux>
float_of_int x /. float_of_int y doesn't really roll of your tongue nicely.. ;)
ely-se has joined #ocaml
<toolslive>
you could also allow overloading
<flux>
well, it's not just "allow" it, it bring all kinds of complexities
<flux>
but there is something like that coming up, namely modular implicits
<toolslive>
I know; it complicates type inference
bugabinga has joined #ocaml
<toolslive>
but complexities inside the compiler are not an excuse for not doing the right thing
<flux>
well, it can also complicate error messages
<flux>
and the solution isn't just "well make them simpler" if the problem is complicated :)
<dmbaturin>
Rule of ocaml: floats discussion morphs into an ad hoc polymorphism discussion within minutes. ;)
<flux>
personally I would love to see /. and friends go away.
<flux>
it's just that after a pause and starting to write heavily floaty code it's practically 100% guaranteed that I will accidentally use + instead of +.
<flux>
also, converting equations from maxima will be a work of search/replace with that ;)
ivan\ has quit [Ping timeout: 246 seconds]
<flux>
I'm still sort of happy that we don't have F#/SML-like ad-hoc specialization feature in the compiler for ints/floats :)
ivan\ has joined #ocaml
ivan\ has quit [Changing host]
ivan\ has joined #ocaml
<ianhedoesit>
I'm just starting to learn OCaml (it's been a language I've wanted to look into for awhile) and so far my biggest hurdle is the "." versions of numeric operators
govg has quit [Ping timeout: 255 seconds]
<flux>
it's super if that's the greatest hurdle :-)
<ianhedoesit>
I'm not unfamiliar with functional programming, so nothing (thus far) is foreign. and the int vs float operators isn't really an issue - it's simple enough to keep track of mentally.
<flux>
the compiler is certainly happy to inform you if yu mess up :)
<ianhedoesit>
yup, which is nice. my functional programming background is primarily Clojure, so the static type-checking is nice.
<toolslive>
hm, "complicate error messages"; currently you also have the problem that the compiler complains on the location where the unification is stuck, and not the root cause. so error messages have complications already.
<toolslive>
anyway, I'm quite happy with the language (even though there is cruft and silliness) it's the runtime that bothers me more.
<ianhedoesit>
toolslive: how come? I know virtually nothing about anything in the world of ocaml.
<toolslive>
well, parallelism is a problem, and fork is not a solution. resource management can be problematic too (for example values in the c-heap that are not freed because the associated value on the ocaml heap is too small to bother the gc)
<toolslive>
but don't worry: you will not hit that often.
<toolslive>
ocaml is functional and has static typing; that's 95% of what you need.
<orbifx>
flux, why not shadow the other integer operators in your scopes?
<ianhedoesit>
I have read some about ocaml performance and constraints.
darkf has quit [Ping timeout: 264 seconds]
<toolslive>
performance and constraints?
<ianhedoesit>
I think it's interesting how much the implementation of an interpreter (or I suppose the design of the bytecode) affects the performance of a language today. Whereas a few years ago a non-parallel interpreted language was fine, today it can be a real problem for a lot more applications.
<ely-se>
implementation of interpreter dictates performance of programs running in that interpreter
<ianhedoesit>
not to say that I think ocaml isn't fit for most of what anyone (especially me) needs a language to do - I just like thinking about it.
<ely-se>
not of the language. languages don't have performance. they're mathematical models
<triogenes>
toolslive: thanks, even following that i get the same error. and a similar one for piqi - unknown type name int64
<ianhedoesit>
ely-se: it seemed easier to type, although I know it's not an accurate use of language.
<dmbaturin>
ianhedoesit: Most people use the native code compiler rather than bytecode, by the way. Unless for js_of_ocaml or on platforms native compiler doesn't support.
<toolslive>
native is said to be 3-7 times faster on average than .byte
<dmbaturin>
The bytecode interpreter is really an interpreter (not a JIT compiler), and the bytecode compiler doesn't do any optimizations at all.
<flux>
I think it still isn't catastrophic.. ie. compared to, say, python?
<toolslive>
indeed: .byte still blows away python
<dmbaturin>
Yeah, I'm not saying it's catastrophic. I'm just saying that it's way slower than the native code. :)
<flux>
I use the bytecode ocamlc during development when performance doesn't matter, which is most of the time
<ianhedoesit>
I'm not sure "python" is a fair comparison - as ely-se pointed out, it's up to the interpreter itself to set the speed of the program, not the language's definition
<flux>
well, the interpreter doesn't work in a void, the language sets some limits or 'obvious' paths
darkf has joined #ocaml
<flux>
for example, if you can redefine anything at any point and do it from a dynamically generated code, a fast implementation needs a lot of work :)
<dmbaturin>
In practice, equating Python to the CPython implementation is a reasonable approximation though. :)
<ianhedoesit>
PyPy is a significantly faster implementation though.
<flux>
of course the context was 'interpreters'
<flux>
as I understand it, python also does some bytecode as an intermediate step and then interprets that
darkf_ has joined #ocaml
octachron has joined #ocaml
<flux>
thet ocaml bytecode is likely much less safe than python's
<toolslive>
CPython is the slowest python implementation around.
<flux>
yet it remains the most common one :)
<flux>
you're saying like there is a ton of production-quality python implementations available..
<toolslive>
as it is the de-facto spec
<dmbaturin>
ianhedoesit: Yeah, it was an exaggeration of the fact that other python implementation are still a minority.
<toolslive>
you just cannot switch python runtime without having weird side effects
darkf has quit [Ping timeout: 246 seconds]
darkf_ is now known as dkar
dkar is now known as darkf
<flux>
as I understand it the C library interface is the biggest stumble for PyPy?
ely-se has quit [Quit: leaving]
<Leonidas>
flux: "PyPy has alpha/beta-level support for the CPython C API, however, this feature is not yet complete. We strongly advise use of CFFI instead."
ianhedoesit has quit [Quit: leaving]
mort___ has joined #ocaml
mort___ has quit [Remote host closed the connection]
ely-se has joined #ocaml
<Leonidas>
is there a opam switch migrate to reinstall all libs from the current compiler to a new one?
<Leonidas>
the export/import dance
mort___ has joined #ocaml
Kakadu has joined #ocaml
<Mercuria1Alchemi>
Leonidas: don't think so
govg has joined #ocaml
<toolslive>
that would indeed be a nice feature
ely-se has quit [Quit: leaving]
ely-se has joined #ocaml
darkf has quit [Ping timeout: 250 seconds]
AltGr has left #ocaml [#ocaml]
moocfan has joined #ocaml
darkf has joined #ocaml
moocfan has quit []
_andre has joined #ocaml
toolslive has quit [Remote host closed the connection]
rand has joined #ocaml
ely-se has quit [Quit: leaving]
jabesed has joined #ocaml
govg has quit [Ping timeout: 256 seconds]
mobius-eng has joined #ocaml
antkong has joined #ocaml
freehck has joined #ocaml
jabesed has quit [Ping timeout: 240 seconds]
nullcatxxx_ has joined #ocaml
rand has quit [Ping timeout: 256 seconds]
govg has joined #ocaml
nullcatxxx_ has quit [Ping timeout: 272 seconds]
ely-se has joined #ocaml
ggole has joined #ocaml
toolslive has joined #ocaml
obadz has quit [Ping timeout: 260 seconds]
govg has quit [Ping timeout: 252 seconds]
obadz has joined #ocaml
ollehar has joined #ocaml
antkong has quit [Quit: antkong]
sepp2k has joined #ocaml
ely-se has quit [Quit: leaving]
Simn has joined #ocaml
ely-se has joined #ocaml
rgrinberg1 has joined #ocaml
BitPuffin has joined #ocaml
ely-se has quit [Quit: leaving]
struktured has quit [Ping timeout: 265 seconds]
ceryo has joined #ocaml
travisbrady has joined #ocaml
ely-se has joined #ocaml
pierpa has joined #ocaml
igoroliveira has joined #ocaml
ncthom91 has joined #ocaml
ncthom91 has quit [Client Quit]
travisbrady has quit [Quit: travisbrady]
travisbrady has joined #ocaml
ncthom91 has joined #ocaml
rand has joined #ocaml
ely-se has quit [Quit: leaving]
freehck has quit [Ping timeout: 240 seconds]
kushal has quit [Ping timeout: 240 seconds]
ely-se has joined #ocaml
nullcatxxx_ has joined #ocaml
<jmasseo>
I wonder how come JST's ad showed up when I searched for ocamlgraph when I have AdBlock on?
<jmasseo>
Jane Street is looking to hire sys-admins who grok FP. Maybe after I vest at my current spot.
<adrien>
jmasseo: "acceptable ads"
<jmasseo>
ahhhh
toolslive has quit [Ping timeout: 256 seconds]
<jmasseo>
i usually don't getany google ads. I wonder what makes JST's acceptable
<jmasseo>
maybe they paid up if they're looking for sysadmins, whom they know will be running ad block
<def`>
jmasseo: yesterday you seemed to have problems with merlin
<def`>
what was it?
<jmasseo>
minor thing, my editor showing an error that the compiler isn't reporting.
<adrien>
jmasseo: not jst's in particular but text ads should be considered "acceptable" by abp
yomimono has joined #ocaml
<jmasseo>
adrien: right, i'd heard about it. I just had not actually seen any ads pop up through it before.
<jmasseo>
even on google search
<jmasseo>
maybe i caught an upgrade.
nullcatxxx_ has quit [Ping timeout: 252 seconds]
<def`>
jmasseo: could you be more explicit?
kushal has joined #ocaml
<jmasseo>
Sure
<jmasseo>
one second
<jmasseo>
in one single lwt statement, it's saying I have an unbound variable and I"m not sure why
<jmasseo>
it's probably operator error of some kind
<jmasseo>
i must not have correctly enabled it somehow.
<jmasseo>
does my .merlin need to be in every source folder
<jmasseo>
or just my project root?
<def`>
only in the root
<def`>
you can check from emacs by clicking on the merlin name in the modeline
<jmasseo>
i got lwt and lwt.syntax in there
<def`>
EXT lwt
<jmasseo>
ahhhh
<jmasseo>
it threw an error initially and now it's fine
<jmasseo>
thank you!
<def`>
And as we are switching to ppx, these extensions will be deprecated. But right now it should work as expected :)
<jmasseo>
right
<jmasseo>
yeah merlin is pretty great.
<jmasseo>
i only recently started poking emacs again. I"m a sysadmin by trade and vi is installed everywhere and emacs is installed nowhere.
<def`>
It works the same in vim
<jmasseo>
Right. I have not tried the vim integration yet.
<jmasseo>
for the afforementioned reason, I've also been skiddish on customizing my vim because I want it to work the same everywhere.
<jmasseo>
I finally added some features to my local system configs heh
sgnb has joined #ocaml
<jmasseo>
i used to have lots of custom stuff, then I spent 8 years at Federal Reserve Bank and got used to doing everything bone stock no features no open source.
<jmasseo>
no vim, only vi...
ollehar has quit [Remote host closed the connection]
<def`>
:D sounds lovely
Mercuria1Alchemi has quit [Read error: Connection reset by peer]
<jmasseo>
yeah never again
<jmasseo>
I shall never do anything government related again
<jmasseo>
worse place i ever worked, but it was hard to leave because i drew a paycheck and didn't have to do anything
<orbifx>
lol
<ely-se>
go sit there, work for someone else
<jmasseo>
heh
<jmasseo>
i did other things
<jmasseo>
it was still awful
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
ely-se has quit [Quit: leaving]
f[x] has joined #ocaml
ohama has quit [Ping timeout: 260 seconds]
travisbrady has quit [Ping timeout: 246 seconds]
ohama has joined #ocaml
Mercuria1Alchemi has joined #ocaml
toomuchtvrotsurb has joined #ocaml
toomuchtvrotsurb has quit [Remote host closed the connection]
nullcatxxx_ has joined #ocaml
zpe has quit [Remote host closed the connection]
marsam has joined #ocaml
shinnya has joined #ocaml
slash^ has joined #ocaml
rand has quit [Quit: leaving]
octachron has quit [Quit: Leaving]
toomuchtvrotsurb has joined #ocaml
oh_camel has joined #ocaml
<oh_camel>
guys, what is the lwt-equivalent for Sys.command?
marsam has quit [Remote host closed the connection]
yomimono has quit [Ping timeout: 250 seconds]
raphaelss has joined #ocaml
obadz- has joined #ocaml
obadz has quit [Ping timeout: 250 seconds]
obadz- is now known as obadz
^elyse^ has joined #ocaml
^elyse^ has quit [Client Quit]
darkf has quit [Quit: Leaving]
mort___ has quit [Ping timeout: 264 seconds]
tane has joined #ocaml
lobo has joined #ocaml
_andre has quit [Quit: leaving]
raphaelss has quit [Read error: Connection reset by peer]
Kakadu has quit [Quit: Page closed]
MercurialAlchemi has quit [Ping timeout: 256 seconds]
ggole has quit []
ncthom91 has joined #ocaml
oh_camel has quit [Ping timeout: 246 seconds]
Haudegen has quit [Ping timeout: 250 seconds]
f[x] has quit [Ping timeout: 260 seconds]
orbifx has quit [Ping timeout: 244 seconds]
dalastboss has joined #ocaml
<dalastboss>
if i have a file called specific_impl.ml
<dalastboss>
is there a way to assert that it ascribes to the signature general_interf.mli
<dalastboss>
without making them have the same name
<dalastboss>
oops have to go
dalastboss has quit [Client Quit]
nullcatxxx_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
larhat1 has joined #ocaml
jabesed has joined #ocaml
Haudegen has joined #ocaml
kdas_ has joined #ocaml
kdas_ has quit [Read error: Connection reset by peer]
kushal has quit [Ping timeout: 260 seconds]
tmtwd has joined #ocaml
f[x] has joined #ocaml
Kakadu has joined #ocaml
Haudegen has quit [Ping timeout: 240 seconds]
infinity0 has quit [Ping timeout: 244 seconds]
infinity0 has joined #ocaml
sepp2k has quit [Quit: Leaving.]
infinity0 has quit [Remote host closed the connection]
infinity0 has joined #ocaml
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
MercurialAlchemi has joined #ocaml
toomuchtvrotsurb has quit [Remote host closed the connection]
BitPuffin has quit [Ping timeout: 268 seconds]
ncthom91 has joined #ocaml
toomuchtvrotsurb has joined #ocaml
infinity0 has quit [Remote host closed the connection]
toomuchtvrotsurb has quit [Remote host closed the connection]
toomuchtvrotsurb has joined #ocaml
infinity0 has joined #ocaml
Haudegen has joined #ocaml
toomuchtvrotsurb has quit [Ping timeout: 265 seconds]
mort___ has joined #ocaml
tmtwd has quit [Ping timeout: 268 seconds]
Algebr has joined #ocaml
bobry has joined #ocaml
freehck has quit [Remote host closed the connection]
slash^ has quit [Read error: Connection reset by peer]
jwatzman|work has joined #ocaml
Tekilla has joined #ocaml
zpe has joined #ocaml
toomuchtvrotsurb has joined #ocaml
jwatzman|work has quit [Read error: Connection reset by peer]
jwatzman|work has joined #ocaml
<Kakadu>
Can I write in the _tags something like `<plugin/mkshow.ml.depends>: syntax(camlp5o)` ?
toomuchtvrotsurb has quit [Ping timeout: 256 seconds]
nullcatxxx_ has joined #ocaml
<Drup>
that doesn't really make sense.
<Kakadu>
I want to pass `-syntax camlp5o` to make ocamldep finish
orbifx has joined #ocaml
<Kakadu>
`true: syntax(camlp5o)` works though
<Kakadu>
ah, without .depends
jwatzman|work has quit [Quit: jwatzman|work]
Tekilla has quit [Read error: Connection reset by peer]
Tekilla has joined #ocaml
nullcatxxx_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<Algebr>
say you do let foo = <some_list> in List.map f foo instead of List.map f foo. Does that let binding create an object on the minor heap and then has to garbage collect it, is it better from a performance/allocation perspect to just pass the list directly to the map? Is there any optimization in this case?
<companion_cube>
in both cases foo will be on the heap
<companion_cube>
but a let binding per se doesn't allocate anything
jabesed has quit [Ping timeout: 240 seconds]
zpe has quit [Remote host closed the connection]
ygrek_ has joined #ocaml
rgrinberg1 has quit [Ping timeout: 240 seconds]
MercurialAlchemi has quit [Ping timeout: 240 seconds]
toomuchtvrotsurb has joined #ocaml
f[x] has quit [Ping timeout: 260 seconds]
ncthom91 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
^elyse^ has joined #ocaml
triogenes has left #ocaml [#ocaml]
yomimono has joined #ocaml
yomimono has quit [Client Quit]
ygrek_ has quit [Ping timeout: 256 seconds]
mobius-eng has quit [Ping timeout: 272 seconds]
mac10688 has joined #ocaml
swgillespie has joined #ocaml
<Kakadu>
Can I copy some input files for tests to the _build directory using _tags?
<Kakadu>
I suspect some option related to `traverse`....
<def`>
Algebr: did you retry PPX with merlin?
<def`>
jsoo*
<Algebr>
def`: I did
<Algebr>
its better but still incomplete
^elyse^ has quit [Quit: Leaving]
tane has quit [Quit: Verlassend]
<def`>
what's incomplete ?
rgrinberg1 has joined #ocaml
antkong has joined #ocaml
xet7 has joined #ocaml
xet7 is now known as xet7_
bobry has quit [Quit: Connection closed for inactivity]
infinity0 has quit [Remote host closed the connection]
infinity0 has joined #ocaml
Simn has quit [Quit: Leaving]
Kakadu has quit [Remote host closed the connection]
nullcatxxx_ has joined #ocaml
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
<Algebr>
def`: method name resolution, although type checking is correct. I will have to do a through check as well
ygrek_ has joined #ocaml
<def`>
method name should work without problem, I suspect you are using wrong versions
<def`>
however properties were not implemented until today, and that's still not ready for upstreaming
lobo has quit [Quit: leaving]
<Algebr>
def`: right, I have to double check all of this, thank you for the quick turn around on all these issues.
<Algebr>
I almost rage quit jsoo, heh.
<def`>
:D
ceryo has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
nullcatxxx_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<Drup>
on the other hand, you listen to aproximatly none of the advice to make all of it more tracktable
<Algebr>
Drup: I posted two acknowledgements that you were right and I'm writing higher level OCaml interfaces instead.
<Algebr>
In any case I hit the limit of just using the JavaScript ppx bindings approach, which sucked.
pyon has quit [Quit: Angels fall, all your you, heretic! Demon heart, bleed for us! (My soul is yours, Dark Master. I will fight for you.)]
igoroliveira has quit [Quit: Connection closed for inactivity]
jeffmo has joined #ocaml
swgillespie has joined #ocaml
jeffmo has quit [Read error: Connection reset by peer]