ChanServ changed the topic of #ocaml to: Discussions about the OCaml programming language | http://caml.inria.fr/ | http://www.ocaml.org | OCaml 4.01.0 announce at http://bit.ly/1851A3R | Logs at http://irclog.whitequark.org/ocaml
ivan\ has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
claudiuc_ has quit [Remote host closed the connection]
ontologiae has quit [Ping timeout: 245 seconds]
ontologiae has joined #ocaml
tlockney is now known as tlockney_away
ontologiae has quit [Ping timeout: 265 seconds]
q66 has quit [Quit: Leaving]
racycle has quit [Quit: ZZZzzz…]
tautologico has quit [Quit: Connection closed for inactivity]
ivan\ has joined #ocaml
jwatzman|work has quit [Quit: jwatzman|work]
shinnya has quit [Ping timeout: 245 seconds]
michael_lee has joined #ocaml
dotfelixb has joined #ocaml
boogie has quit [Remote host closed the connection]
nikki93 has quit []
dotfelix_ has joined #ocaml
Eyyub has quit [Ping timeout: 240 seconds]
dotfelix_ has left #ocaml ["Leaving..."]
divyanshu has joined #ocaml
Eyyub has joined #ocaml
cesar_ has joined #ocaml
cesar_ is now known as Guest44638
studybot has joined #ocaml
Eyyub has quit [Quit: WeeChat 0.4.1]
maattdd has joined #ocaml
Eyyub has joined #ocaml
manizzle has quit [Ping timeout: 245 seconds]
maattdd has quit [Ping timeout: 258 seconds]
malo has quit [Quit: Leaving]
dotfelixb has quit [Quit: Leaving...]
tlockney_away is now known as tlockney
fraggle_ has joined #ocaml
Eyyub has quit [Ping timeout: 245 seconds]
Eyyub has joined #ocaml
olauzon has quit [Quit: olauzon]
racycle has joined #ocaml
NoNNaN has quit [Remote host closed the connection]
yacks has joined #ocaml
NoNNaN has joined #ocaml
michael_lee has quit [Remote host closed the connection]
Eyyub has quit [Ping timeout: 245 seconds]
pyon has joined #ocaml
<pyon> Are covariant method arguments the only reason why inheritance does not always imply subtyping?
Eyyub has joined #ocaml
divyanshu has quit [Quit: Computer has gone to sleep.]
racycle has quit [Quit: ZZZzzz…]
studybot has quit [Read error: Connection reset by peer]
studybot has joined #ocaml
studybot_ has joined #ocaml
studybot has quit [Ping timeout: 240 seconds]
Guest44638 has quit [Remote host closed the connection]
manizzle has joined #ocaml
divyanshu has joined #ocaml
ggole has joined #ocaml
manizzle has quit [Remote host closed the connection]
manizzle has joined #ocaml
ygrek has joined #ocaml
ygrek has quit [Ping timeout: 258 seconds]
ygrek has joined #ocaml
rgrinberg has quit [Quit: Leaving.]
Eyyub has quit [Ping timeout: 264 seconds]
ygrek has quit [Ping timeout: 264 seconds]
michael_lee has joined #ocaml
tlockney is now known as tlockney_away
ygrek has joined #ocaml
axiles has joined #ocaml
acieroid has quit [Ping timeout: 255 seconds]
Submarine has joined #ocaml
ggole has quit [Read error: Connection reset by peer]
Eyyub has joined #ocaml
ggole has joined #ocaml
ygrek has quit [Ping timeout: 255 seconds]
zpe has joined #ocaml
<adrien> yyyyygreeeeekkkkkkk
<adrien> ='(
<adrien> (bug report for ahrefs :P )
<adrien> pippijn: hey, I've been wondering: do you know if MSVC or GCC is being used more in China?
pyon has left #ocaml ["ERC Version 5.3 (IRC client for Emacs)"]
claudiuc has joined #ocaml
claudiuc_ has joined #ocaml
claudiuc has quit [Ping timeout: 258 seconds]
Simn has joined #ocaml
Submarine has quit [Remote host closed the connection]
Eyyub has quit [Ping timeout: 276 seconds]
avsm has joined #ocaml
rgrinberg has joined #ocaml
zpe has quit [Remote host closed the connection]
rgrinberg has quit [Ping timeout: 258 seconds]
acieroid has joined #ocaml
dotfelixb has joined #ocaml
studybot_ has quit [Read error: Connection reset by peer]
remy2 has joined #ocaml
Eyyub has joined #ocaml
WraithM has quit [Ping timeout: 240 seconds]
avsm has quit [Quit: Leaving.]
ygrek has joined #ocaml
ikaros has joined #ocaml
eikke__ has joined #ocaml
zpe has joined #ocaml
dotfelixb has quit [Quit: Leaving...]
Eyyub has quit [Ping timeout: 265 seconds]
AltGr has joined #ocaml
rgrinberg has joined #ocaml
rgrinberg has quit [Ping timeout: 240 seconds]
rand000 has joined #ocaml
ontologiae has joined #ocaml
maattdd has joined #ocaml
ollehar has joined #ocaml
thomassa has joined #ocaml
Kakadu has joined #ocaml
studybot has joined #ocaml
claudiuc_ has quit [Remote host closed the connection]
remyzorg has quit [Ping timeout: 240 seconds]
ollehar has quit [Ping timeout: 255 seconds]
rgrinberg has joined #ocaml
Hannibal_Smith has joined #ocaml
rgrinberg has quit [Ping timeout: 252 seconds]
cdidd has quit [Ping timeout: 250 seconds]
ontologiae has quit [Ping timeout: 245 seconds]
manizzle has quit [Read error: Connection timed out]
manizzle has joined #ocaml
cdidd has joined #ocaml
waneck has joined #ocaml
adrien_oww has quit [Remote host closed the connection]
manizzle has quit [Max SendQ exceeded]
adrien_oww has joined #ocaml
macron has quit [Ping timeout: 240 seconds]
BitPuffin has joined #ocaml
<BitPuffin> how come ocaml is used so much to implement programming languages?
<mrvn> because it is fun to use
<BitPuffin> well there's gotta be more of a reason than that right?
<BitPuffin> since so many languages bootstrap with ocaml specifically
manizzle has joined #ocaml
<whitequark> that's more than enough
<mrvn> the type system makes it easy to work with grammars and asts
<flux> well ML has its grounds in making theorem proovers, so perhaps writing compilers is highly related to symbol manipulation
<ousado> and it's fast
<flux> though OCaml adds its own benefits to that, namely polymorphic variants which are a lot like lisp symbols, but type safe
<flux> though2 I don't know if they are actually that much used in compilers ;-) but it's nice at least in the prototyping stage
<BitPuffin> hmm
<BitPuffin> :)
<whitequark> flux: I just discovered that polymorphic variants are *really convenient* when working with a distributed system
<mrvn> and with GADTs it's even better
<whitequark> to describe all the ways components can fail, without too much needless ceremony
<BitPuffin> btw are there any ocaml compilers that compile to C or an ml style language that is active that has strong metaprogramming capabilities
<whitequark> there is only one OCaml compiler
<BitPuffin> there can only be one o_o
<flux> well, there are many, many forks from it for various purposes
<flux> I don't think there are such compilers, and frankly, I don't know if there even should be.. I don't think C is such a great a language to target.
ebzzry has quit [Remote host closed the connection]
<whitequark> BitPuffin: Rust is a C-style language in some ways, and it has strong ML roots
<BitPuffin> flux: well the main reason to compile to it is portability
<BitPuffin> whitequark: yeah but like you said, it's C-style
<BitPuffin> which = death
<flux> bitpuffin, so not only generate C but portable C.. and have GC there etc? could be quite a task!
<BitPuffin> but yeah rust is pretty neat
<BitPuffin> flux: yeah I know, but what else can one do to integrate with proprietary toolchains :P
<flux> OCaml probably has the best meta-programming capabilities, historically in the form of camlp4 and in the future in the form of extension points
<BitPuffin> for example say you are making a game for the Wii U
<flux> bitpuffin, well, ocamlrun is C and portable ;)
<BitPuffin> but that's an interpreter
<Hannibal_Smith> BitPuffin, are you going to make a game for the Wii using OCaml?
<flux> ocaml apparently compiles to powerpc
<flux> of course, it would probably still need some adjustements..
<BitPuffin> Hannibal_Smith: probably not, but I want a language that is portable for my games :p
<BitPuffin> camlp4 looks interesting..
<whitequark> camlp4 is essentially dead at this point
<BitPuffin> oh
<BitPuffin> :/
<whitequark> future work is concentrated on extension points, see http://whitequark.org/blog/2014/04/16/a-guide-to-extension-points-in-ocaml/
<BitPuffin> Well I'm toying with the idea of making my own language
<flux> sadly extension points isn't really a superset of camlp4, rather a side-step
<mrvn> the lack of multicore support in ocaml becomes a problem for games
<BitPuffin> mrvn: I know
<BitPuffin> :P
<BitPuffin> :/*
<whitequark> flux: camlp4 is bad enough, how horrible would a superset be, I can hardly imagine
<flux> (but on the other hand they should be much easier to deal with)
<Hannibal_Smith> mrvn, and you don't have control on memory layout of your data...or am I wrong?
<flux> whitequark, well what I meant to say that they are strictly a subset ;)
<mrvn> Hannibal_Smith: you get the layout you specify.
<flux> or are they actually?
<flux> do extension points get type information?
<whitequark> flux: camlp4 doesn't?
<flux> or are they purely syntactic as camlp4
<whitequark> purely syntactic
<mrvn> Hannibal_Smith: you just don't have much choice other than the order. Everything is a value.
<whitequark> camlp4 is before Parsetree, ppx is at Parsetre
<Hannibal_Smith> mrvn, interesting, thank you
<BitPuffin> well what I'm looking to make is probably a lisp with ML style type system. And barely any features, most of the features should be implemented as macros
<flux> I think people would be super-excited with an extension mechanism that would be able to make use of the types
<whitequark> you probably won't make any game at all in the next few years
<BitPuffin> I don't care about GC
<BitPuffin> whitequark: :P
<whitequark> assuming you'll be successful
<Hannibal_Smith> I'm viewing OCalm from a very "distant" point of view for now, I studied a little of SML for university and got my attentions
<flux> but, a language with such a powerful extension mechanism might not be OCaml anymore..
rgrinberg has joined #ocaml
<Hannibal_Smith> But SML seems impracticable for any "real" software because lacks of libs
<BitPuffin> whitequark: well one idea was to write the basic language, and then use it to make a game and ignore all the standard library stuff fore a while
<whitequark> flux: I don't think combining such extensions with inference would make a language which is easy to reason about
<Hannibal_Smith> So OCaml seems an oblivious choose
<whitequark> BitPuffin: I think that's an extremely bad idea
<BitPuffin> whitequark: why?
<flux> whitequark, depends of course how it would be used.
<whitequark> BitPuffin: because it requires a completely disparate skillset than game-making, because it reduces the amount of people who can contribute to 1, because it distracts you from your primary goal, because your language will probably be a failure
<BitPuffin> whitequark: well the goal is not to take over the world with the language, it's to have a language I would want to use for games :P
<BitPuffin> and I can't find one
<flux> well, failing isn't all that bad, at least now you _know_ what not to do ;)
<whitequark> BitPuffin: so you never wrote any games in the past?
<flux> it's called learning!
<mrvn> easy, just type /quit
<mrvn> ups
<BitPuffin> whitequark: I have written games here and there, and tech for it etc, I enjoy the work itself but most of the languages are annoying for the purpose :P
<mrvn> games usualy have mutable state and cyclic data. Not the best for a functional language.
<flux> bitpuffin, might not be a bad idea try to use for example lua first as that embedded language. to pick some ideas on how it's done. but don't use 1-based indices :P
<BitPuffin> well I didn't say I need a functional language
<BitPuffin> flux: I've used lua
<BitPuffin> and yeah the 1 based indices is a little strange
<BitPuffin> lua is quite cool though
<BitPuffin> tables are pretty flexible
manizzle has quit [Read error: Connection timed out]
<BitPuffin> however I want strong ass typing :P
<whitequark> it's really a simple question, what's the cost of biting the bullet and using existing (bad) tools, compared to working on your own (chances are, even worse) tools?
<BitPuffin> well I dunno
<whitequark> of course, if writing a game is not actually your goal but just a motivation for implementing a language, none of that applies
rgrinberg has quit [Ping timeout: 265 seconds]
* whitequark shrugs
<BitPuffin> I think the end result is usually better when I skip using for example a premade game engine
<BitPuffin> and write something around the game itself
<BitPuffin> it's kind of like the difference between writing a native iOS app in objective C and an html5 application
<BitPuffin> you can feel it
<whitequark> have you seen the new Basecamp app?
<BitPuffin> nope
<whitequark> take a look. chances are, you can't feel it
<BitPuffin> well think of it lilke this then
<BitPuffin> if they can make it feel good with html5
<whitequark> (and with waaaay less work than using ObjC)
<BitPuffin> imagine how much better it would feel if they used their skills to make the damn coolest native app ever :P
<whitequark> it wouldn't exist at all, because they don't have the resources to implement the same functionality in native
<Hannibal_Smith> html5 and games on mobile...don't sounds good from a framerate prospective
<whitequark> which was the entire motivation for using html5
<BitPuffin> Hannibal_Smith: yeah haha
<BitPuffin> well I'm not saying that you can't use html5
<BitPuffin> I'm just saying that I obsess over how games feel etc and every little detail
<BitPuffin> because it is important to me
<BitPuffin> so while I could go and use Unity or Unreal to make a game that would be totally acceptable that is not interesting to me
<whitequark> so you don't actually want to make a game, you want something else. :)
<BitPuffin> so I write from scratch, and when I write from scratch (because I spend a lot of time doing it) I want to do it in a language I like :P
<whitequark> (that's just fine though)
<BitPuffin> whitequark: well I want to push the boundraries of games
<BitPuffin> And I don't think working within the sandbox of an engine let's me do that as far as I want
<Hannibal_Smith> I'm reading that OCaml uses pointer tagging for storing values...don't really like that
<BitPuffin> it's kind of abstract but you know with say web frameworks, you work within the constraints of that framework, whereas what you can do is pick base libraries (say cohttp or spiffy) and build on top of that
<BitPuffin> set me freee \o/ lol
<Hannibal_Smith> So are you going to write your custom game engine in your custom language?
<BitPuffin> so yeah I might use ocaml to bootstrap my own tiny language (I don't need a lot so it's less work than you think, but still more work than I think)
<BitPuffin> Hannibal_Smith: well not really engine, the engine comes from the game itself
<BitPuffin> but first I need to write my website :P
<BitPuffin> And I can't decide whether to use scheme or ocaml
<mrvn> BitPuffin: use mirage
<BitPuffin> ?
<mrvn> BitPuffin: openmirage.org
<flux> that's like saying "use apache" :)
<flux> (or, maybe, "use linux")
<flux> not to say openmirage isn't cool!
<flux> but I wish they supported more targets, ie. virtualbox :)
<BitPuffin> errr I already know which operating system I'm gonna run :P
ygrek has quit [Ping timeout: 252 seconds]
<BitPuffin> one that I've written myself
<BitPuffin> no I'm just kidding hahaha
<Hannibal_Smith> In your custom language!
<flux> ..custom fpga-made cpu?
<Hannibal_Smith> Ahahaha
<BitPuffin> pfff fpga
<BitPuffin> too restricted
<BitPuffin> I invented my own
<BitPuffin> puffga
<flux> based on custom view of the physics of the world?-)
<whitequark> flux: nah, just etch the CPU yourself, it's not too hard
<BitPuffin> well I didn't like physics so I invented my own thing
<BitPuffin> I'm from my own planet btw
<BitPuffin> it's not in the same universe as you are in
<BitPuffin> I made my own
<whitequark> flux: it's actually pretty damn hard, but homebrew transistors is something I've been going to do for a long time...
<whitequark> seems conceivable that I could reproduce early 60s tech
<flux> whitequark, you into electronics?
<whitequark> flux: quite
<BitPuffin> whitequark: haha, and you are telling me not to make my own language :P
<whitequark> I've recently spent a lot of time doing photolitography, albeit just for PCBs
<whitequark> BitPuffin: but I never said my work was practical in any way, it's just self-education
<BitPuffin> fair enoguh :)
<flux> I just two days ago got my shapeoko into a working order for making pcbs without the hassle of development/acids. one down, infinite ideas to go!
<whitequark> ugh, yet another dremel-based shitty CNC mill
<flux> well, it's got the popular chinese 1.5 kW spindle
<flux> so I think slightly better than dremel
<whitequark> just looking at that frame makes me cringe. negligible rigidity
<flux> what frames?-)
macron has joined #ocaml
<whitequark> frames? no, the frame. the metal support construct that moves the spindle.
<whitequark> it's called "frame"
<whitequark> oh, and to top it all, it uses belts instead of ballscrews
<flux> yep, it's a bit flimsy
<whitequark> congrats on purchasing an useless toy :p
<flux> precision-wise I'll doubtfully able to do better than 0.2 mm precision
<flux> it's been quite fun so far!
<BitPuffin> so is there syntax extensions to ocaml that provides macros and so on?
* whitequark got a CNC3020T: http://bit.ly/whitequarks-cnc
<whitequark> flux: although the next CNC machine I'll just assemble myself, it is not exactly rocket science
<whitequark> way easier than it first seems
<flux> possibly some day in future, but for now my room is full :)
<flux> the downside of cnc3020t is that it doesn't come with a cad model, that is, it's more annoying to hack
<flux> but robustwise, I guess it's not that difficult to beat shapeoko ;)
<whitequark> flux: it would probably take a day or so to capture it into CAD
<whitequark> although I never felt a need so far
<BitPuffin> wait
<BitPuffin> isn't syntax extensions themself basically macros?
<whitequark> they are procedural macros, indeed
<BitPuffin> ah, so not declarative
<BitPuffin> still though
<BitPuffin> that means you can transform ocaml in awesome ways
_andre has joined #ocaml
<whitequark> mostly in horrible ways, but yes
maattdd has quit [Ping timeout: 252 seconds]
maattdd has joined #ocaml
<BitPuffin> lol
rgrinberg has joined #ocaml
rgrinberg has quit [Ping timeout: 264 seconds]
zarul has quit [Remote host closed the connection]
kaustuv has joined #ocaml
maattdd has quit [Ping timeout: 258 seconds]
eikke__ has quit [Ping timeout: 276 seconds]
eikke__ has joined #ocaml
ygrek has joined #ocaml
darkf has quit [Ping timeout: 240 seconds]
<whitequark> oh neat: https://github.com/ocaml/opam-repository/pull/2062, core is being split down
<whitequark> although Core_kernel is still enormous
<ggole> Core is a pretty inaccurate name at this point
maattdd has joined #ocaml
Submarine has joined #ocaml
<kaustuv> Do operations like String.sub now take constant time/space with -safe-string?
<ggole> No.
maattdd has quit [Ping timeout: 240 seconds]
rgrinberg has joined #ocaml
<ggole> I suppose the string representation could be changed to allow for sharing, but that might result in some problems
<flux> it's not automatically the best solution, though slicing sounds like a compelling feature
<ggole> Sharing can result in leaking space
<kaustuv> There might be space leaks with a sharing only approach
<ggole> So it's not necessarily a win
<flux> String.sub_share?
<kaustuv> It would also make the block header for strings a bit more complex
<flux> it would also break C bindings
<ggole> You would need an indirection, too
<ggole> string -> storage * begin * length, where storage points to the underlying bytes
<mrvn> bigarrays allow sharing. look how they do it.
<ggole> Bigarrays don't have to support relocation by the GC.
<mrvn> You need a proxy and reference counting.
<mrvn> ggole: relocation isn't the problem. the GC does that just fine.
rgrinberg has quit [Ping timeout: 240 seconds]
<flux> bigarrays are written to support sharing from the get-go
<flux> the biggest problem is retrofitting sharing so it doesn't break stuff :)
<mrvn> it must break the C interface
<mrvn> you need to change the metadata and add an indirection. so every C binding breaks.
<ggole> C interfaces have an unfortunate freezing effect on implementations :(
<kaustuv> Regarding retrofitting, I hope no code in the wild depends on things like (string_of_bool true).[0] <- 'g'
<ggole> See Python for a good example
<ggole> It is very dark. You are likely to be eaten by a boolean.
<mrvn> I'm not sure sharing strings is that usefull. People will String.sub a 10MB string to get 20 byte and wonder why the memory isn't freed.
<mrvn> kaustuv: galse
<kaustuv> At least in English you can still tell them apart by their length. In French you can just do String.blit "faux" 0 (string_of_bool vrai) 0 4
Nahra has quit [Remote host closed the connection]
<ggole> You could truncate with a bit of Obj hackery, though.
<mrvn> ggole: that would crash the GC
<ggole> In general yes, but you can drop a few chars without changing the string size (in words)
<mrvn> only up to 4/8
<adrien> gruik gruik gurik
<adrien> gruik*
<companion_cube> \o
<ggole> Hmm, then there's Obj.truncate
<ggole> Actually, set_field takes a caml value, and I don't think that can be used for string truncation
<ggole> ints will have the low bit set
Nahra has joined #ocaml
maattdd has joined #ocaml
topher has joined #ocaml
studybot has quit [Remote host closed the connection]
Hannibal_Smith has quit [Quit: Sto andando via]
studybot has joined #ocaml
Nuki has joined #ocaml
divyanshu has quit [Quit: Computer has gone to sleep.]
vpm has quit [Remote host closed the connection]
vpm has joined #ocaml
rgrinberg has joined #ocaml
zpe has quit [Remote host closed the connection]
ggole has quit [Ping timeout: 276 seconds]
studybot has quit [Remote host closed the connection]
rgrinberg has quit [Ping timeout: 240 seconds]
Fullma has quit [Ping timeout: 245 seconds]
Fullma has joined #ocaml
boogie has joined #ocaml
shinnya has joined #ocaml
ggole has joined #ocaml
ebzzry has joined #ocaml
<Drup> BitPuffin: my NIH 6th sense is tickling
<Drup> (12:08:54) whitequark: there is only one OCaml compiler <- that's not strictly true
<Drup> there is also js_of_ocaml, javaocaml metaocaml
<BitPuffin> NIH? lol
<BitPuffin> :D
michael_lee has quit [Quit: Ex-Chat]
studybot has joined #ocaml
kaustuv has left #ocaml ["ERC Version 5.3 (IRC client for Emacs)"]
studybot_ has joined #ocaml
<def`> and https://github.com/ocaml-bytes/ocamlcc , targeting C code :'
yacks has quit [Ping timeout: 255 seconds]
studybot has quit [Ping timeout: 240 seconds]
avsm has joined #ocaml
<whitequark> Drup: I don't count bytecode compilers as separate compilers, they're more like separate backends
<Drup> javaocaml doesn't start from bytecode
<Drup> (nor does metaocaml)
<whitequark> hmm
<whitequark> yes, you're right
<mrvn> bytecode is just a cpu that isn't built in hardware.
<Drup> the only ocaml bytecode -> something compilers I know are js_of_ocaml and ocapic
boogie has quit [Remote host closed the connection]
<Drup> maybe javaocaml2 is too, no idea
yacks has joined #ocaml
Eyyub has joined #ocaml
Eyyub has quit [Client Quit]
yacks has quit [Ping timeout: 265 seconds]
<smondet> Drup: ocamljava 2, it's from source (and it adds some syntatic sugar for accessing Java libraries)
<Drup> ...
<companion_cube> I wonder whether it could also be re-implemented with ppx + bytecode transformation
<Drup> completly impossible to maintain, will die in less than 5 years, thanks for the work.
<whitequark> somehow Ruby is able to maintain three major independent implementations
<whitequark> four, if you count the weird iOS/OS X spinoff (it's more of a dialect)
<flux> money being involved probably helps.
<whitequark> and they share basically 0 code
<flux> I'm not saying there isn't money in OCaml, but I Jane Street probably has little reason to reimplement ocaml :)
<flux> and there are probably good reasons to reimplement ruby..
ddosia has joined #ocaml
<whitequark> yes, that may be a factor
<Drup> (and there is probably far more money injected in the whole ruby ecosystem than in the ocaml one)
avsm has quit [Quit: Leaving.]
rgrinberg has joined #ocaml
<companion_cube> there is money injected in the ocaml ecosystem?!
<companion_cube> :D
<Drup> companion_cube: what do you think jst is doing ?
<flux> it's nice how there is the go-to example of money in the ocaml ecosystem ;-)
<def`> :D
<Drup> (or citrix and lexifi, for that matter)
<whitequark> I wonder who runs @frama_c
<companion_cube> Drup: they are injecting money in the jst ecosystem :>
<Drup> companion_cube: because you think ocamlpro would run if jst was not there ? :p
<companion_cube> frama_c is done by the CEA I think
<whitequark> CEA?
<companion_cube> Drup: right
<companion_cube> whitequark: a french physics institute
<NoNNaN> probably they inject money where they get the most return from it
<Drup> whitequark: a french research organisation
<whitequark> companion_cube: no, not the project
<whitequark> the twitter account
<companion_cube> oh :D
<Drup> x)
<whitequark> whoever runs it took their time to correct my usage of indefinite articles at least twice, and with typographically beautiful replies
<whitequark> I ain't even mad :D
<Drup> link please :D
<whitequark> and the other case was so long ago, I have no idea how to find it through twitter's abysmal UI
<ggole> That's Pascal Cuoq iirc
<whitequark> note how they did take their time to put a space between the second em-dash, but it it's still one pixel off
<ggole> Smart guy, bit pedantic
<whitequark> "pedantic" is such an understatement
<ggole> Understandable considering his chosen field, really
<Drup> do you know someone in the static analysis community who is not pedantic ? :p
<whitequark> (fwiw, I rather enjoy pedantic corrections, even if needless)
Hannibal_Smith has joined #ocaml
shinnya has quit [Ping timeout: 240 seconds]
olauzon has joined #ocaml
<pippijn> can I explicitly add cm(x)as to the linking in ocamlbuild?
<pippijn> for packages that don't (or incorrectly) use ocamlfind
<whitequark> via myocamlbuild, sure
<pippijn> ok, so there is no built-in way
Submarine has quit [Remote host closed the connection]
eikke__ has quit [Ping timeout: 252 seconds]
eikke__ has joined #ocaml
smondet has quit [Ping timeout: 240 seconds]
ikaros has quit [Quit: Ex-Chat]
smondet has joined #ocaml
WraithM has joined #ocaml
patronus has joined #ocaml
seliopou has quit [Ping timeout: 258 seconds]
patronus_ has quit [Read error: Connection reset by peer]
seliopou has joined #ocaml
mpmilano has joined #ocaml
<mpmilano> Hi ocaml folks. Anybody have a second to tell me if something I'm doing is impossible?
<Drup> rule #1 or irc : don't ask to ask :)
<mpmilano> It's been a while. I'm about to paste in ~15 lines - should I use a pastebin, or just put in chat?
<whitequark> pastebin, of course
<mpmilano> I'm trying to do this: http://pastebin.com/CRk7ZGvm
<mpmilano> is this possible? If it's not, what the equivalent design pattern for OCaml?
<Drup> design pattern, hoow
<Drup> haven't seen those since my bachelor
<mpmilano> ...that's good for you Drup. Do the cool kids say "technique" these day or something?
<Drup> mpmilano: the code is not clear : what are you trying to do ?
<mpmilano> Sure, let me explain. I've got some AST module (here called tree), and I'd like to be able to use it in a bunch of places where the tree nodes need extra information associated with them
<mpmilano> sometimes it's an ID, sometimes it's the cached value of a computation
divyanshu has joined #ocaml
AltGr has left #ocaml [#ocaml]
<Drup> why don't you just make your tree polymorphic ?
<mpmilano> so I'd basically like each node in the tree to have an "extra slot" where I can put arbitrary other data
<gasche> type 'a tree = ...
<Drup> as gasche said.
tlockney_away is now known as tlockney
<mpmilano> hm
cross has quit [Remote host closed the connection]
ninegrid has quit [Ping timeout: 240 seconds]
philtor has joined #ocaml
Fullma has quit [Ping timeout: 245 seconds]
<mpmilano> that might be fine for what I need, actually. thanks guys
<Drup> mpmilano: don't try to use functor in the beginning
<Drup> most of the time, for a beginner, they are not the solution you are looking for.
<mpmilano> I'm moving in from the land of C++, where templates were my best buddy - functors seemed equivalent, which is probably why I keep running to them.
<def`> more than functor, it is recursion at the module level which should be avoided
<Drup> yes, I figured that part out =)
<Drup> mpmilano: most of what is done with templates can be done with polymorphism in OCaml.
<companion_cube> not the compile time evaluation though
<mpmilano> yeah, I do miss compile-time evaluation
<Drup> I'm not convinced this is a feature.
<mpmilano> I've got lots of big datastructures which are constants. It'd be nice to not have to compute them at startup every time
<NoNNaN> mpmilano: please also define "big"
philtor has quit [Ping timeout: 252 seconds]
Thooms has joined #ocaml
<mpmilano> trees with north of ~40,000 nodes, each of which is assigned a unique-ID based on the sha256 of its in-memory structure.
michael_lee has joined #ocaml
ygrek has quit [Ping timeout: 265 seconds]
<whitequark> you say "in-memory structure", is that even same for 32/64-bit?
Fullma has joined #ocaml
Fullma has quit [Max SendQ exceeded]
Fullma has joined #ocaml
tobiasBora has joined #ocaml
racycle has joined #ocaml
claudiuc has joined #ocaml
jwatzman|work has joined #ocaml
rz has joined #ocaml
Fullma has quit [Ping timeout: 252 seconds]
topher has left #ocaml [#ocaml]
johnf has joined #ocaml
Fullma has joined #ocaml
avsm has joined #ocaml
tobiasBora has quit [Ping timeout: 265 seconds]
avsm has quit [Client Quit]
avsm has joined #ocaml
tane has joined #ocaml
avsm has quit [Ping timeout: 258 seconds]
boogie has joined #ocaml
<Drup> whitequark: "One important aspect of LLVM is that there is no distinction between an SSA variable and the operation that produces it. Because of this, any reference to the value produced by an instruction (or the value available as an incoming argument, for example) is represented as a direct pointer to the instance of the class that represents this value." <- this should be written in far bigger letter in the llvm documentation x)
zpe has joined #ocaml
boogie has quit [Remote host closed the connection]
ninegrid has joined #ocaml
<whitequark> did that cause problems for you?
<Drup> cause problems ? well no
<Drup> except that I didn't have any fucking idea how this ast was constructed before reading this. :D
<whitequark> ah
<Drup> now it makes much more sense
<Drup> whitequark: in my head, when confronted to an API describing an AST, I try to construct the associated sum type
<Drup> and I couldn't figure it out with llvm's api before that
<whitequark> I see
<whitequark> it's not an AST though, it has cycles (via phis)
boogie has joined #ocaml
<Drup> that doesn't change much
<Drup> (from the mental model point of view)
<whitequark> right
<Drup> whitequark: btw, how do you want patches ?
Kakadu has quit [Ping timeout: 240 seconds]
<whitequark> Drup: um... fork llvm-mirror/llvm on github?
<Drup> whitequark: ok
<Drup> (you said you could push directly, so I assumed you wanted the patch directly, or something)
<whitequark> well, I'd still need it to review it somehow
<whitequark> and anyway, I push via git-svn
<Drup> ok
<Drup> outch
<whitequark> outch?
<Drup> the .gitignore is ... not complete
jao has joined #ocaml
jao has quit [Changing host]
jao has joined #ocaml
<whitequark> oh, yes
<Drup> magit doesn't like it
<whitequark> you could suggest a patch for it too
<whitequark> (although, I'm really surprised: quite a few devs use git-svn)
_whitelogger has joined #ocaml
NoNNaN has quit [Ping timeout: 272 seconds]
<Drup> maybe they don't have a slow computer, so they don't notice it
<whitequark> no, I mean, the git status after a build is like 500 pages long
arjunguha has joined #ocaml
tani has joined #ocaml
<BitPuffin> what do you guys think about the funky syntax I came up with
<whitequark> oh god no, please let not it be another discussion about syntax
<Drup> cool, we were lacking a indentation aware lisp
<whitequark> I'm fed up with that shit at #ruby-lang daily
<BitPuffin> yeah, the first example would probably not be valid code
<BitPuffin> I was trying to make a point
<BitPuffin> as evident by the comments
<BitPuffin> whitequark: I'm not trying to start a flame war, I'm just looking to see what people think
<whitequark> ... says everyone who starts a flame war, ever
<Drup> it's a lisp syntax
<Drup> and it's indentation aware
<BitPuffin> Drup: yeah that's kind of the point
tane has quit [Ping timeout: 265 seconds]
<Drup> I will let you think very hard about it
<BitPuffin> initially I started with having let bla x y =
<arjunguha> anyone know offhand if i can connect to a unix domain socket using cohttp?
<BitPuffin> but that seemed weird
<Drup> and you will decide by yourself if it's a good idea.
<whitequark> arjunguha: I don't think so
<whitequark> take a look at conduit, that's what cohttp uses to resolve URIs now
<BitPuffin> Drup: well it gets rid of parenthesis hell :P
<arjunguha> thanks whitequark
<BitPuffin> it will probably change once I read sml spec
q66 has joined #ocaml
Eyyub has joined #ocaml
eikke__ has quit [Ping timeout: 245 seconds]
<BitPuffin> bbl!
Eyyub has quit [Ping timeout: 264 seconds]
divyanshu has quit [Quit: Computer has gone to sleep.]
BitPuffin has quit [Ping timeout: 240 seconds]
Thooms has quit [Quit: WeeChat 0.3.8]
<thomassa> BitPuffin's thing reminds me a bit of http://people.csail.mit.edu/mikelin/ocaml+twt/
ontologiae has joined #ocaml
arjunguha has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
arjunguha has joined #ocaml
philtor has joined #ocaml
arjunguha has quit [Client Quit]
arjunguha has joined #ocaml
arjunguha has quit [Client Quit]
manizzle has joined #ocaml
arjunguha has joined #ocaml
Submarine has joined #ocaml
claudiuc has quit [Remote host closed the connection]
topher has joined #ocaml
Kakadu has joined #ocaml
ygrek has joined #ocaml
Eyyub has joined #ocaml
<smondet> arjunguha: This code is outdated, but the idea of giving any "channel" to Cohttp is there: https://github.com/smondet/cohttps-server-example/blob/master/cohttps.ml
<arjunguha> thanks smondet. i'm trying to work out a patch for cohttp, maybe avsm will even accept :)
arj has quit [Quit: Leaving.]
zpe has quit [Remote host closed the connection]
NoNNaN has joined #ocaml
claudiuc has joined #ocaml
arjunguh_ has joined #ocaml
arjunguha has quit [Ping timeout: 245 seconds]
<whitequark> why do I receive twitter spam in french now :/
<ggole> Followed too many OCaml people
<whitequark> it's some, uh
<whitequark> #Artiste
* whitequark shrugs
<companion_cube> been followed by too many*
<ggole> Or that.
cantstanya has joined #ocaml
<Drup> whitequark: (function request) can I have a float_of_const please ? :3
<mrvn> what type should const be?
<whitequark> Drup: yeah, there's that omission
<whitequark> hrm
<whitequark> llvalue -> float option
<Drup> probably, yes
<whitequark> like int_of_const
<Drup> whitequark: is there a size issue ?
<whitequark> weeellll
<Drup> (I'm going to translate into zarith rationals afterwards anyway)
shinnya has joined #ocaml
BitPuffin has joined #ocaml
<BitPuffin> so, is ocaml "backwards compatible" with SML?
<Kakadu> I don't think so
<whitequark> I'm not sure they have much more in common than the name
<Kakadu> either isn't or I understand concept of backward compatibility wrong
<whitequark> SML seems... entirely foreign
<BitPuffin> well I'm currently reading the spec
<BitPuffin> but I have only just started
<BitPuffin> so in time I'll know I guess :P
<def`> BitPuffin: they definitely share some roots but are incompatible
<def`> (and SML is a standard and doesn't evolve, while ocaml is moving quite quickly)
<BitPuffin> ah
<BitPuffin> well I'll probably read both specs
<BitPuffin> I think starting with SML is good
<BitPuffin> because you can't use it, and it will hopefully give insight to why some things in ocaml is the way it is
michael_lee has quit [Quit: Ex-Chat]
<BitPuffin> haskell is also kind of rooted in ml isn't it?
<Hannibal_Smith> No
<ggole> More Miranda
<ggole> There's some lineage there though
<def`> yeah, it's an "ML language" in the sense that it features and Hindley-milner type system
<def`> an*
dotfelix_ has joined #ocaml
<BitPuffin> wtf so many languages I've never even heard of
<BitPuffin> that are like legendary :P
<def`> this is all what programming language theory is about :), legendary unheard languages
arj has joined #ocaml
<mrvn> def`: ever heard of A? B? Y?
ygrek has quit [Ping timeout: 258 seconds]
<BitPuffin> think most people have heard of A and B at least
<BitPuffin> or know that they existed before C
<def`> mrvn: I don't know A, B nor Y
<def`> I thought it was BPCL before C
<ggole> C was originally called New B
Mandus has quit [Ping timeout: 252 seconds]
<ggole> BCPL was some other thing iirc
<whitequark> ALGOL → CPL → BCPL → B → C
<companion_cube> I suppose miranda was a lazy evolution of ML
<BitPuffin> well dayum if ML was designed to reason about what is true etc then it's the perfect language to use as a base for a language where I want to be able to define the semantics of something
<ggole> Miranda came out of Landin's ISWIM, didn't it?
rgrinberg has quit [Quit: Leaving.]
<ggole> (With plenty of crosstalk, no doubt.)
rgrinberg has joined #ocaml
<ggole> ISWIM -> SASL -> Miranda -> Haskell, roughly
<ggole> Blargh
<ggole> Add one conditional that I thought I didn't need, code starts working
* ggole kills self
<whitequark> harsh
Mandus has joined #ocaml
Hannibal_Smith has quit [Quit: Sto andando via]
arjunguh_ has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
arj has quit [Quit: Leaving.]
<whitequark> I wonder if I could add something like a "turbocharged" mode to sublime-ocp-index
<whitequark> right now I use it approximately like: le<Enter>co<Enter>= P<Enter>.D<Enter>.db<Enter> cfp<Enter> cb<Enter> i<Enter>
<whitequark> resulting in: let content = Protobuf.Decoder.decode_bytes content_from_protobuf clear_bytes in
<whitequark> would be cool if I could just do "l co p.d.db cfp cb i<Ctrl+Enter>" and it magically expanded that to the code
<whitequark> or even "yolo<Ctrl+Shift+Alt+Super+Enter>" → "<implementation>;; <unit tests>;; <build system configuration>"
<whitequark> ah, dreams.
<companion_cube> after all this time, a friend in yolo
<whitequark> I find it inexplicably hilarious
<_obad_> stupid question of the week: how do I enable lwt backtrace? I'm using oasis and ocamlbuild.
<companion_cube> whitequark: :D
<whitequark> _obad_: flag ["ocaml"; "compile"; "debug"] (S[A"-ppopt"; A"-lwt-debug"]); in myocamlbuild.ml
<whitequark> Drup: *this* is what I've told you about
<_obad_> whitequark: thanks... I should be ashamed
<whitequark> _obad_: no, you shouldn't. breaking backtraces by default is a stupid idea that somehow got into pa_lwt
<whitequark> I'm going to get rid of that in ppx_lwt.
<_obad_> whitequark: I meant I should be ashamed of having to ask a basic question about ocamlbuild
<whitequark> well, you shouldn't be ashamed either way :p
<_obad_> I guess I'm suppoed to add a debug in _tags
<_obad_> I don't see an option in _oasis
<whitequark> ./configure --enable-debug
<_obad_> :) yess
BitPuffin has quit [Ping timeout: 252 seconds]
ontologiae has quit [Ping timeout: 258 seconds]
<_obad_> so it still ays "Called from ...lwt_main.ml" and then "Called from an unknown location"
<_obad_> I checked in the _build/_log that -ppopt -lwt-debug is passed
<_obad_> well I guess it doesn't get much more precise. I got the toplevel definition where the exception occurred.
<whitequark> hmm, do you compile it to native code?
<whitequark> native is less precise.
<_obad_> no I was doing byte
<whitequark> that's odd then
<whitequark> can you show the code?
arjunguha has joined #ocaml
<_obad_> erm... hang on I have to sanitize it
<_obad_> whitequark: http://pastebin.com/yJhCXc9Z
<_obad_> so I was trying to read on an fd opened with WRONLY
<_obad_> but then the location reported isn't very precise
<whitequark> oh
<whitequark> you see, all the calls are tail calls in your program
<whitequark> I mean, in load and main. so naturally you don't get backtrace entries for those
<_obad_> fine but how will I get the location of my error?
<whitequark> you won't.
<_obad_> I mean shouldn't Lwt be able to tell that the task that failed was created in the binding to blah?
<whitequark> nope
<_obad_> using preprocessor info?
<whitequark> preprocessor doesn't record task creation (and I don't think it is able to)
<whitequark> it only records the location on try_lwt and lwt..in
<_obad_> so wait... the error was triggered from blah, right?
<_obad_> blah is bound with lwt ... in
dotfeli__ has joined #ocaml
<whitequark> hrm
dotfeli__ has quit [Client Quit]
<whitequark> that's odd
axiles has quit [Remote host closed the connection]
<whitequark> well yeah, it should've included that
dotfeli__ has joined #ocaml
dotfelix_ has quit [Ping timeout: 276 seconds]
<_obad_> I guess I'll send an e-mail to the ml
dotfeli__ is now known as dotfelixb
dotfelixb has quit [Client Quit]
dotfelixb has joined #ocaml
manizzle has quit [Remote host closed the connection]
manizzle has joined #ocaml
_andre has quit [Quit: leaving]
Eyyub has quit [Ping timeout: 252 seconds]
<Drup> whitequark: and the stacktraces were helpful indeed :D
<Drup> (just kidding, don't yell :D)
<whitequark> Drup: you have no idea what it took me to not write the previous message in all caps
<Drup> :]
<Drup> _obad_: you shouldn't be ashamed to ask basic ocamlbuild questions
<Drup> the only people I know that don't ask basic ocamlbuild question anymore are people that hacked into it.
<whitequark> I didn't hack into it!
<_obad_> that's why I'm ashamed
topher has left #ocaml [#ocaml]
dotfelixb has quit [Quit: Leaving...]
<adrien> hmmm
<adrien> right!
<adrien> my memory works even after beer \o/
<adrien> and search engines never forget :D
<Drup> _obad_: ahah, ok, yeah, you should x)
rz has quit [Quit: Ex-Chat]
ggole has quit []
<adrien> considering it's possible to forget your lobotomy^Wclasses prépas in a few weeks only, I think that forgetting about ocamlbuild details after years is nothing :P
<_obad_> adrien: heh, I never really learned them. nicolas just came up with some magical solution.
<_obad_> unfortunately his code was a bit write-only.
<_obad_> I see jpdeplaix wants to clean the mess up
<adrien> the fact that he wrote sed scripts probably helped that :P
<Drup> write only
<Drup> that's so cute.
<adrien> someone started talking about haskell?
<mrvn> adrien: go join #haskell
<whitequark> how can that be?..
<Drup> It's the mystery call site.
<whitequark> let bucket = t.table.(index) in
<whitequark> lol what
<whitequark> this doesn't make any sense
<adrien> mrvn: I don't want to lose my eyes
<adrien> I think I tried valgrind on an ocaml program once
<adrien> less than meaningful
<Drup> the last time I tried to valgrind an ocaml program, valgrind crashed.
<whitequark> it did find a bug in a binding which appears to have produced spurious test failures for me
<adrien> ah bindings
<adrien> the safety of the C ABI
<whitequark> we need a new language that combines the safety of C with convenience of Coq
<_obad_> ats?
<whitequark> :D
<adrien> ;p
<_obad_> oh sorry that's the convenience of C with the safety of coq
<_obad_> other way around
<Drup> whitequark: Russian roulette ?
<Drup> (arguable more a paradigm than a language)
<Drup> arguably*
<whitequark> Drup: that's an adequate description of the paradigm C programmers use...
<_obad_> it's more like a room full of people playing russian roulette with nukes.
<_obad_> anyone dies = everyone dies
tani has quit [Quit: Verlassend]
<whitequark> _obad_: you could just drop everything but the last two words
<whitequark> "what is the development paradigm C uses?" "everyone dies"
<_obad_> lol
<mrvn> everything dies
<NoNNaN> well, c almost has a full semantics now
<whitequark> "what is the development paradigm C uses?" "death"
<whitequark> NoNNaN: eh?
<companion_cube> but you can step out of the semantics and still get a compiling program
<_obad_> point is... one missing comma buried in 1,000,000,000 lines of code can bring the whole system down
malo has joined #ocaml
<whitequark> companion_cube: I want to write an LLVM pass that replaces "unreachable" with "system("rm /* -rf");"
<mrvn> whitequark: what would be the point in that? Better replace the undefined with that.
<whitequark> mrvn: unreachable ≡ undefined
<mrvn> whitequark: if (false) { system("rm /* -rf"); } is unreachable but well defined
<whitequark> I mean, the instruction "unreachable" is equivalent to UB, not just any unreachable code.
<NoNNaN> whitequark: also take a look here: http://www.kframework.org/index.php/Projects
<whitequark> the LLVM instruction "unreachable", which is what it replaces known UB with.
<NoNNaN> they also have an LLVM formal semantics
<mrvn> ahh, nm
<NoNNaN> and it look like ocaml semantics also coming (but a bit abandoned)
<whitequark> NoNNaN: K looks interesting
<whitequark> wait, the tutorial is in video form?
<whitequark> ok, forget what I said, I'm not touching it
BitPuffin has joined #ocaml
<NoNNaN> a K compiler to ocaml also available
<Drup> a K compiler, really ?
<Drup> link for that ? i'm interested
<whitequark> very impressive work
<Drup> (I wouldn't the hell compile K to ocaml, but still interesting)
Simn has quit [Quit: Leaving]
<NoNNaN> they had a formal definition to php (!), jvm, java language, c, llvm
ontologiae has joined #ocaml
philtor has quit [Ping timeout: 258 seconds]
<NoNNaN> Drup: a bit old, a small rewrite probably needed, it's also on the project ideas page: http://www.kframework.org/index.php/ProjectIdeas
Kakadu has quit [Quit: Konversation terminated!]
<Drup> oh
<Drup> it's not the K I had in mind
<Drup> it's not the successor of J one
<NoNNaN> Drup: you mean the apl like vector language ?
<Drup> yeah, that's what I had in mind
<NoNNaN> that's a different story, the whole executable has ~250 lines of code
<Drup> indeed
<Drup> PSA to people that create languages : try to come up with something original when you choose the name
* bitbckt names his language "Drup"
<NoNNaN> Drup: Scott Vokes wrote an open source implementation for K 3.2, https://github.com/kevinlawler/kona
BitPuffin has quit [Ping timeout: 240 seconds]
<Drup> bitbckt: the github name is already taken, sorry :3
<bitbckt> drup-lang.org :)
<Drup> :D
<Drup> NoNNaN: interesting
<Drup> K is slightly more sane than APL
<NoNNaN> Drup: it depends on thinking concepts and patterns
<Drup> NoNNaN: the people who did this http://www.ccs.neu.edu/home/pete/pub/esop-2014.pdf plan to write a statically typed version of APL and build an optimizing compiler
<Drup> if they manage to do it, it's gonna be awesome
<whitequark> hmm, helgrind outputs a ton of errors for ocaml code
<jpdeplaix> _obad_: what do I want to do ?
<NoNNaN> Drup: interesting, after that they should add the resource awareness, something like this: http://raml.tcs.ifi.lmu.de/
Thooms has joined #ocaml
ygrek has joined #ocaml
BitPuffin has joined #ocaml
eikke__ has joined #ocaml
<_obad_> jpdeplaix: split ocamlbuild and improve it?
<_obad_> who is gildor
<NoNNaN> it looks like ocaml like resource aware language exists: http://groups.inf.ed.ac.uk/mrg/camelot/
<Drup> NoNNaN: huum, I have trouble understanding what useful stuff you can do with that
<adrien> _obad_: lead oasis dev
<jpdeplaix> _obad_: Sylvain Le Gall
<_obad_> adrien: ah ok!
<NoNNaN> Drup: think about memory bounds, computational bounds, worst case execution time, hardware compilation, eg.: http://www.cs.bham.ac.uk/~drg/papers/esop14.pdf
<Drup> oh, that's a talk I missed
<Drup> NoNNaN: I think that's in the domain "stuff the compile should be clever enough to figure out"
<NoNNaN> Drup: also available for integers and arrays: http://cs-www.cs.yale.edu/homes/hoffmann/papers/hs_flops14_final.pdf
<NoNNaN> Jan Hoffmann, Zhong Shao Type-Based Amortized Resource Analysis with Integers and Arrays
* Drup add that in the TOREAD list
xabi has joined #ocaml
jao has quit [Ping timeout: 265 seconds]
<NoNNaN> Drup: yes, the compilers should be more clever, but almost none exists yet (that is available to everyone)
<Drup> I would prefer work on making compiler clever enough, not into trying to make the type system even more complicated.
<whitequark> I think that's orthogonal
<whitequark> if you're using your type system to make your programs more efficient, you're doing it wrong
<whitequark> (aka the "C is fast because types" misconception)
<Drup> whitequark: well, that what they do.
<Drup> (the paper linked by NoNNaN)
<NoNNaN> you are using the type system / refine it as a "language" to express things that otherwise not possible
<Drup> they add type system feature to indicate how the memory should be allocated
<Drup> (at least, that what ocamlot is about)
<Drup> camelot*
<Drup> (almost a great name by the way, except that it's impossible to find it on google, so fail.)
<whitequark> ocamlot exists too...
<Drup> I know
<Drup> (the joke is appealing :3)
<NoNNaN> the type system can express lot's of things, eg.: crypto properties.: https://research.microsoft.com/en-us/projects/fstar/
<NoNNaN> the fstar language recently open sourced and has an ocaml backend, https://github.com/nikswamy/FStar
xabi has left #ocaml ["Leaving"]
<Drup> "the Dijkstra Monad" <3
ygrek_ has joined #ocaml
<smondet> NoNNaN: where do you see the ocaml backend?
<NoNNaN> is there any tool available for ocaml that takes a program coverage and try to generate input to access all branch in the program?
ygrek has quit [Ping timeout: 240 seconds]
<companion_cube> Drup: what would that be?
<Drup> companion_cube: I have no idea, read the paper :D
<NoNNaN> something like this: http://pexforfun.com/
<companion_cube> Drup: ELAZY
<Drup> NoNNaN: funny
<Drup> I don't know any in ocaml
<Drup> afaik, there is actually almost no static analysis software for ocaml
<NoNNaN> backend = code generator
<Drup> (a sort of frama_caml would be cool)
<NoNNaN> Drup: I have seen some coverage tool for ocaml, but that's only the coverage part
<Drup> companion_cube: I head that in nicoo's voice.
<Drup> NoNNaN: bisect, for the coverage part
<Drup> and indeed, that's only half of what you want
<Drup> otoh, if you have the tool to figure out a path, you don't really need a coverage tool.
<Drup> (except that you can't run such tool in a big code base, because your smt solver is going to explode)
<NoNNaN> Drup: that's only to figure out where should you go
<Drup> I loose one point of sanity everytime I rewrite opt_get :(
ygrek_ has quit [Ping timeout: 240 seconds]
<BitPuffin> by the way is ocaml getting anywhere with the problem of difficulty of doing gc with threads?
<Drup> there is no issue with threads.
<NoNNaN> how complex is the ocaml bytecode interpreter ? what is the best documentation available for the internals ?
<eikke__> is there anything like iksprintf?
<Drup> NoNNaN: I think the first thing to read is the paper on zink
Submarine has quit [Remote host closed the connection]
Thooms has quit [Ping timeout: 245 seconds]
<BitPuffin> Drup: well paralellism then?
<Drup> BitPuffin: that's the good question =)
<Drup> yes, it's being worked on
<BitPuffin> so basically regular threads work but green threads or whatever doesn't? :P
<Drup> everything works, just there is no intra-process parallelism
philtor has joined #ocaml
Bynbo7 has joined #ocaml
Axman6 has quit [Ping timeout: 256 seconds]
rand000 has quit [Quit: leaving]
<BitPuffin> Drup: you mean automagic one?
<Drup> no, I mean at all.
olauzon has quit [Ping timeout: 240 seconds]
<BitPuffin> ahh
<Drup> (and as I said, yes, it's being worked on)
NoNNaN has quit [Remote host closed the connection]
NoNNaN has joined #ocaml
darkf has joined #ocaml
shinnya has quit [Quit: ZNC - http://znc.in]
darkf has quit [Ping timeout: 240 seconds]
shinnya has joined #ocaml
tlockney is now known as tlockney_away
darkf has joined #ocaml
madroach has quit [Ping timeout: 252 seconds]
ontologiae has quit [Ping timeout: 264 seconds]
madroach has joined #ocaml
ontologiae has joined #ocaml
Nuki has quit [Remote host closed the connection]
divyanshu has joined #ocaml
NoNNaN has quit [Remote host closed the connection]
NoNNaN has joined #ocaml
philtor has quit [Ping timeout: 265 seconds]
tlockney_away is now known as tlockney
arjunguha has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tlockney is now known as tlockney_away