adrien changed the topic of #ocaml to: Discussions about the OCaml programming language | http://www.ocaml.org | OCaml 4.06.0 release notes: https://caml.inria.fr/pub/distrib/ocaml-4.06/notes/Changes | Try OCaml in your browser: http://try.ocamlpro.com | Public channel logs at http://irclog.whitequark.org/ocaml
mnemem has quit [Ping timeout: 245 seconds]
spew has joined #ocaml
Haudegen has quit [Remote host closed the connection]
so has joined #ocaml
pierpal has joined #ocaml
noitakomentaja has quit [Ping timeout: 250 seconds]
pierpal has quit [Ping timeout: 264 seconds]
gtrak has quit [Ping timeout: 264 seconds]
cobreadmonster has quit [Quit: Connection closed for inactivity]
gtrak has joined #ocaml
shinnya has quit [Ping timeout: 240 seconds]
JimmyRcom_ has joined #ocaml
sh0t has quit [Remote host closed the connection]
mnemem has joined #ocaml
spew has quit [Ping timeout: 245 seconds]
mnemem has quit [Ping timeout: 240 seconds]
sh0t has joined #ocaml
gtrak has quit [Ping timeout: 268 seconds]
FreeBirdLjj has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
hdon has quit [Ping timeout: 264 seconds]
hdon has joined #ocaml
hdon has quit [Ping timeout: 264 seconds]
mfp has quit [Ping timeout: 265 seconds]
shinnya has joined #ocaml
tormen_ has joined #ocaml
tormen has quit [Ping timeout: 248 seconds]
FreeBirdLjj has joined #ocaml
pierpal has joined #ocaml
hdon has joined #ocaml
shinnya has quit [Ping timeout: 240 seconds]
hdon has quit [Ping timeout: 240 seconds]
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
hdon has joined #ocaml
sh0t has quit [Remote host closed the connection]
FreeBirdLjj has quit [Ping timeout: 260 seconds]
hdon has quit [Ping timeout: 256 seconds]
pierpa has quit [Quit: Page closed]
isd has quit [Quit: Leaving.]
exarkun has quit [Ping timeout: 248 seconds]
exarkun has joined #ocaml
andrewalker has quit [Ping timeout: 248 seconds]
andrewalker has joined #ocaml
mnemem has joined #ocaml
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
mnemem has quit [Ping timeout: 240 seconds]
letoh has quit [Ping timeout: 256 seconds]
mnemem has joined #ocaml
mnemem has quit [Ping timeout: 260 seconds]
exarkun has quit [Ping timeout: 265 seconds]
exarkun has joined #ocaml
shw has quit [Quit: shw]
hdon has joined #ocaml
mbuf has joined #ocaml
hdon has quit [Ping timeout: 260 seconds]
hdon has joined #ocaml
hdon has quit [Ping timeout: 260 seconds]
MercurialAlchemi has joined #ocaml
sz0 has joined #ocaml
shinnya has joined #ocaml
cbot has quit [Quit: Leaving]
<rgr[m]> How do I add a sharing constraint to a type in a nested module signature?
<rgr[m]> E.g. something like `include Foo with Foo.Xxx.t = bar`
mnemem has joined #ocaml
<companion_cube> have you tried `with Xxx.t = bar` ?
exarkun has quit [Ping timeout: 240 seconds]
exarkun has joined #ocaml
wklm has joined #ocaml
mnemem has quit [Ping timeout: 265 seconds]
tarptaeya has joined #ocaml
noitakomentaja has joined #ocaml
hdon has joined #ocaml
tilpner has quit [Ping timeout: 276 seconds]
hdon has quit [Ping timeout: 260 seconds]
tilpner has joined #ocaml
mk9 has joined #ocaml
dakk has joined #ocaml
mnemem has joined #ocaml
mk9 has quit [Read error: Connection reset by peer]
mk9 has joined #ocaml
mk9 has quit [Client Quit]
discord1 has quit [Remote host closed the connection]
discord2 has joined #ocaml
wklm has quit [Ping timeout: 240 seconds]
wklm has joined #ocaml
freyr has joined #ocaml
exarkun has quit [Ping timeout: 276 seconds]
exarkun has joined #ocaml
invrsi has quit [Ping timeout: 255 seconds]
invrsi has joined #ocaml
mk9 has joined #ocaml
bairui has left #ocaml ["WeeChat 1.4-dev"]
JimmyRcom_ has quit [Ping timeout: 240 seconds]
JimmyRcom_ has joined #ocaml
yaewa has joined #ocaml
yaewa has quit [Client Quit]
moei has quit [Ping timeout: 248 seconds]
mk9 has quit [Quit: mk9]
<ZirconiumX> Is `Int64.sub Int64.min_int 1L` undefined behaviour, or guaranteed to wrap?
<reynir> ZirconiumX: "All arithmetic operations over int64 are taken modulo 264" https://caml.inria.fr/pub/docs/manual-ocaml/libref/Int64.html
<reynir> erm, 2^64
<ZirconiumX> Thank you
dhil_ has joined #ocaml
argent_smith has joined #ocaml
hdon has joined #ocaml
zolk3ri has joined #ocaml
hdon has quit [Ping timeout: 248 seconds]
discord3 has joined #ocaml
discord2 has quit [Remote host closed the connection]
Bronsa has joined #ocaml
mk9 has joined #ocaml
Haudegen has joined #ocaml
mk9 has quit [Client Quit]
Haudegen has quit [Remote host closed the connection]
mnemem has quit [Ping timeout: 264 seconds]
noitakomentaja has quit [Ping timeout: 250 seconds]
exarkun has quit [Ping timeout: 248 seconds]
exarkun has joined #ocaml
JimmyRcom_ has quit [Ping timeout: 240 seconds]
mfp has joined #ocaml
dhil_ has quit [Ping timeout: 265 seconds]
shinnya has quit [Ping timeout: 260 seconds]
kakadu has joined #ocaml
micro has left #ocaml [#ocaml]
silver has joined #ocaml
Bronsa has quit [Ping timeout: 256 seconds]
exarkun has quit [Ping timeout: 240 seconds]
exarkun has joined #ocaml
barcabuona has quit [Ping timeout: 264 seconds]
jbrown has quit [Ping timeout: 245 seconds]
freyr has quit [Quit: leaving]
dakk has quit [Ping timeout: 264 seconds]
ziyourenxiang has joined #ocaml
dhil_ has joined #ocaml
jbrown has joined #ocaml
wklm has quit [Ping timeout: 260 seconds]
wklm has joined #ocaml
letoh has joined #ocaml
tarptaeya has quit [Read error: Connection reset by peer]
tarptaeya has joined #ocaml
freyr has joined #ocaml
spew has joined #ocaml
mnemem has joined #ocaml
dhil_ has quit [Ping timeout: 264 seconds]
mnemem has quit [Ping timeout: 268 seconds]
mk9 has joined #ocaml
mk9 has quit [Client Quit]
mbuf has quit [Quit: Leaving]
sh0t has joined #ocaml
<freyr> How to query opam the value of "os" variable?
<freyr> and how to set it?
<freyr> in opam2
mnemem has joined #ocaml
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
gtrak has joined #ocaml
mnemem has quit [Quit: WeeChat 2.0.1]
sh0t has quit [Remote host closed the connection]
MercurialAlchemi has quit [Ping timeout: 268 seconds]
Bronsa has joined #ocaml
dakk has joined #ocaml
<freyr> Is it possible to write something like this:
<freyr> Similar to format, but with first class modules instead of formatters?
Haudegen has joined #ocaml
<freyr> Oh, I see, I need continuations. Thanks for your blog, Drup)
<flux[m]> btw, related short whitepaper: http://www.brics.dk/RS/98/12/
<flux[m]> though it doesn't consider gadts
<flux[m]> so I guess it's much more succinct with them
<Drup> s/short whitepaper/the fundational paper on the question/
<Drup> :p
<Drup> (the GADT way is better tho)
<flux[m]> well I was trying to paint it easily approachable (which it is), the content is solid :)
<Drup> yes, it's a very accessible and well writen paper
<Drup> the presentation is slightly outdated nowadays
<Drup> (although, Oleg would disagree given his love for tagless final approaches)
<flux[m]> is there a more up-to-date presentation on the matter?
<Drup> Well, if you want the gadt way, my blog post, I guess
dakk_ has joined #ocaml
xaimus has quit [Remote host closed the connection]
dakk has quit [Read error: Connection reset by peer]
<Drup> If you want a more general presentation of tagless final things, Oleg's paper on the topic is very ... comprehensive: http://okmij.org/ftp/tagless-final/course/lecture.pdf
dakk_ has quit [Remote host closed the connection]
dakk_ has joined #ocaml
dakk_ has quit [Remote host closed the connection]
hdon has joined #ocaml
dakk_ has joined #ocaml
dakk_ has quit [Remote host closed the connection]
dakk_ has joined #ocaml
dakk_ has quit [Remote host closed the connection]
sh0t has joined #ocaml
hdon has quit [Ping timeout: 256 seconds]
jmiven has quit [Quit: co'o]
jmiven has joined #ocaml
pierpal has quit [Ping timeout: 245 seconds]
sz0 has quit [Quit: Connection closed for inactivity]
sh0t has quit [Remote host closed the connection]
sh0t has joined #ocaml
pierpal has joined #ocaml
sh0t has quit [Remote host closed the connection]
sh0t has joined #ocaml
barcabuona has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
FreeBirdLjj has joined #ocaml
dhil_ has joined #ocaml
<Ankhers> I have just started going through the beta of Real World OCaml. I am trying to follow along with the examples in "OCaml as a Calculator". The first thing it does it "open Base;;". When I do that I get an unbound module error. I have already `opam install base`. Do I need to do something else to tell utop where to find opam installed modules?
<companion_cube> `#require "base";;` if you're in utop
<Ankhers> Thank you!
shinnya has joined #ocaml
sh0t has quit [Remote host closed the connection]
FreeBirdLjj has quit [Remote host closed the connection]
<freyr> ok, I have a GADT which includes a first-class module
<freyr> type (_,_) compose = (::) : (string * (module Convert with type t = 'a)) * ('b, 'c) compose -> ('a -> 'b, 'c) compose
<freyr> which works just fine, til I start using functors
<freyr> The type constructor Query.List(Query.String).t would escape its scope
<freyr> Is there any workaround to deal with such things?
<def`> Sharing the code would help.
<freyr> the function signature is
<freyr> make_query in particular
tane has joined #ocaml
<freyr> ty is escaping indeed
<freyr> Does it mean that it is impossible to use functors in such case?
<Drup> "ok, I have a GADT which includes a first-class module" My condolences.
<freyr> Is it a bad idea?
<octachron> freyr, "module List (E : Convert) : Convert" is the wrong type, you are making the type t abstract
<thizanne> freyr | Is it a bad idea?
<thizanne> that's actually two bad ideas.
<Enjolras> Drup: could be worse, the GADT could be parametrized by an object type
<Drup> Enjolras: I object!
<freyr> I thought about objects
<Enjolras> as long as you do itr with class, that's fine
FreeBirdLjj has joined #ocaml
<Drup> (actually, you are right, even if I've done it at least twice)
<octachron> freyr, another point is that with your current use cases, you could have a simple parametric record type with no loss of features
<freyr> thizanne: could you elaborate?
<freyr> octachron: you mean record with two methods instead of a module?
<freyr> but not object/class?
<octachron> yes, your module signature is equivalent to `type 'a t = { of_string:string ->'a; to_string:'a -> string }` at the type level
<Drup> freyr: Do you check all the following cases: 1) You need subtyping 2) You need type abstraction 3) Are you really really sure ?
<Drup> If you do not check all of them, you should use records or variants :p
pierpal has joined #ocaml
<octachron> and since first-class modules of type (module Convert) are useless, there is little point to use first-class modules here
<freyr> octachron: Besides, modules are predefined mostly
<freyr> but I'll stick to records in this case, thanks alot
<octachron> Drup, you should add that if you start having things like "sig type t val self:t val method_m: t -> int end", it is time to look at objects
sh0t has joined #ocaml
<Drup> Ah, yes, that as well
<Drup> I actually made that exact change for functoria/mirage. people looked at me funny
<Drup> freyr: are you trying to make a typed sql abstraction ?
FreeBirdLjj has quit [Remote host closed the connection]
<freyr> Drup: Nope, I'm trying to make a types rest abstraction
wklm has left #ocaml [#ocaml]
<Drup> Ah, yes, so furl basically
<freyr> Since we have a lot of time representations
<freyr> and other custom types
shinnya has quit [Ping timeout: 268 seconds]
<freyr> you haven't publish it, have you?
<Drup> I haven't, I'm unhappy with the API and didn't got time to make it better
xaimus has joined #ocaml
pierpal has quit [Read error: Connection reset by peer]
pierpal has joined #ocaml
<freyr> Atoms in furl are tyre regexps basically?
<Drup> yes
<Drup> that's the most flexible you can get while maintaining perfs, and you can add abstraction on top of it to make the API easier to digest
<Drup> @ncthbrt is working on something related as well
<freyr> And it works in both directions, for serialization too?
<Drup> my version does
<Drup> it works for matching, creating urls and routing
<freyr> Oh, I see, Tyre.eval
<freyr> I'll check it later on
<freyr> Shame so many cool libs are not published in opam
<Drup> there is a good reason furl is not published, it's a prototype, it's not usable
<discord3> <ncthbrt> I'm not quite targeting REST, but am building a higher level webframework: https://github.com/ncthbrt/refract/blob/master/src/common/RefractCommon.re
<Drup> (tyre is published :p)
<discord3> <ncthbrt> Tyre was quite nice to use
<Drup> urg, please use cohttp :(
Haudegen has quit [Remote host closed the connection]
<discord3> <ncthbrt> Why not httpaf?
<freyr> Type should be suffice to me in my case
<Drup> or httpaf, doesn't matter
<companion_cube> or curly 0:-)
<Drup> but reimplementing the http spec yourself is ... wrong
<discord3> <ncthbrt> Drup: Don't worry. Not planning on doing that
<discord3> <ncthbrt> I'm planning on using httpaf/cohttp (Not sure which yet)
<Drup> where is your part with the syntax extension ?
<discord3> <ncthbrt> But find they're quite low level, and want an API similar to http://suave.io/
<discord3> <ncthbrt> Extension is here ^
pierpal has quit [Ping timeout: 256 seconds]
FreeBirdLjj has joined #ocaml
<discord3> <ncthbrt> The ppx parses a well formed url template string into a GADT and then applies it to a function with optionally named arguments.
silver has quit [Quit: rakede]
pierpal has joined #ocaml
freyr has quit [Remote host closed the connection]
malina has joined #ocaml
<philtor> I think all floats in OCaml are 64 bit, is there any package available that provides 32 and 16 bit floats?
<ZirconiumX> I can understand 32 bit single precision, but why 16?
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
dhil_ has quit [Ping timeout: 264 seconds]
<bartholin> Reminder that x86 machine floats are either 32, 64 or 80 bits
<Drup> philtor: if you just want to store them, Bigarray as float32 and float64
<Drup> if you want to interact with C code, ctypes probably has something
<Drup> ZirconiumX: I don't know his usecase, but float16 is often use on GPUs
<Drup> it's fast, you can use lot's of them and it's sufficient for shaders
<ZirconiumX> That's a valid usecase, good point.
ziyourenxiang has quit [Ping timeout: 260 seconds]
<ZirconiumX> So, a lot of (especially Lwt-based) code uses interesting operators like |> and @@. When should I use those instead of just parens?
malina has quit [Ping timeout: 245 seconds]
<discord3> <hcarty> ZirconiumX: All in my experience - |> is most useful when there would be a lot of ( ... ) nesting and the steps read well sequentially. I find @@ to be less generally useful.
<ZirconiumX> Huh, interesting. Thank you, hcharty!
<ZirconiumX> I typo'd your name, woops
<discord3> <hcarty> sin x reads more clearly than x |> sin, but read myinput |> process_input |> archive_result reads more clearly (to me at least!) than archive_result (process_input (read myinput))
<discord3> <hcarty> No problem re: typos 😃
<ZirconiumX> So |> can be viewed sort of as a unix pipe?
<ZirconiumX> As in, you'd use it kinda where you'd use pipes in shell
<discord3> <hcarty> Indeed
<ZirconiumX> That's very helpful, thanks!
<discord3> <hcarty> Sure thing! This should be in a FAQ somewhere, where it can get appropriately argued and bikeshed'd
<discord3> <Bluddy> I use both |> and @@ liberally. I find them both to be useful.
<ZirconiumX> It just kinda throws me, since OCaml is the first functional programming language I've ever used, and I'm still getting used to its idioms
Bronsa has quit [Ping timeout: 260 seconds]
<Drup> The usage of @@ vs |> kinda depends on the style of the author (I use @@ more often in general .... except when I'm writing things that are linear long-ish pipelines, then I use |> over multiple lines)
Haudegen has joined #ocaml
barcabuona has quit [Ping timeout: 260 seconds]
hdon has joined #ocaml
<spew> I never use @@
barcabuona has joined #ocaml
<spew> in any situation where I would use @@ I just always use |>
kakadu has quit [Quit: Konversation terminated!]
pierpal has quit [Read error: Connection reset by peer]
<philtor> ZirconiumX: In most deep learning contexts when you're doing inference all you need is a 16bit float
<philtor> This makes things nice for vector processing
<philtor> on GPUs for example
<philtor> Of course, not entirely sure what the OCaml GPU programming story is like at this point
<philtor> Maybe Owl has something?
sh0t has quit [Remote host closed the connection]
hdon has quit [Ping timeout: 240 seconds]
<discord3> <Bluddy> Owl is the project to watch or contribute to
<discord3> <Bluddy> Right now they're not doing GPUs fully yet
barcabuona has quit [Ping timeout: 256 seconds]
jao has joined #ocaml
<philtor> Yeah, looks like they plan to do it through OpenCL
<philtor> Not having a GPU option really limits OWL/OCaml's usefulness in this space
<philtor> which is why I'm looking at Julia for this kind of thing
hdon has joined #ocaml
barcabuona has joined #ocaml
<discord3> <Perry> I saw someone ask about 16 bit floats earlier. They're frequently used in computer graphics and other applications where performance needs trump accuracy needs. The x86 supports half floats in its various vector units.
pierpal has joined #ocaml
<discord3> <Perry> One of the keys to optimizing floating point intensive code is picking the right precision etc. I've seen applications go far faster because someone moved from double to single precision for a few calculations where the precision wasn't needed.
dhil_ has joined #ocaml
tarptaeya has quit [Quit: Konversation terminated!]
pierpal has quit [Remote host closed the connection]
moei has joined #ocaml
dhil_ has quit [Ping timeout: 264 seconds]
<philtor> Yeah, not a lot of languages give you that level of choice in precision. C/C++, Julia... not sure of any others.
<philtor> Possibly Rust
steenuil has quit [Remote host closed the connection]
<discord3> <Perry> Nothing in OCaml prevents it from allowing that degree of choice, it just isn't there.
kakadu has joined #ocaml
<discord3> <Perry> It might be someday.
VermillionAzure has joined #ocaml
kakadu_ has joined #ocaml
kakadu has quit [Ping timeout: 276 seconds]
malina has joined #ocaml
heasummn has joined #ocaml
<heasummn> I have a small design question. I'm writing a compiler, in the parsing stage, I only know about the location of each AST node. so I've got a record that looks like {data: expr_type; location: loc_type}
<heasummn> I want to convert this into an AST node that also has type data
<heasummn> at the moment, I'm creating a new record that has the added type data and creating a compiler pass that converts them
<heasummn> this is slow and annoying and just seems wrong
<heasummn> I feel records aren't the best thing to be used here. For instance, in C++, I would be representing AST nodes as classes, and to add type data, I would just implement a `type` function in each class
<heasummn> what do you guys think I should use to represent my AST nodes?
<ZirconiumX> I won't claim to be a top camler, but isn't this exactly what sum types are for?
<ZirconiumX> Hell, I won't even claim to be a good camler
<ZirconiumX> heasummn: ^
<heasummn> I'm not a great camler either, the language is really nice to use though
<heasummn> let me take a look
<VermillionAzure> heasummn: You can't just create a generic type constructor for the new type-augmented structure?
<heasummn> what do you mean by generic type constructor?
<VermillionAzure> generic is probably the wrong word
<heasummn> ZirconiumX, if I use variants, I will have to handle the typed AST in places where I don't need to deal with it, such as in the AST
<heasummn> in the parsing*
<VermillionAzure> but something like `annotate: (expr -> type_data -> typed_expr)
<VermillionAzure> or something?
<heasummn> that's what I'm doing right now
<heasummn> but that's messy imo
<VermillionAzure> What's the alternative?
<heasummn> that's what I came here to ask for
<VermillionAzure> You need to do a data transform, so you'll have to do a type transform
<heasummn> I don't know of any better way
<VermillionAzure> unless you instead make the data type more dynamic
<VermillionAzure> e.g. using a dictionary or map for data bindings
<heasummn> I'm going to look at some professional compilers and see how they do it
<ZirconiumX> heasummn: Isn't the point of parsing to generate an AST? How do you generate an AST without handling AST?
<heasummn> I meant handling parsing, that was a typo
<heasummn> the parsing segment of my code doesn't care about the types. I don't want to burden it by having to handle them there
<heasummn> and I would still need a method to convert between them, wouldn't I?
<heasummn> If I used sum types
<ZirconiumX> Why does your AST have to care about types?
<ZirconiumX> The first stage of an AST is ordering lexer tokens into a tree, no?
<heasummn> yeah
<ZirconiumX> Lexer tokens don't have types
<heasummn> at this point I guess it's not an AST at all
larhat has joined #ocaml
<heasummn> I'm just comfortable with, for instance in a compiler written in C++. The AST is the source of all info, and as the compiler progresses you add information like locations and types to it
<ZirconiumX> Well, a compiler is at heart a function that takes source code in and dumps executable code out
<ZirconiumX> And it's a series of transforms
<ZirconiumX> So, just create a new AST
<heasummn> That is what I'm doing, it just feels a bit messy. I guess it's the cleanest way
<ZirconiumX> Is it heresy if I mention the MLton internals wiki in #ocaml?
<VermillionAzure> heasummn: The AST is not though
<VermillionAzure> You also have symbol tables and unification restraint sets
<heasummn> well yes, but the AST stores most of the info. That was a bit hyperbolized
<heasummn> to give an imperative example, I'd have a node, say Add(expr1, expr2). This has methods such as type, codegen, location, etc.
<heasummn> during the parsing stage, `type` would be null. It would be given a value once the semantic analysis happens
<heasummn> although
<heasummn> I guess it's a bit stricter in OCaml so that I know what information is available to each stage due to the type of syntax tree I'm dealing with
<heasummn> if that makes sense
<ZirconiumX> Then have the type field be an option type or something, and update it as you go
roygbiv has joined #ocaml
<VermillionAzure> ZirconiumX: I agree
<ZirconiumX> Or alternative have a "type not yet known" variant
<heasummn> that does seem like a better way to do it
<heasummn> atm, I've got two different types. I use polymorphism to keep the code for them minimal. I've got `ast` and `typed_ast`
<ZirconiumX> Yup
<heasummn> and then I've got a method that converts the ast to a typed_ast
<heasummn> and this is what does all of the type analysis
<ZirconiumX> Yeah, that sounds reasonable
<heasummn> I guess that isn't too ugkly
<heasummn> let me refactor the code because there's a lot of repetition
<heasummn> okay
<ZirconiumX> Essentially your AST traversal is naturally recursive anyway
<heasummn> I guess I just needed to justify having two different types, or find a better solution
hdon has quit [Changing host]
hdon has joined #ocaml
<VermillionAzure> It sounds like you don't need 2 tyeps
<ZirconiumX> I would probably keep the two different types, honestly
<ZirconiumX> For the sake of type safety
<heasummn> yeah
<ZirconiumX> YMMV, of course
<heasummn> thanks!
<VermillionAzure> heasummn: So do you want the easy fix or the correctness fix?
<heasummn> correctness fix, but I think I've reasoned out that I don't really need a fix
<ZirconiumX> So, to answer your original question: just use sum types, because that's what they're there for.
<ZirconiumX> Compilers are very functional programs, if you want to look at it that way
<VermillionAzure> ZirconiumX: Until you make them programmable too! <3
<ZirconiumX> A lexer for things is a function from strings to lists of pairs of things and strings.
<ZirconiumX> VermillionAzure: That or Futamura comes along to say hello
<VermillionAzure> What if we wanted to do Futamura in the compiler by programming the compiler to program itself to program itself to do that?!
<ZirconiumX> Then you'd need plenty of aspirin
Muzer has left #ocaml ["Leaving"]
<VermillionAzure> ouch
<ZirconiumX> Anyway, heasummn, happy to help
<VermillionAzure> btw
<VermillionAzure> Wikipedia is recruiting CS editors
<ZirconiumX> Nobody appreciated the rhyme? For shame.
Denommus has joined #ocaml
FreeBirdLjj has quit [Remote host closed the connection]
FreeBirdLjj has joined #ocaml
<DrWhax> 57
<VermillionAzure> 42?
FreeBirdLjj has quit [Ping timeout: 260 seconds]
heasummn has left #ocaml ["Leaving"]
steenuil has joined #ocaml
neatonk has quit [Ping timeout: 268 seconds]
Denommus has quit [Quit: ERC Version 5.3 (IRC client for Emacs)]
<DrWhax> VermillionAzure: indeed
tane has quit [Remote host closed the connection]
_andre has quit [Quit: leaving]
kakadu_ has quit [Remote host closed the connection]
argent_smith has quit [Quit: Leaving.]
pierpal has joined #ocaml
navaja has joined #ocaml
pierpa has joined #ocaml
navaja has quit [Ping timeout: 248 seconds]
shw has joined #ocaml
gtrak has quit [Ping timeout: 260 seconds]
pierpal has quit [Quit: Poof]
pierpal has joined #ocaml
cbot has joined #ocaml
Haudegen has quit [Ping timeout: 256 seconds]
shinnya has joined #ocaml
exarkun has quit [Read error: Connection reset by peer]
Haudegen has joined #ocaml
exarkun has joined #ocaml
roygbiv has quit [Quit: ™]
navaja has joined #ocaml
spew has quit [Disconnected by services]
navaja is now known as spew
hdon has quit [Ping timeout: 264 seconds]
VermillionAzure has quit [Ping timeout: 240 seconds]
m4lvin has left #ocaml [#ocaml]
spew has quit [Ping timeout: 265 seconds]
shinnya has quit [Ping timeout: 240 seconds]
cbot_ has joined #ocaml
cbot has quit [Ping timeout: 248 seconds]
VermillionAzure has joined #ocaml
hdon has joined #ocaml
JimmyRcom_ has joined #ocaml
hlysig has joined #ocaml