Logs: liberachat/#haskell
| 2021-06-05 20:36:36 | → | azeem joins (~azeem@176.200.190.170) |
| 2021-06-05 20:37:25 | → | fendor joins (~fendor@91.141.0.144.wireless.dyn.drei.com) |
| 2021-06-05 20:37:58 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e061:bfad:5c85:da98) |
| 2021-06-05 20:39:03 | × | azeem quits (~azeem@176.200.190.170) (Read error: Connection reset by peer) |
| 2021-06-05 20:39:16 | → | azeem joins (~azeem@dynamic-adsl-94-34-34-125.clienti.tiscali.it) |
| 2021-06-05 20:40:46 | × | eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:e061:bfad:5c85:da98) (Remote host closed the connection) |
| 2021-06-05 20:40:59 | → | eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:e061:bfad:5c85:da98) |
| 2021-06-05 20:41:57 | → | mikoto-chan joins (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) |
| 2021-06-05 20:42:18 | × | xff0x quits (~xff0x@2001:1a81:53bd:ad00:cace:1aaf:4d66:6b7f) (Ping timeout: 264 seconds) |
| 2021-06-05 20:43:59 | → | xff0x joins (~xff0x@185.65.135.235) |
| 2021-06-05 20:44:28 | → | fizbin joins (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) |
| 2021-06-05 20:48:45 | → | Henson joins (~kvirc@23-233-1-122.cpe.pppoe.ca) |
| 2021-06-05 20:49:24 | × | fizbin quits (~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds) |
| 2021-06-05 20:49:26 | <Henson> | has the freenode #haskell channel moved to here? |
| 2021-06-05 20:49:36 | <boxscape> | Henson, yes |
| 2021-06-05 20:50:05 | <boxscape> | oh, neat, the official rust playground default code starts with a reference to Haskell and an implementation of the Monad trait https://play.rust-lang.org/ |
| 2021-06-05 20:50:42 | <boxscape> | (it also fails to compile for me) |
| 2021-06-05 20:51:30 | <boxscape> | (because apparently you need to select nightly instead of stable at the top) |
| 2021-06-05 20:52:51 | × | fendor quits (~fendor@91.141.0.144.wireless.dyn.drei.com) (Remote host closed the connection) |
| 2021-06-05 20:53:23 | <monochrom> | :) |
| 2021-06-05 20:53:39 | × | zeenk quits (~zeenk@2a02:2f04:a310:b600:b098:bf18:df4d:4c41) (Quit: Konversation terminated!) |
| 2021-06-05 20:53:43 | × | xff0x quits (~xff0x@185.65.135.235) (Ping timeout: 268 seconds) |
| 2021-06-05 20:53:57 | → | fendor joins (~fendor@91.141.0.144.wireless.dyn.drei.com) |
| 2021-06-05 20:55:12 | → | xff0x joins (~xff0x@2001:1a81:53bd:ad00:cace:1aaf:4d66:6b7f) |
| 2021-06-05 20:56:09 | <maerwald> | no one runs stable |
| 2021-06-05 20:56:29 | → | pritambaral joins (~pritam@user/pritambaral) |
| 2021-06-05 21:01:10 | × | alx741 quits (~alx741@186.178.108.209) (Ping timeout: 245 seconds) |
| 2021-06-05 21:02:45 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 2021-06-05 21:03:38 | → | ddellacosta joins (~ddellacos@89.45.224.196) |
| 2021-06-05 21:06:13 | × | mc47 quits (~yecinem@89.246.239.190) (Remote host closed the connection) |
| 2021-06-05 21:13:25 | <ski> | _73 : note that "a uniquely determines b" *doesn't* mean that, for any given `a', there *has* to be a corresponding `b', with `C a b'. what it does say is that there can't be *more* than one `b' corresponding to each `a'. so, for each `a', there is at *most* one `b' such that `C a b' |
| 2021-06-05 21:14:31 | → | alx741 joins (~alx741@186.178.109.11) |
| 2021-06-05 21:14:48 | → | ddellaco_ joins (~ddellacos@86.106.121.33) |
| 2021-06-05 21:16:58 | → | haask joins (~harry@92.234.0.237) |
| 2021-06-05 21:16:59 | <ski> | _73 : what this practically means, is two things : (a) the implementation ensures that you can't have instances `C T U0' and `C T U1' at the same time, for differing types `U0' and `U1'; and (b) whenever you have two constraints `C a b0' and `C a b1' (e.g. because of using methods of `C' in a way that ensures that the same type `a' is used), then the implementation knows that `b0' must be equal to `b1' |
| 2021-06-05 21:17:00 | × | boioioing quits (~boioioing@cpe-76-84-141-127.neb.res.rr.com) (Ping timeout: 245 seconds) |
| 2021-06-05 21:17:05 | <ski> | (since there can be at most one `b' corresponding to an `a'), so it unifies `b0' and `b1' (call that `b'), and replaces the two constraints with just a single `C a b' one |
| 2021-06-05 21:17:18 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Quit: My MacBook Air has gone to sleep. ZZZzzz…) |
| 2021-06-05 21:18:04 | <ski> | _73 : it's this (b) part which can help type inference (e.g. simplifying inferred types, and especially avoiding ambiguity which often otherwise could arise) |
| 2021-06-05 21:18:12 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 2021-06-05 21:19:36 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit) |
| 2021-06-05 21:19:37 | × | ddellaco_ quits (~ddellacos@86.106.121.33) (Ping timeout: 272 seconds) |
| 2021-06-05 21:20:01 | × | HarveyPwca quits (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Remote host closed the connection) |
| 2021-06-05 21:20:04 | <ski> | _73 : logically speaking, we could say that the FD in `class C a b c | a -> b' expresses `forall a. unique b. exists c. C a b c' (for each type `a', there can be at most one type `b', (nevermind which type `c' is), satisfying `C a b c' |
| 2021-06-05 21:20:22 | × | Bartosz quits (~textual@24.35.90.211) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 2021-06-05 21:20:25 | → | HarveyPwca joins (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) |
| 2021-06-05 21:21:13 | <ski> | _73 : another (equivalent) way of expressing this is `forall a b0 b1 c0 c1. (C a b0 c0,C a b1 c1) => b0 = b1' (if we have two instances with the same `a' parameter, then the `b' parameter must also be the same (no restriction on the `c' one)) |
| 2021-06-05 21:21:26 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds) |
| 2021-06-05 21:21:30 | × | mikoto-chan quits (~mikoto-ch@ip-213-49-189-31.dsl.scarlet.be) (Quit: mikoto-chan) |
| 2021-06-05 21:21:33 | <mrmonday> | boxscape: I think that's just left over from a previous playground link you clicked... it defaults to hello world if you open it in a private/incognito window |
| 2021-06-05 21:21:44 | <boxscape> | oh, hm |
| 2021-06-05 21:21:59 | <boxscape> | let me see how I got there |
| 2021-06-05 21:22:12 | <boxscape> | (I don't think I've ever been on rust-lang.org before) |
| 2021-06-05 21:22:23 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 2021-06-05 21:22:47 | <boxscape> | it's what I got after clicking on the first link for "try rust online" in google |
| 2021-06-05 21:22:47 | <mrmonday> | I always find interesting code there that I'd forgotten about |
| 2021-06-05 21:23:07 | <mrmonday> | most of the rust playground links I click are people doing weird things with the type system |
| 2021-06-05 21:23:28 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 2021-06-05 21:23:30 | <boxscape> | mrmonday hmm I guess I must have clicked on a link to it at some point with that code without remembering |
| 2021-06-05 21:23:53 | <mrmonday> | yeah, it sticks around forever |
| 2021-06-05 21:25:38 | <boxscape> | mrmonday yup, found it, a link to there with this gist hash as URL param was in my history https://gist.github.com/rust-play/61caef82814783feadc33a3b865fe8b3 |
| 2021-06-05 21:26:23 | × | ddellacosta quits (~ddellacos@89.45.224.196) (Ping timeout: 252 seconds) |
| 2021-06-05 21:27:20 | <mrmonday> | there's gonna be some really exciting and really horrifying code when that feature stabilises, I'm sure :) |
| 2021-06-05 21:27:42 | <boxscape> | hah, yeah |
| 2021-06-05 21:27:43 | × | sayola quits (~vekto@dslc-082-082-145-205.pools.arcor-ip.net) (Quit: Leaving.) |
| 2021-06-05 21:28:17 | <boxscape> | (though I wouldn't know, I've never seen rust snippets longer than 3 lines, save for that gist) |
| 2021-06-05 21:29:06 | × | Jeanne-Kamikaze quits (~Jeanne-Ka@static-198-54-128-61.cust.tzulo.com) (Ping timeout: 264 seconds) |
| 2021-06-05 21:29:13 | <mrmonday> | I've seen a full implementation of the standard suite of haskell classes using stable Rust before, that was... interesting |
| 2021-06-05 21:31:05 | <mrmonday> | it was like when you see code based on a paper and it's completely illegible until you've read/understood the paper... crossed with someone really pushing a languages type system to its limits in ways it's really not designed to be used |
| 2021-06-05 21:33:11 | × | alx741 quits (~alx741@186.178.109.11) (Ping timeout: 268 seconds) |
| 2021-06-05 21:33:34 | <boxscape> | I once started (but didn't get very far) implementing GHC's base in haskell... here is what `data () = ()` looks like: https://github.com/JakobBruenker/jase/blob/master/jase-lib/main/com/github/jakobbruenker/jase/prim/ghc/Tuple.java#L48-L61 |
| 2021-06-05 21:33:39 | <boxscape> | in Java |
| 2021-06-05 21:33:41 | <boxscape> | not in Haskell |
| 2021-06-05 21:33:45 | <boxscape> | that would be somewhat redundant |
| 2021-06-05 21:33:58 | <ski> | mrmonday : including higher-order ones, like `Functor' ? |
| 2021-06-05 21:34:25 | × | jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 268 seconds) |
| 2021-06-05 21:34:26 | <dibblego> | ya can't in Java |
| 2021-06-05 21:34:28 | <boxscape> | wait |
| 2021-06-05 21:34:32 | <boxscape> | that repo is secret isn't it |
| 2021-06-05 21:35:00 | <boxscape> | https://paste.tomsmeding.com/1PbbTe9e is the code that link points to |
| 2021-06-05 21:35:15 | <boxscape> | dibblego yeah there's lots of things you can't do in Java, but a surprising number of things you can do |
| 2021-06-05 21:35:17 | <c_wraith> | I was under the impression rust can fake Functor in a way, but it totally falls over when you get to Traversable (A higher-kinded class over an independently higher-kinded-polymorphic function) |
| 2021-06-05 21:35:48 | <dibblego> | boxscape: yes we did this 15 years ago https://functionaljava.org/ |
| 2021-06-05 21:36:14 | <boxscape> | dibblego ah, nice, I've been on that website a few times |
| 2021-06-05 21:36:37 | <mrmonday> | ski: yeah, there are some really interesting tricks you can use in stable rust to "implement" Functor |
| 2021-06-05 21:36:50 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds) |
| 2021-06-05 21:36:51 | <dibblego> | also Java 7 lambdas http://javac.info |
| 2021-06-05 21:36:54 | <mrmonday> | implement feels like the wrong word to use there :P |
| 2021-06-05 21:37:17 | → | jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) |
| 2021-06-05 21:37:52 | <dibblego> | the fake is called "Lightweight Higher-Kinded Polymorphism" and "lightweight" is a generous adjective |
| 2021-06-05 21:39:01 | × | bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity) |
| 2021-06-05 21:41:32 | × | pieguy128 quits (~pieguy128@bas1-quebec14-67-70-101-46.dsl.bell.ca) (Ping timeout: 272 seconds) |
| 2021-06-05 21:42:38 | → | pieguy128 joins (~pieguy128@bas1-montreal02-65-92-161-178.dsl.bell.ca) |
| 2021-06-05 21:46:22 | → | alx741 joins (~alx741@186.178.108.47) |
| 2021-06-05 21:47:00 | ski | . o O ( "Java Precisely" by Peter Sestoft (of Moscow ML fame) in 2002 (1st ed.),2005 (2nd ed.),2016 (3rd ed.) at <https://www.itu.dk/people/sestoft/javaprecisely/> mentions various functional stuff (in 3rd ed.) ) |
| 2021-06-05 21:48:03 | × | echoreply quits (~echoreply@45.32.163.16) (Quit: WeeChat 1.9.1) |
| 2021-06-05 21:48:31 | → | echoreply joins (~echoreply@45.32.163.16) |
| 2021-06-05 21:49:09 | → | jmcarthur joins (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) |
| 2021-06-05 21:49:21 | × | jmcarthur quits (~jmcarthur@c-73-29-224-10.hsd1.nj.comcast.net) (Client Quit) |
| 2021-06-05 21:50:01 | × | gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving) |
All times are in UTC.