<Algebr>
I need to read the grammar throughly one time
__uu__ has joined #ocaml
__uu____ has quit [Ping timeout: 255 seconds]
__uu____ has joined #ocaml
__uu___ has quit [Ping timeout: 250 seconds]
__uu__ has quit [Ping timeout: 240 seconds]
__uu___ has joined #ocaml
Dynasty has joined #ocaml
<Dynasty>
Does anyone have a suggestion for an IDE to use with OCaml?
<Dynasty>
There doesn't seem to be a nice plugin in IntelliJ like there is with Haskell
__uu__ has joined #ocaml
__uu____ has quit [Ping timeout: 244 seconds]
<Algebr>
Merlin + emacs/vim
__uu___ has quit [Ping timeout: 264 seconds]
__uu___ has joined #ocaml
AltGr has joined #ocaml
__uu__ has quit [Ping timeout: 268 seconds]
__uu__ has joined #ocaml
ibor1 has quit [Quit: Leaving.]
<Algebr>
What do you have to give _oasis to to get lwt.ppx's to work? I added lwt.ppx to builddepends but that wasn't enough
__uu____ has joined #ocaml
__uu___ has quit [Ping timeout: 250 seconds]
__uu___ has joined #ocaml
__uu__ has quit [Ping timeout: 246 seconds]
__uu____ has quit [Ping timeout: 240 seconds]
__uu__ has joined #ocaml
palomer has quit [Quit: palomer]
__uu___ has quit [Ping timeout: 250 seconds]
jeffmo has quit [Quit: jeffmo]
__uu___ has joined #ocaml
<Algebr>
Okay, apparently that is enough, needed to have done make clean first....very odd.
__uu__ has quit [Ping timeout: 250 seconds]
__uu__ has joined #ocaml
darkf has joined #ocaml
__uu____ has joined #ocaml
__uu___ has quit [Ping timeout: 250 seconds]
__uu____ has quit [Remote host closed the connection]
Dynasty has quit [Quit: ChatZilla 0.9.92 [Firefox 41.0/20150925121647]]
__uu___ has joined #ocaml
__uu__ has quit [Ping timeout: 244 seconds]
__uu___ has quit [Remote host closed the connection]
__uu__ has joined #ocaml
palomer has joined #ocaml
__uu__ is now known as __uu
__uu has quit []
__uu__ has joined #ocaml
mrhmouse has joined #ocaml
__uu__ was banned on #ocaml by adrien [__uu__!*@*]
__uu__ was kicked from #ocaml by adrien [please fix your connection]
<adrien>
> 60% packet loss to that IP
<adrien>
close to 70%
<adrien>
and it seems the link in china is horribly congested or lossy
palomer has quit [Quit: palomer]
<adrien>
hmpf
<Algebr>
Why can `_1 be a valid polymorphic variant but not a regular variant?
<adrien>
seems to be china unicom which is going full crap with a > 50% packet loss, at which point I'm afraid the end connectee can't do anything
<adrien>
(china unicom is state-owned)
<adrien>
Algebr: I know that at some point the lexical rules were a bit too relaxed for polymorphic variants
<adrien>
iirc they were supposed to be the same
<Algebr>
here is a case where isn't not the same I'd say.
<adrien>
# `a;;
<adrien>
- : [> `a ] = `a
<adrien>
# type t = a;;
<adrien>
Error: Unbound type constructor a
<adrien>
too
<adrien>
(that's the bug report I knew of)
<adrien>
but it had to be kept that way for backward compatibility
<Algebr>
this is inconsistent.
nullcatxxx_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<Algebr>
Is this abusing the ad-hoc comparator, relying on natural order in poly variants `_1 < `_2 = true
palomer has joined #ocaml
<adrien>
I think so
<adrien>
II think only their hash values are compared
<Algebr>
I'm wondering if I can rely on that.
MercurialAlchemi has joined #ocaml
<adrien>
no
<adrien>
it's not stable between 32 bits and 64 bits at least
nullcatxxx_ has joined #ocaml
switchy has joined #ocaml
<Algebr>
poop.
palomer has quit [Quit: palomer]
<adrien>
well, they are hashes
mearnsh has quit [Ping timeout: 250 seconds]
<Algebr>
yea, meh, I found another way anyway.
<switchy>
is it reasonable that int64 operations are significantly faster on 4.02.3 than 4.00.1?
mearnsh has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 264 seconds]
<adrien>
define "reasonable"
<switchy>
have there been significant changes that would've led to a big performance improvement, for example?
<switchy>
essentially I'm running max and + in a loop, and I guess the comparison in max is extremely slow using int64
igoroliveira has quit [Quit: Connection closed for inactivity]
<switchy>
it's perfect with native ints, which are big enough on my machine. unfortunately my target machine is only 32-bit so I need something that won't overflow
palomer has joined #ocaml
tibor_ has joined #ocaml
tmtwd has quit [Ping timeout: 250 seconds]
AltGr has left #ocaml [#ocaml]
nullcatxxx_ has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<adrien>
I haven't followed the relevant discussions closely but I believe some things related to unboxing have been merged so I'm not that surprised
nullcatxxx_ has joined #ocaml
nullcatxxx_ has quit [Ping timeout: 240 seconds]
samg_ has joined #ocaml
samg_ has left #ocaml [#ocaml]
nullcatxxx_ has joined #ocaml
<def`>
switchy: try removing max and diregtly using if then else and a comparison
<switchy>
def`, I got a little improvement rewriting max and rewriting >= in terms of Int64.compare
<def`>
I am not sure max gets specialized, that means lot of boxing and tests
<def`>
ok
palomer_ has joined #ocaml
<switchy>
but that was like 10% vs 200% for native ints
<def`>
can you show this coee?
<def`>
code*
palomer has quit [Ping timeout: 260 seconds]
palomer_ is now known as palomer
swgillespie has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
oscar_toro has quit [Read error: Connection reset by peer]
oscar_toro has joined #ocaml
mort___ has quit [Quit: Leaving.]
rgrinberg has joined #ocaml
psy_ has quit [Ping timeout: 252 seconds]
sh0t has joined #ocaml
oscar_toro has quit [Read error: No route to host]
obadz has quit [Ping timeout: 264 seconds]
ely-se has quit [Quit: leaving]
obadz has joined #ocaml
Major_Biscuit has quit [Quit: WeeChat 1.1.1]
darkf has quit [Ping timeout: 246 seconds]
dch has joined #ocaml
<dch>
is there a way to get opam to list the dependencies it has for a given module?
AltGr has left #ocaml [#ocaml]
<dch>
nvm, found it!
<dch>
opam show <module>
scriptdevil has joined #ocaml
<Drup>
dch: package, not module
jonludlam has joined #ocaml
<dch>
gotcha
<dch>
too much time in erlang world
<Drup>
(opam list --depends-on <pkg>)
<Drup>
(with the potential --rec flag)
<Drup>
err, --required-by
<scriptdevil>
While using utop, I wanted to do #typeof "Something" and found that it prints so much data that I cannot scroll back to the top. Is there some way of looking at type signatures and piping them to less?
<Drup>
scriptdevil: how can tha happen o_o
<scriptdevil>
Drup: Well, #typeof "Comparable for instance"
<scriptdevil>
"Comparable" for instance
<Drup>
ah, a module
darkf has joined #ocaml
<Drup>
why not just look at the mli instead ?
<Drup>
(unfortunatly, janestreet doesn't host an html documentation)
<scriptdevil>
Drup: Yeah, that makes sense. Thanks.
<bitbckt>
it won't be competitive by any means, but it's easy and quick to get up and running with.
<bitbckt>
yeah, that's about the gist of it.
<ollehar>
but the roots are explicit in his code
<ollehar>
or the "stack"
<bitbckt>
sure.
<ollehar>
but when you compile to binary without a jit...?
<bitbckt>
a shadow stack is fairly easy to maintain.
<ollehar>
right, llvm has support for that.
<bitbckt>
again, as a first cut.
<ollehar>
sure, I'm happy to get anything up a running ^^
<ollehar>
what's beyond shadow-stack?
<bitbckt>
that usually falls out of the runtime's execution model.
<bitbckt>
threads and their stacks, with stack maps, runtime roots, and foreign handles.
<ollehar>
is this related to the program-counter in any way?
<ollehar>
is that the level we talk about?
<bitbckt>
not the PC necessarily, but there's usually a frame pointer around to traverse the stack.
<ollehar>
does the compiler inserts frame pointers?
<bitbckt>
if not, then there might be a map of PC -> frame descriptor -> stack map.
<bitbckt>
yes.
<ollehar>
so, all this is in the ocaml compiler too, right?
<bitbckt>
presumably, but I'm not an ocaml internals expert.
<bitbckt>
just a lowly language user, in this community :)
<ollehar>
OK, I will check. thanks for your help! really helpful!
igitoor has quit [Ping timeout: 240 seconds]
ely-se has quit [Read error: Connection reset by peer]
ely-se has joined #ocaml
<ollehar>
bitbckt: oh btw, just a quick one: what kind of gc do you think would be appropriate for a server environment?
<ollehar>
I know java has a bunch to chose from ^^
slash^ has quit [Read error: Connection reset by peer]
igitoor has joined #ocaml
<bitbckt>
depends upon the latency/throughput trade-offs you'd like to make - variants on mark/sweep generally offer lower latency, while mark/compact generally offers higher throughput.
<bitbckt>
in broad strokes
<ollehar>
hm ok
<companion_cube>
ollehar: what are you writing?
<ollehar>
companion_cube: ah, still my php compiler
<companion_cube>
meh
<ollehar>
what now? :)
<ollehar>
it will be the awesomest...
<companion_cube>
you have more patience than I could imagine having
<companion_cube>
maybe php code lends itself to stack-based memory management?
<companion_cube>
i.e., maybe most objects do not outlive their stack frame
<companion_cube>
in which case you could avoid using a GC
<ollehar>
I must admit, llvm is tearing me down... it's not at all "plug-and-play" gc.
<ollehar>
hm
zpe has quit [Remote host closed the connection]
<ollehar>
well, people code in php as they code in java.
<ollehar>
well...
igitoor has quit [Ping timeout: 240 seconds]
<ollehar>
how would I know that? if objects outlive the stack frame ( = their scope, right?)
<ollehar>
maybe the gc topic was just more advanced than I anticipated.
igitoor has joined #ocaml
<companion_cube>
you know if the object is not returned nor given to non-inlined functions
<companion_cube>
rust's type system carries this information, which is why they can use manual memory management
<ely-se>
I want to write a Malbolge compiler with LLVM.
<ely-se>
Problem is, Malbolge uses self-modifying code and uses ternary registers.
<profan>
ely-se: continuing your quest of self-flagellation i see :D
<bitbckt>
haha
<ely-se>
nah, nvm, I'll write an interpreter probably
<profan>
aw
<ollehar>
companion_cube: so, in C, allocating on stack instead of heap? you mean this could work for PHP compiled to C?
<ely-se>
after executing an instruction, said instruction must be encrypted
<ely-se>
you can't really do that with LLVM
<companion_cube>
this channel is filled with compiler masochists
<ollehar>
;)
<companion_cube>
ollehar: or it can be allocated in the heap with malloc
<companion_cube>
or with a specific allocator
igitoor has joined #ocaml
igitoor has quit [Changing host]
jonludlam has quit [Ping timeout: 240 seconds]
sbrouf has quit [Ping timeout: 256 seconds]
<orbifx>
what shell programming library do you recommend for ocaml?
freehck has quit [Ping timeout: 246 seconds]
ontologiae has quit [Read error: Connection reset by peer]
ontologiae has joined #ocaml
MercurialAlchemi has quit [Ping timeout: 250 seconds]
<orbifx>
no shell programmers :S
malc_ has joined #ocaml
cball has joined #ocaml
nopf has quit [Ping timeout: 246 seconds]
<ollehar>
sorry, ofbifx :/
nopf has joined #ocaml
<ollehar>
orbifx
<ollehar>
*
<ollehar>
just try one out, I guess.
nullcatxxx_ has joined #ocaml
<orbifx>
yeah, was going to try reshell but installation blew up :P
_andre has quit [Quit: leaving]
<orbifx>
i think some dependencies are missing which i need to manually get using the system package manager
<orbifx>
does opam warn for those?
<ollehar>
orbifx: you could paste your error messages
chmk has joined #ocaml
<Drup>
orbifx: it should
<Drup>
(that's what the conf-* packages are for)
<orbifx>
ollehar: let me run it again, cause i killed that session
<orbifx>
Drup: you mean it explains? or fetches them?
<Drup>
orbifx: it fails if it's not installed and tells you to do it