<d_bot>
<Deus> It isn't for C but it shows the process
<d_bot>
<monk> i'm working through appel's modern compilers in ML and hope to write something about working through it with ocaml
<d_bot>
<monk> and, if i'm feeling powerful enough, targeting llvm via the bindings
<d_bot>
<monk> learning the process of writing a compiler is definitely the meat of it all, different way of thinking
rgrinberg has joined #ocaml
xiongxin_ has joined #ocaml
wonko has joined #ocaml
hendursaga has quit [Remote host closed the connection]
hendursaga has joined #ocaml
xiongxin_ has quit [Ping timeout: 258 seconds]
bartholin has quit [Quit: Leaving]
Haudegen has quit [Quit: Bin weg.]
mro has joined #ocaml
mro has quit [Remote host closed the connection]
Haudegen has joined #ocaml
mbuf has quit [Quit: Leaving]
kakadu has quit [Quit: Konversation terminated!]
rgrinberg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
hyphen has quit [Ping timeout: 258 seconds]
hyphen has joined #ocaml
wyrd has quit [Remote host closed the connection]
wyrd has joined #ocaml
mro has joined #ocaml
Serpent7776 has quit [Read error: Connection reset by peer]
Serpent7776 has joined #ocaml
Haudegen has quit [Quit: No Ping reply in 180 seconds.]
Haudegen has joined #ocaml
hyphen has quit [Ping timeout: 260 seconds]
hyphen has joined #ocaml
rgrinberg has joined #ocaml
hyphen has quit [Ping timeout: 258 seconds]
hyphen has joined #ocaml
wonko has quit [Ping timeout: 258 seconds]
gravicappa has quit [Ping timeout: 264 seconds]
<d_bot>
<Alistair> How slow are heterogenous lists compared to (homogenous) lists?
<d_bot>
<octachron> From a runtime perspective there are the same thing?
<d_bot>
<Alistair> Really? I swear I heard GADTs have affect performance (I thought it sounded strange at the time, but I didn't know whether ADTs could have better optimizations than GADTs)
<d_bot>
<Alistair> If they're the same for runtime then you've made me really happy 🙂
<d_bot>
<octachron> Types are erased after typechecking, GADTs, ADTs, records are just ints and pointers to block at this stage.
<d_bot>
<Alistair> Great!
<d_bot>
<octachron> (There are cases when you can't avoid executing GADT-based proofs or carrying proof terms which is suboptimal, but the issue is not the memory representation)
spip has quit [Ping timeout: 245 seconds]
spip has joined #ocaml
mro has quit [Ping timeout: 265 seconds]
<d_bot>
<Alistair> Continuing this, suppose I have the module ```
<d_bot>
<Alistair> module Dependent_list (T : sig type _ t end) = struct
<d_bot>
<Alistair>
<d_bot>
<Alistair> type nil = | Nil
<d_bot>
<Alistair>
<d_bot>
<Alistair> type _ t =
<d_bot>
<Alistair> | [] : nil t
<d_bot>
<Alistair> | (::) : 't T.t * 'ts t -> ('t * 'ts) t
<d_bot>
<Alistair>
<d_bot>
<Alistair> end
<d_bot>
<Alistair> ```
<d_bot>
<Alistair> Is there a way to write something like: ```ocaml
<d_bot>
<Alistair> type _ expr =
<d_bot>
<Alistair> | ...
<d_bot>
<Alistair> | Texp_tuple : 'ts (Dependent_list (struct type nonrec 'a t = 'a expr)).t -> 'ts expr
<d_bot>
<Alistair> ```
<d_bot>
<infrandomness> isn't that for reason?
<d_bot>
<infrandomness> I use OCaml
Tuplanolla has joined #ocaml
<d_bot>
<octachron> @TheBloodlessMan , you need to go through a recursive module to have a name for the argument of Dependent_list, note that you can use the type-only recursive module trick `module rec M: ... = M and N : ... = F(M)`
rgrinberg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
mosterdt_ has quit [Remote host closed the connection]
jess has quit [Quit: Lost terminal]
jess has joined #ocaml
rgrinberg has joined #ocaml
<d_bot>
<Et7f3> What is the difference of "failed test" and "unexpected errors" in OCaml testsuite ?
vicfred has joined #ocaml
grobe0ba has joined #ocaml
Haudegen has quit [Ping timeout: 260 seconds]
<d_bot>
<crackcomm> I'd guess one is different output and second is an exception thrown
zebrag has quit [Quit: Konversation terminated!]
shawnw has joined #ocaml
Tuplanolla has quit [Quit: Leaving.]
rgrinberg has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]