2021/12/11

2021-12-11 00:00:26 +0100 <maerwald[m]> Unless you use C libraries or unsafe code
2021-12-11 00:01:14 +0100 <sshine> do Haskell programs crash safely if you use C libraries or unsafe code? :)
2021-12-11 00:01:33 +0100 <earendel> maewald: everyone does. you don't?
2021-12-11 00:01:33 +0100jkaye(~jkaye@2601:281:8300:7530:bc2d:ca62:1f76:4faa) (Ping timeout: 252 seconds)
2021-12-11 00:01:48 +0100 <sshine> I log in as root.
2021-12-11 00:02:12 +0100 <monochrom> Does Coq crash if you use C libraries...
2021-12-11 00:02:16 +0100 <maerwald[m]> Haskell may not even crash if you have memory unsoundness
2021-12-11 00:02:29 +0100 <sshine> monochrom, not if it fails to compile, which it always does. -_-
2021-12-11 00:02:37 +0100 <monochrom> heh
2021-12-11 00:03:38 +0100 <earendel> rust could at best spare like 2/3 of the usual vulnerability .. ppl say. which is a lot of course.
2021-12-11 00:04:26 +0100slice(~slice@user/slice)
2021-12-11 00:04:54 +0100 <sshine> also, throw more type errors to scare careless programmers away. :-D
2021-12-11 00:05:29 +0100Minnozz(~minnozz@salix.minnozz.com)
2021-12-11 00:05:40 +0100 <maerwald[m]> Yeah, GHC shames bad programmers into giving up their career
2021-12-11 00:05:52 +0100 <earendel> those ppl should continue writing fibonacci recursions, not security relevant code.
2021-12-11 00:06:12 +0100sshinerealises he's not far from writing fibonacci recursions this evening.
2021-12-11 00:06:19 +0100 <monochrom> The benefit of Rust I appreciate the most is bringing properly done sum types to the C, C++, Go communities.
2021-12-11 00:06:20 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fbfb-173.dhcp.inet.fi) (Read error: Connection reset by peer)
2021-12-11 00:06:30 +0100 <perro> si\
2021-12-11 00:06:33 +0100 <sshine> monochrom, and type inference?
2021-12-11 00:06:57 +0100 <maerwald[m]> Go devs are still debating benefits of proper sum types
2021-12-11 00:07:03 +0100 <maerwald[m]> It's funny
2021-12-11 00:07:05 +0100 <monochrom> That's the 2nd or 3rd on my tier list.
2021-12-11 00:07:28 +0100 <monochrom> But my tier list is based on what I care, not necessarily what the world really needs.
2021-12-11 00:07:32 +0100 <maerwald[m]> It's like they're still in the 90s
2021-12-11 00:07:38 +0100alx741(~alx741@157.100.93.160)
2021-12-11 00:07:53 +0100 <monochrom> My tier list may be like: 1. sum types; 2. the borrow system; 3. type inference
2021-12-11 00:08:02 +0100chomwitt(~chomwitt@2a02:587:dc0d:3700:12c3:7bff:fe6d:d374) (Ping timeout: 240 seconds)
2021-12-11 00:08:53 +0100myShoggoth(~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 252 seconds)
2021-12-11 00:08:58 +0100 <monochrom> Sum types prevent even more bugs than the borrow system, IMO.
2021-12-11 00:09:16 +0100 <maerwald[m]> monochrom: I also care more about sum types than I do about functional or lazy
2021-12-11 00:09:29 +0100 <maerwald[m]> The best features are the simple ones you can steal
2021-12-11 00:09:30 +0100 <earendel> that borrow system isn't something anybody waited for i guess. it definitely is more work for the dev.
2021-12-11 00:09:32 +0100 <monochrom> "I forgot to check whether lookup() returns null" Solved by sum types.
2021-12-11 00:10:10 +0100 <maerwald[m]> earendel: the alternative is a proof assistant for memory soundness
2021-12-11 00:10:18 +0100 <maerwald[m]> Even more complicated
2021-12-11 00:10:46 +0100 <earendel> i see.
2021-12-11 00:10:52 +0100 <maerwald[m]> The borrow system has very simple rules
2021-12-11 00:11:01 +0100 <maerwald[m]> They sometimes make little sense
2021-12-11 00:11:01 +0100 <earendel> sounds good.
2021-12-11 00:11:06 +0100 <maerwald[m]> But that's irrelevant
2021-12-11 00:11:19 +0100 <monochrom> "the packet I received is one of 3 cases and I messed up which case is which" Solved by sum types.
2021-12-11 00:11:53 +0100 <maerwald[m]> The borrow checker in fact rejects a lot of sound programs
2021-12-11 00:11:58 +0100jeetelongname(~jeet@eduroam-public-20.nat.port.ac.uk)
2021-12-11 00:12:09 +0100 <maerwald[m]> The trade off is pragmatic
2021-12-11 00:12:09 +0100 <dolio> That happens with every checker.
2021-12-11 00:12:40 +0100 <monochrom> "my function should be partial but I don't bother to announce it because I don't know what to return" Solved by sum types.
2021-12-11 00:13:33 +0100 <maerwald[m]> Now let's talk about open sum types...still great?
2021-12-11 00:13:37 +0100notzmv(~zmv@user/notzmv)
2021-12-11 00:13:44 +0100 <maerwald[m]> I can't decide
2021-12-11 00:14:17 +0100 <monochrom> "my function can fail for one of 3 reasons, how do I tell the caller which reason it is?" Solved by sum types.
2021-12-11 00:14:41 +0100 <monochrom> aka "C's errno is a disaster" Solved by sum types.
2021-12-11 00:14:51 +0100 <earendel> nan
2021-12-11 00:15:02 +0100 <earendel> look at your nan.
2021-12-11 00:15:12 +0100 <maerwald[m]> Well... now you have the problem of having 100 sum types across your application. ..
2021-12-11 00:15:20 +0100 <maerwald[m]> Or one that covers everything
2021-12-11 00:15:26 +0100 <maerwald[m]> Both are awful
2021-12-11 00:15:31 +0100 <monochrom> batman = repeat (sqrt (-1)) >:)
2021-12-11 00:15:55 +0100 <maerwald[m]> This is solved by open sum types...
2021-12-11 00:16:03 +0100 <geekosaur> NoN would be solvable if we didnb't need floating point compatibility with everything else
2021-12-11 00:16:05 +0100 <maerwald[m]> But they're very unergonomic
2021-12-11 00:16:15 +0100 <earendel> i thought the sum of integers would best be integer as well.
2021-12-11 00:16:31 +0100 <earendel> same for vectors.
2021-12-11 00:16:55 +0100 <earendel> and x should be forever set as 3.
2021-12-11 00:17:38 +0100 <monochrom> OK, parametric polymorphism should also be on my tier list, I forgot. Not sure where to put it relative to the other 3. All of them are great!
2021-12-11 00:18:28 +0100 <monochrom> Maybe higher than type inference because C's "use void* for generics" gets old really fast.
2021-12-11 00:18:39 +0100beka(~beka@104-244-24-117.PUBLIC.monkeybrains.net)
2021-12-11 00:19:32 +0100acidjnk_new(~acidjnk@p200300d0c7271e2134fbc39073c29133.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
2021-12-11 00:19:39 +0100 <monochrom> In retrospect, I think I rate "a language construct that enables you to finally say directly what you really mean" higher than "one more safety mechanism".
2021-12-11 00:19:42 +0100 <earendel> ok. static typing is not entirely new, conceptually.
2021-12-11 00:20:24 +0100 <monochrom> because if you say directly what you really mean, that already eliminates a lot of bugs, misunderstandings, forgetfulness.
2021-12-11 00:20:49 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-11 00:22:11 +0100 <earendel> if you're coding software which primary goals are maintability and reliability (with a longer lifecycle) you would definitely prefer some typing over rapid dev features or when programming for performance.
2021-12-11 00:22:58 +0100 <maerwald[m]> Maintainability and reliability are kinda conflicting goals
2021-12-11 00:23:11 +0100 <earendel> as john carmack says; there's a power to the dark side.
2021-12-11 00:23:31 +0100maplike(~maplike@31.209.100.216) (Ping timeout: 256 seconds)
2021-12-11 00:25:46 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 00:26:10 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-11 00:27:23 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-12-11 00:29:22 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-11 00:30:01 +0100neverfindme(~hayden@72.92.246.5)
2021-12-11 00:30:09 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-12-11 00:30:52 +0100neverfindme(~hayden@72.92.246.5) (Remote host closed the connection)
2021-12-11 00:31:37 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2021-12-11 00:40:45 +0100zebrag(~chris@user/zebrag)
2021-12-11 00:44:22 +0100 <sm> oh, replace-megaparsec looks great. Check this out: https://github.com/jamesdbrock/replace-megaparsec#in-the-shell
2021-12-11 00:44:29 +0100ubert(~Thunderbi@p548c998b.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-12-11 00:44:52 +0100 <sm> how do you figure, maerwald ?
2021-12-11 00:47:01 +0100Jing(~hedgehog@2604:a840:3::1001) (Remote host closed the connection)
2021-12-11 00:47:38 +0100Jing(~hedgehog@2604:a840:3::1001)
2021-12-11 00:48:58 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:2cc0:59c:7081:31f2) (Ping timeout: 260 seconds)
2021-12-11 00:52:53 +0100 <sm> a new haskell shell attempt: https://www.reddit.com/r/haskell/comments/rdinq2/using_haskell_as_my_shell/
2021-12-11 00:53:06 +0100 <EvanR> wait, static types are the dark side? cool
2021-12-11 00:55:11 +0100namkeleser(~namkelese@101.179.128.103) (Quit: Client closed)
2021-12-11 00:55:28 +0100namkeleser(~namkelese@101.179.128.103)
2021-12-11 00:56:13 +0100ChanServ+o litharge
2021-12-11 00:56:15 +0100litharge-bo *!*@98.38.249.169 litharge
2021-12-11 00:58:13 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-12-11 00:58:35 +0100jinsun(~quassel@user/jinsun) (Read error: Connection reset by peer)
2021-12-11 01:00:19 +0100jinsun(~quassel@user/jinsun)
2021-12-11 01:04:27 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:2cc0:59c:7081:31f2)
2021-12-11 01:05:04 +0100DNH(~DNH@2a02:8108:1100:16d8:e582:2d42:b0b2:720b) (Quit: Textual IRC Client: www.textualapp.com)
2021-12-11 01:09:03 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
2021-12-11 01:09:23 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:2cc0:59c:7081:31f2) (Ping timeout: 252 seconds)
2021-12-11 01:09:40 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:b4f0:1f02:af2:a840)
2021-12-11 01:10:37 +0100darchitect(~darchitec@2a00:23c6:3584:df00:7dec:bf13:8fa:748c) (Ping timeout: 240 seconds)
2021-12-11 01:10:58 +0100lavaman(~lavaman@98.38.249.169)
2021-12-11 01:13:47 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:b4f0:1f02:af2:a840) (Ping timeout: 252 seconds)
2021-12-11 01:15:02 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-11 01:15:36 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2021-12-11 01:18:17 +0100namkeleser(~namkelese@101.179.128.103) (Quit: Client closed)
2021-12-11 01:25:15 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-12-11 01:25:33 +0100namkeleser(~namkelese@101.179.128.103)
2021-12-11 01:25:43 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 01:28:29 +0100curiousgay_(~AdminUser@77-120-141-90.kha.volia.net)
2021-12-11 01:28:39 +0100mimmy(~mimmy@cpef81d0f857c83-cmf81d0f857c80.cpe.net.cable.rogers.com)
2021-12-11 01:30:30 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 260 seconds)
2021-12-11 01:31:14 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-11 01:32:55 +0100nvmd(~nvmd@user/nvmd) (Quit: Later, nerds.)
2021-12-11 01:34:02 +0100namkeleser(~namkelese@101.179.128.103) (Quit: Client closed)
2021-12-11 01:35:03 +0100mimmy(~mimmy@cpef81d0f857c83-cmf81d0f857c80.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds)
2021-12-11 01:37:02 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving)
2021-12-11 01:37:46 +0100curiousgay_(~AdminUser@77-120-141-90.kha.volia.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2021-12-11 01:37:51 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 250 seconds)
2021-12-11 01:38:07 +0100curiousgay(~AdminUser@77-120-141-90.kha.volia.net)
2021-12-11 01:44:08 +0100Jing(~hedgehog@2604:a840:3::1001) (Remote host closed the connection)
2021-12-11 01:48:05 +0100Jing(~hedgehog@2604:a840:3::1001)
2021-12-11 01:54:19 +0100beka(~beka@104-244-24-117.PUBLIC.monkeybrains.net) (Ping timeout: 250 seconds)
2021-12-11 01:54:39 +0100nf(~n@monade.li) (Quit: Fairfarren.)
2021-12-11 01:54:49 +0100nf(~n@monade.li)
2021-12-11 01:57:02 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com)
2021-12-11 01:58:54 +0100emf(~emf@2620:10d:c091:480::1:a9a4) (Read error: Connection reset by peer)
2021-12-11 01:58:58 +0100 <bitmapper> why does `x ~ y => Member x (y : xs)` work where `Member x (x : xs)` doesnt
2021-12-11 01:59:47 +0100namkeleser(~namkelese@101.179.128.103)
2021-12-11 02:03:43 +0100lavaman(~lavaman@98.38.249.169)
2021-12-11 02:04:07 +0100emf(~emf@cpe-174-109-36-85.nc.res.rr.com)
2021-12-11 02:05:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-12-11 02:07:17 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:2027:d60b:7498:6b04)
2021-12-11 02:07:41 +0100emf(~emf@cpe-174-109-36-85.nc.res.rr.com) (Client Quit)
2021-12-11 02:08:03 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2021-12-11 02:08:35 +0100emf(~emf@cpe-174-109-36-85.nc.res.rr.com)
2021-12-11 02:08:55 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Ping timeout: 268 seconds)
2021-12-11 02:09:44 +0100emf(~emf@cpe-174-109-36-85.nc.res.rr.com) (Client Quit)
2021-12-11 02:10:31 +0100emf(~emf@cpe-174-109-36-85.nc.res.rr.com)
2021-12-11 02:12:05 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:2027:d60b:7498:6b04) (Ping timeout: 252 seconds)
2021-12-11 02:13:07 +0100 <EvanR> I think in an instance head you can't repeat variables
2021-12-11 02:13:07 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-11 02:18:19 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788) (Ping timeout: 252 seconds)
2021-12-11 02:21:12 +0100Morrow(~quassel@bzq-110-168-31-106.red.bezeqint.net)
2021-12-11 02:21:14 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 268 seconds)
2021-12-11 02:23:20 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-11 02:26:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-11 02:26:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-11 02:26:07 +0100wroathe(~wroathe@user/wroathe)
2021-12-11 02:30:48 +0100 <glguy> bitmapper: They behave differently; you can do both , each with the right extensions enabled
2021-12-11 02:31:09 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 252 seconds)
2021-12-11 02:31:20 +0100 <glguy> The first one ways if (y : xs) matches, then we know x must equal y
2021-12-11 02:31:41 +0100 <glguy> but the second instance won't be used unless GHC already knows that the first x equals the second x
2021-12-11 02:32:34 +0100 <bitmapper> so how do i do the second?
2021-12-11 02:35:38 +0100curiousgay(~AdminUser@77-120-141-90.kha.volia.net) (Ping timeout: 256 seconds)
2021-12-11 02:36:09 +0100xff0x(~xff0x@2001:1a81:537e:3f00:56c7:e8a2:3a14:4d05) (Ping timeout: 250 seconds)
2021-12-11 02:36:51 +0100xff0x(~xff0x@2001:1a81:537e:3f00:f824:6e83:7767:59ad)
2021-12-11 02:39:48 +0100wroathe(~wroathe@user/wroathe) (Quit: Lost terminal)
2021-12-11 02:42:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-11 02:42:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-11 02:42:20 +0100wroathe(~wroathe@user/wroathe)
2021-12-11 02:51:54 +0100beka(~beka@104-244-24-117.PUBLIC.monkeybrains.net)
2021-12-11 02:53:44 +0100 <EvanR> did I imagine this or was there a multiuser programming environment for haskell that produced graphics
2021-12-11 02:54:39 +0100 <sm> multiuser.. like code.world ?
2021-12-11 02:54:42 +0100 <sm> or a VR thing ?
2021-12-11 02:56:08 +0100 <EvanR> code.world
2021-12-11 02:57:22 +0100 <EvanR> wow that was real
2021-12-11 03:00:11 +0100 <EvanR> I smell AoC visualizations coming up
2021-12-11 03:05:38 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19) (Quit: gone to sleep. ZZZzzz…)
2021-12-11 03:07:40 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:6cde:a18f:2d26:aae0)
2021-12-11 03:08:30 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 260 seconds)
2021-12-11 03:08:43 +0100lbseale(~ep1ctetus@user/ep1ctetus) (Ping timeout: 268 seconds)
2021-12-11 03:09:17 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-12-11 03:10:01 +0100xff0x(~xff0x@2001:1a81:537e:3f00:f824:6e83:7767:59ad) (Ping timeout: 252 seconds)
2021-12-11 03:12:01 +0100kupi(uid212005@id-212005.hampstead.irccloud.com)
2021-12-11 03:12:03 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:db12:87f1:cb29:dabf)
2021-12-11 03:12:42 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:6cde:a18f:2d26:aae0) (Ping timeout: 260 seconds)
2021-12-11 03:15:55 +0100 <jeetelongname> Oh yeah I have been meaning to do one of those
2021-12-11 03:16:07 +0100 <jeetelongname> (tho in racket so take that as you will)
2021-12-11 03:16:37 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-11 03:19:38 +0100 <sm> code.world/haskell is the real haskell variant
2021-12-11 03:21:32 +0100Techcable(~Techcable@168.235.93.147) (Ping timeout: 256 seconds)
2021-12-11 03:27:55 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19)
2021-12-11 03:41:18 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 03:41:54 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:6cde:a18f:2d26:aae0)
2021-12-11 03:43:15 +0100namkeleser(~namkelese@101.179.128.103) (Quit: Client closed)
2021-12-11 03:45:35 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-12-11 03:46:07 +0100mmhat(~mmh@55d44db9.access.ecotel.net) (Ping timeout: 250 seconds)
2021-12-11 03:46:29 +0100xkuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2021-12-11 03:47:44 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-11 03:47:55 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2021-12-11 03:49:31 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
2021-12-11 03:59:41 +0100mmhat(~mmh@55d45c6c.access.ecotel.net)
2021-12-11 04:01:49 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-11 04:04:50 +0100mimmy(~mimmy@2607:fea8:6e0:7f90:6cde:a18f:2d26:aae0) (Ping timeout: 268 seconds)
2021-12-11 04:07:41 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
2021-12-11 04:09:23 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 04:14:05 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-12-11 04:14:11 +0100zardoz(~bc8147f2@cerf.good1.com) (Quit: CGI:IRC (Session timeout))
2021-12-11 04:16:26 +0100wroathe(~wroathe@user/wroathe) (Read error: Connection reset by peer)
2021-12-11 04:18:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-11 04:18:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-11 04:18:25 +0100wroathe(~wroathe@user/wroathe)
2021-12-11 04:25:39 +0100justsomeguy(~justsomeg@user/justsomeguy)
2021-12-11 04:27:02 +0100teo(~teo@user/teo) (Ping timeout: 268 seconds)
2021-12-11 04:29:01 +0100td_(~td@94.134.91.156) (Ping timeout: 250 seconds)
2021-12-11 04:30:45 +0100td_(~td@94.134.91.156)
2021-12-11 04:33:16 +0100 <dsal> Does anyone know if it's possibly in tasty to have some tests disabled by default?
2021-12-11 04:33:26 +0100 <dsal> i.e., I want a commandline to add more expensive tests.
2021-12-11 04:36:20 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-12-11 04:41:58 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
2021-12-11 04:46:23 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2021-12-11 04:50:37 +0100Akiva(~Akiva@user/Akiva)
2021-12-11 04:56:13 +0100jespada(~jespada@87.74.33.157) (Ping timeout: 240 seconds)
2021-12-11 04:58:22 +0100jespada(~jespada@87.74.33.157)
2021-12-11 05:00:02 +0100hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2021-12-11 05:03:18 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 260 seconds)
2021-12-11 05:04:06 +0100doyougnu(~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-12-11 05:05:44 +0100beka(~beka@104-244-24-117.PUBLIC.monkeybrains.net) (Quit: Leaving)
2021-12-11 05:12:25 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 05:15:49 +0100jeetelongname(~jeet@eduroam-public-20.nat.port.ac.uk) (Ping timeout: 250 seconds)
2021-12-11 05:17:08 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds)
2021-12-11 05:21:45 +0100kupi(uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-11 05:24:36 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Quit: Leaving)
2021-12-11 05:28:30 +0100 <dsal> I was trying to figure out how to resume on error with megaparsec, but it's not exactly happy with my attempts. Still learned more stuff.
2021-12-11 05:29:15 +0100slice(~slice@user/slice) (Quit: zzz)
2021-12-11 05:30:57 +0100Techcable(~Techcable@168.235.93.147)
2021-12-11 05:31:06 +0100Akiva(~Akiva@user/Akiva)
2021-12-11 05:34:16 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
2021-12-11 05:34:52 +0100 <earendel> anyone programmed something using haskell?
2021-12-11 05:35:21 +0100 <dsal> Libraries are almost ready and then people can get started!
2021-12-11 05:36:54 +0100namkeleser(~namkelese@101.179.128.103)
2021-12-11 05:39:14 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 06:04:07 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-11 06:04:10 +0100deadmarshal(~deadmarsh@95.38.116.82) (Ping timeout: 256 seconds)
2021-12-11 06:07:02 +0100deadmarshal(~deadmarsh@95.38.118.223)
2021-12-11 06:09:02 +0100emf(~emf@cpe-174-109-36-85.nc.res.rr.com) (Quit: emf)
2021-12-11 06:15:01 +0100img(~img@user/img)
2021-12-11 06:16:50 +0100 <DigitalKiwi> i made a few things with those libraries
2021-12-11 06:19:53 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:db12:87f1:cb29:dabf) (Ping timeout: 268 seconds)
2021-12-11 06:20:15 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:4695:71bd:bd0a:6785)
2021-12-11 06:22:14 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2021-12-11 06:27:39 +0100kimjetwav(~user@2607:fea8:2363:8f00:b66e:c3b4:4ab3:f161) (Ping timeout: 252 seconds)
2021-12-11 06:31:23 +0100lavaman(~lavaman@98.38.249.169)
2021-12-11 06:31:38 +0100gawen(~gawen@user/gawen) (Quit: cya)
2021-12-11 06:32:34 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-11 06:32:59 +0100gawen(~gawen@user/gawen)
2021-12-11 06:35:19 +0100sprout(~quassel@2a02:a467:ccd6:1:2835:2428:a8d4:1d95) (Ping timeout: 268 seconds)
2021-12-11 06:35:56 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-12-11 06:37:50 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2021-12-11 06:43:13 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 06:48:07 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2021-12-11 06:51:29 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788)
2021-12-11 06:51:51 +0100mmhat(~mmh@55d45c6c.access.ecotel.net) (Quit: WeeChat 3.3)
2021-12-11 06:52:26 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-12-11 06:57:13 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
2021-12-11 06:58:00 +0100mbuf(~Shakthi@122.178.201.137)
2021-12-11 06:59:17 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-11 06:59:22 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a) (Ping timeout: 268 seconds)
2021-12-11 07:00:14 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 07:01:49 +0100 <int-e> > unwords $ map (\x -> printf "%.2f" (191 - x/22)) [4130,4121,4081,4080,4040,3975,3960,3949,3946,3917] -- new entrant at rank 3; sorry, xerox!
2021-12-11 07:01:51 +0100 <lambdabot> "3.27 3.68 5.50 5.55 7.36 10.32 11.00 11.50 11.64 12.95"
2021-12-11 07:05:34 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a) (Ping timeout: 260 seconds)
2021-12-11 07:06:31 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-12-11 07:11:31 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 250 seconds)
2021-12-11 07:15:18 +0100dsrt^(~dsrt@wsip-98-188-240-142.mc.at.cox.net) (Remote host closed the connection)
2021-12-11 07:15:42 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-11 07:17:24 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 07:22:10 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a) (Ping timeout: 268 seconds)
2021-12-11 07:27:34 +0100slice(~slice@user/slice)
2021-12-11 07:31:27 +0100nfd(~nfd@user/nfd) (Ping timeout: 252 seconds)
2021-12-11 07:32:42 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19) (Quit: gone to sleep. ZZZzzz…)
2021-12-11 07:32:58 +0100nfd(~nfd@user/nfd)
2021-12-11 07:33:22 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 07:36:22 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 260 seconds)
2021-12-11 07:37:41 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a) (Ping timeout: 252 seconds)
2021-12-11 07:54:22 +0100slice(~slice@user/slice) (Quit: zzz)
2021-12-11 07:58:04 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-12-11 07:59:08 +0100nrl^(~nrl@wsip-98-188-240-142.mc.at.cox.net)
2021-12-11 08:04:24 +0100 <xerox> int-e: bad day Day11: <<loop>>
2021-12-11 08:06:37 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 08:11:45 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a) (Ping timeout: 250 seconds)
2021-12-11 08:14:35 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Ping timeout: 268 seconds)
2021-12-11 08:15:04 +0100nfd(~nfd@user/nfd) (Ping timeout: 256 seconds)
2021-12-11 08:16:02 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 260 seconds)
2021-12-11 08:16:14 +0100 <int-e> Hmm, I didn't <<loop>>
2021-12-11 08:16:28 +0100nfd(~nfd@user/nfd)
2021-12-11 08:16:30 +0100nrl^(~nrl@wsip-98-188-240-142.mc.at.cox.net) (Remote host closed the connection)
2021-12-11 08:17:10 +0100 <xerox> I've convinced myself my implementation was wrong multiple times, one of those iterate frustrating moments
2021-12-11 08:17:16 +0100 <xerox> 🤷‍♂️
2021-12-11 08:17:28 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-12-11 08:22:03 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-11 08:23:51 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-12-11 08:24:36 +0100img(~img@user/img)
2021-12-11 08:24:51 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 08:25:35 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-12-11 08:26:26 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-12-11 08:27:01 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-12-11 08:29:19 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a) (Ping timeout: 250 seconds)
2021-12-11 08:30:51 +0100iqubic(~user@c-67-171-37-233.hsd1.wa.comcast.net) (Ping timeout: 252 seconds)
2021-12-11 08:37:32 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-12-11 08:37:33 +0100iqubic(~user@2601:602:9502:c70:9c0:18f3:c190:ff75)
2021-12-11 08:38:01 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-12-11 08:38:09 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-12-11 08:38:25 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-11 08:39:38 +0100 <int-e> xerox: I did find the problem unpleasant though, I can't quite put my finger on why. On the plus side I got to use `unfoldr`.
2021-12-11 08:39:46 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 08:40:17 +0100 <xerox> my first impl was an unfoldr too
2021-12-11 08:40:50 +0100 <int-e> (if you have step :: State -> (Int, State) then that matches unfoldr quite nicely)
2021-12-11 08:41:39 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:4695:71bd:bd0a:6785) (Ping timeout: 250 seconds)
2021-12-11 08:42:26 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:19a5:15f2:3ceb:bc1f)
2021-12-11 08:43:58 +0100Codaraxis(~Codaraxis@user/codaraxis) (Quit: Leaving)
2021-12-11 08:44:22 +0100nek0(~nek0@nek0.eu) (Quit: The Lounge - https://thelounge.chat)
2021-12-11 08:44:32 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds)
2021-12-11 08:44:41 +0100 <xerox> yeah, I'll scrap iterate, not as nice
2021-12-11 08:45:00 +0100 <opqdonut> oh wow yeah unfoldr is perfect for this
2021-12-11 08:46:10 +0100 <opqdonut> my solution: https://github.com/opqdonut/adventofcode21/blob/master/Day11.hs
2021-12-11 08:47:11 +0100 <xerox> it does introduce the potential of an off-by-one with findIndex for part 2
2021-12-11 08:47:49 +0100 <opqdonut> yeah well I had tail . iterate previously, so unfoldr was perfect in that sense too
2021-12-11 08:50:04 +0100 <xerox> what I ended up with https://github.com/mrtnpaolo/advent-of-code-2021/blob/master/execs/Day11.hs
2021-12-11 08:52:27 +0100acidjnk_new(~acidjnk@p200300d0c7271e2134fbc39073c29133.dip0.t-ipconnect.de)
2021-12-11 08:52:53 +0100 <opqdonut> xerox: you could just do `S.size seen` on line 27 and skip tracking the number of flashes separately, right?
2021-12-11 08:53:05 +0100 <opqdonut> your code is definitely neater than mine
2021-12-11 08:53:42 +0100nek0(~nek0@nek0.eu)
2021-12-11 08:54:46 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 260 seconds)
2021-12-11 08:54:51 +0100 <opqdonut> also, if you use M.adjust you won't need the M.member check on line 36
2021-12-11 08:55:44 +0100 <xerox> opqdonut: good point! I was tracking all the details because I was convinced I had it wrong
2021-12-11 08:56:11 +0100 <opqdonut> yeah, the minimal functional solution is rarely the most debuggable :P
2021-12-11 08:56:25 +0100max22-(~maxime@2a01cb0883359800efee173175359a41.ipv6.abo.wanadoo.fr)
2021-12-11 08:56:28 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:f80d:43f5:ddf4:fb26) (Remote host closed the connection)
2021-12-11 08:56:47 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 08:58:02 +0100 <xerox> opqdonut: adjust is beatiful, appreciate it, alter came to mind but that is more explicit even
2021-12-11 08:59:02 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-12-11 09:00:34 +0100fr33domlover(~fr33@2.55.40.147)
2021-12-11 09:00:47 +0100dsrt^(~dsrt@wsip-98-188-240-142.mc.at.cox.net)
2021-12-11 09:01:39 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a) (Ping timeout: 252 seconds)
2021-12-11 09:03:12 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-11 09:07:52 +0100 <int-e> xerox: Yes, I had an off-by-one in part 2 which I half expected and caught using the example.
2021-12-11 09:08:19 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2021-12-11 09:09:23 +0100darchitect(~darchitec@2a00:23c6:3584:df00:7dec:bf13:8fa:748c)
2021-12-11 09:10:58 +0100 <int-e> https://paste.debian.net/1223009/ ...not pretty
2021-12-11 09:11:31 +0100 <xerox> interact is a cool idea
2021-12-11 09:12:16 +0100 <int-e> interact is part of my template (so are the imports, which is why there are superfluous ones))
2021-12-11 09:12:55 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-11 09:13:38 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 09:15:21 +0100Tuplanolla(~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
2021-12-11 09:15:48 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-11 09:16:20 +0100 <int-e> https://paste.debian.net/1223010/ looks a bit cleaner, maybe
2021-12-11 09:16:50 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-11 09:18:09 +0100 <xerox> I quite like the do
2021-12-11 09:18:44 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a) (Ping timeout: 268 seconds)
2021-12-11 09:18:45 +0100 <xerox> I think a couple helpers would make it very concise
2021-12-11 09:21:31 +0100FragByte(~christian@user/fragbyte) (Quit: Quit)
2021-12-11 09:23:20 +0100FragByte(~christian@user/fragbyte)
2021-12-11 09:26:35 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:19a5:15f2:3ceb:bc1f) (Ping timeout: 252 seconds)
2021-12-11 09:27:39 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:cbda:12ba:4c62:7635)
2021-12-11 09:29:12 +0100 <int-e> xerox: helpers might make things more readable... but at least in my case, trying to be fast leads to monolithic code
2021-12-11 09:30:13 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 09:30:49 +0100 <int-e> oh did anybody else implement the wrong neighbourhood (von Neumann instead of Moore) at first?
2021-12-11 09:34:08 +0100jinsun__(~quassel@user/jinsun)
2021-12-11 09:34:31 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a) (Ping timeout: 250 seconds)
2021-12-11 09:34:54 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 260 seconds)
2021-12-11 09:36:34 +0100 <xerox> I felt so fortunate to read "including octopuses that are diagonally adjacent" right in the moment
2021-12-11 09:41:53 +0100acidjnk_new(~acidjnk@p200300d0c7271e2134fbc39073c29133.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2021-12-11 09:46:40 +0100notzmv(~zmv@user/notzmv)
2021-12-11 09:52:26 +0100iqubic(~user@2601:602:9502:c70:9c0:18f3:c190:ff75) (ERC 5.4.1 (IRC client for GNU Emacs 29.0.50))
2021-12-11 09:53:33 +0100namkeleser(~namkelese@101.179.128.103) (Quit: Client closed)
2021-12-11 09:55:14 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-11 09:56:45 +0100boxscape_(~boxscape_@p4ff0bb6c.dip0.t-ipconnect.de)
2021-12-11 09:56:57 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2021-12-11 09:58:21 +0100shriekingnoise(~shrieking@186.137.144.80) (Quit: Quit)
2021-12-11 09:58:33 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2021-12-11 10:00:59 +0100slice(~slice@user/slice)
2021-12-11 10:01:02 +0100thevishy(~Nishant@2405:201:f005:c007:acb3:d7a7:c300:b2a1)
2021-12-11 10:01:25 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
2021-12-11 10:18:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
2021-12-11 10:19:01 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:cbda:12ba:4c62:7635) (Ping timeout: 252 seconds)
2021-12-11 10:19:51 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:4812:eab:46f1:9dc7)
2021-12-11 10:22:28 +0100curiousgay(~quassel@77-120-141-90.kha.volia.net)
2021-12-11 10:23:03 +0100ishutin(~ishutin@178-164-208-88.pool.digikabel.hu) (Ping timeout: 256 seconds)
2021-12-11 10:23:41 +0100jinsun__jinsun
2021-12-11 10:24:53 +0100ishutin(~ishutin@85-238-77-101.pool.digikabel.hu)
2021-12-11 10:25:18 +0100k60```(~user@static.100.218.46.78.clients.your-server.de) (Ping timeout: 260 seconds)
2021-12-11 10:29:43 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-12-11 10:30:45 +0100fr33domlover(~fr33@2.55.40.147) (Ping timeout: 252 seconds)
2021-12-11 10:32:59 +0100lavaman(~lavaman@98.38.249.169)
2021-12-11 10:33:17 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-11 10:36:43 +0100sprout(~quassel@2a02:a467:ccd6:1:719f:b1db:e5b1:8e4a)
2021-12-11 10:37:02 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-12-11 10:37:04 +0100namkeleser(~namkelese@101.179.128.103)
2021-12-11 10:37:18 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-11 10:39:34 +0100nfd(~nfd@user/nfd) (Ping timeout: 256 seconds)
2021-12-11 10:39:42 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
2021-12-11 10:53:17 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-12-11 10:55:00 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 10:55:26 +0100bollu(uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-11 10:58:36 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-11 10:58:48 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-11 10:59:18 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-11 10:59:21 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-12-11 11:08:41 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-11 11:10:03 +0100img(~img@user/img)
2021-12-11 11:10:39 +0100smartin(~Thunderbi@88.135.18.171)
2021-12-11 11:11:54 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2021-12-11 11:12:41 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 250 seconds)
2021-12-11 11:13:17 +0100jespada(~jespada@87.74.33.157) (Ping timeout: 252 seconds)
2021-12-11 11:14:43 +0100Lord_of_Life_Lord_of_Life
2021-12-11 11:15:39 +0100jespada(~jespada@87.74.33.157)
2021-12-11 11:16:17 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-11 11:16:57 +0100curiousgay(~quassel@77-120-141-90.kha.volia.net) (Ping timeout: 252 seconds)
2021-12-11 11:17:44 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 268 seconds)
2021-12-11 11:28:34 +0100zer0bitz(~zer0bitz@dsl-hkibng32-54fbfb-173.dhcp.inet.fi)
2021-12-11 11:30:47 +0100narendraj9(~user@2a02:8109:b63f:ff7c::d8fb)
2021-12-11 11:33:16 +0100img(~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-11 11:34:39 +0100img(~img@user/img)
2021-12-11 11:40:24 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-11 11:49:16 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net) (Remote host closed the connection)
2021-12-11 11:55:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-11 11:57:02 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:4812:eab:46f1:9dc7) (Ping timeout: 240 seconds)
2021-12-11 11:58:03 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:72ce:9c15:414e:55e3)
2021-12-11 12:00:48 +0100finn_elija(~finn_elij@user/finn-elija/x-0085643)
2021-12-11 12:00:48 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
2021-12-11 12:00:48 +0100finn_elijaFinnElija
2021-12-11 12:01:00 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2021-12-11 12:06:44 +0100Successus(~Successus@gateway/tor-sasl/successus)
2021-12-11 12:07:28 +0100cosimone(~user@93-47-231-91.ip115.fastwebnet.it)
2021-12-11 12:11:11 +0100xff0x(~xff0x@2001:1a81:53c2:9a00:72ce:9c15:414e:55e3) (Ping timeout: 250 seconds)
2021-12-11 12:12:14 +0100xff0x(~xff0x@port-92-193-224-19.dynamic.as20676.net)
2021-12-11 12:17:07 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-12-11 12:18:17 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 12:18:18 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19)
2021-12-11 12:22:42 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds)
2021-12-11 12:37:43 +0100slice(~slice@user/slice) (Quit: zzz)
2021-12-11 12:56:01 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 12:58:53 +0100narendraj9(~user@2a02:8109:b63f:ff7c::d8fb) (Remote host closed the connection)
2021-12-11 13:00:21 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-12-11 13:01:18 +0100narendraj9(~user@2a02:8109:b63f:ff7c::62fc)
2021-12-11 13:03:02 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 260 seconds)
2021-12-11 13:03:25 +0100timCF(~timCF@m91-129-100-224.cust.tele2.ee) (Quit: leaving)
2021-12-11 13:04:29 +0100DNH(~DNH@2a02:8108:1100:16d8:11c1:36c3:fe48:2c6f)
2021-12-11 13:06:26 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-12-11 13:06:35 +0100fr33domlover(~fr33@2.55.42.168)
2021-12-11 13:07:33 +0100chomwitt(~chomwitt@2a02:587:dc0d:3700:12c3:7bff:fe6d:d374)
2021-12-11 13:09:35 +0100 <opqdonut> I'm seeing MulArrowT instead of ArrowT in some TH code after upgrading to GHC 9. The docs say it's just "FUN"... What is it?
2021-12-11 13:10:27 +0100 <opqdonut> what was previously: AppT (AppT ArrowT (ConT GHC.Types.Int)) x
2021-12-11 13:10:50 +0100 <opqdonut> is now: AppT (AppT (AppT MulArrowT (PromotedT GHC.Types.One)) (ConT GHC.Types.Int)) x
2021-12-11 13:11:07 +0100 <opqdonut> arrow with a multiplicity(??) of one?
2021-12-11 13:12:19 +0100 <opqdonut> ah is it a linear function type `a %1 -> b`?
2021-12-11 13:13:07 +0100 <opqdonut> right, so GHC 9 infers linear types for data constructors even if I haven't enabled -XLinearTypes
2021-12-11 13:13:26 +0100 <opqdonut> https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0111-linear-types.rst#linear-…
2021-12-11 13:14:05 +0100 <merijn> opqdonut: Does it? Or are regular arrows just a subset of linear arrows inside GHC?
2021-12-11 13:14:09 +0100 <geekosaur> yes, that looks like a multiplicity
2021-12-11 13:15:14 +0100 <geekosaur> merijn, but as a subset it should have Many instead of One as its multiplicity
2021-12-11 13:15:23 +0100 <opqdonut> merijn: for normal functions I seem to be getting ArrowTs
2021-12-11 13:15:27 +0100 <geekosaur> that being the default in most cases
2021-12-11 13:15:48 +0100tom__(~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
2021-12-11 13:15:57 +0100tom_(~tom@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
2021-12-11 13:17:16 +0100retro_(~retro@05412d78.skybroadband.com)
2021-12-11 13:19:50 +0100retroid_(~retro@05412d78.skybroadband.com) (Ping timeout: 268 seconds)
2021-12-11 13:21:45 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 13:29:37 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-11 13:31:16 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2021-12-11 13:31:19 +0100shailangsa(~shailangs@host86-186-127-128.range86-186.btcentralplus.com) ()
2021-12-11 13:32:13 +0100son0p(~ff@2800:484:1d81:b700:d40b:900:b387:320) (Ping timeout: 250 seconds)
2021-12-11 13:34:06 +0100fr33domlover(~fr33@2.55.42.168) (Ping timeout: 256 seconds)
2021-12-11 13:34:35 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19) (Quit: gone to sleep. ZZZzzz…)
2021-12-11 13:35:25 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19)
2021-12-11 13:35:35 +0100 <opqdonut> posted a documentation issue https://gitlab.haskell.org/ghc/ghc/-/issues/20812
2021-12-11 13:35:38 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-11 13:35:48 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Ping timeout: 256 seconds)
2021-12-11 13:35:57 +0100_ht_(~quassel@37.120.218.158)
2021-12-11 13:35:57 +0100 <opqdonut> I wonder if I should've just done a PR...
2021-12-11 13:40:01 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19) (Ping timeout: 250 seconds)
2021-12-11 13:40:38 +0100mud(~mud@user/kadoban) (Quit: quit)
2021-12-11 13:41:04 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19)
2021-12-11 13:41:33 +0100kuribas(~user@ptr-25vy0i8mmtix9f62pzs.18120a2.ip6.access.telenet.be)
2021-12-11 13:46:14 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-11 13:49:50 +0100narendraj9(~user@2a02:8109:b63f:ff7c::62fc) (Remote host closed the connection)
2021-12-11 13:50:11 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-12-11 13:52:58 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 260 seconds)
2021-12-11 13:53:46 +0100max22-(~maxime@2a01cb0883359800efee173175359a41.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-12-11 13:55:45 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 13:57:49 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19) (Quit: gone to sleep. ZZZzzz…)
2021-12-11 13:58:01 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Read error: Connection reset by peer)
2021-12-11 13:58:09 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 13:58:25 +0100timCF(~timCF@m91-129-100-224.cust.tele2.ee)
2021-12-11 14:00:16 +0100 <timCF> Hello! Did anybody experienced problems with stock deriving of Eq instance over existentially quantified type (type which do have forall on the right-hand side of definition)? Not sure how to deal with it, GHC gives some strange error
2021-12-11 14:01:31 +0100 <timCF> Error is like `Couldn't match type a1 with a` where "a" is existentially quanitified type parameter.
2021-12-11 14:02:50 +0100 <geekosaur> I think that's guaranteed to happen because it can never retrieve the type of the existential?
2021-12-11 14:03:13 +0100 <geekosaur> unless it's a GADT but that I think also breaks deriving in a different way
2021-12-11 14:04:12 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-12-11 14:05:12 +0100 <timCF> geekosaur: so no deriving for existentially quantified types?
2021-12-11 14:05:38 +0100 <kuribas> yeah, it cannot compare existentially quantified types.
2021-12-11 14:06:40 +0100 <geekosaur> type information doesn't exist at runtime so it can't know what it is comparing
2021-12-11 14:07:00 +0100 <kuribas> You might make a manual instance using a Typeable constraint.
2021-12-11 14:08:17 +0100 <kuribas> But it sounds like the wrong design to me...
2021-12-11 14:11:17 +0100shailangsa(~shailangs@host86-186-127-128.range86-186.btcentralplus.com)
2021-12-11 14:12:58 +0100 <timCF> kuribas: hmm, but what are the other options?
2021-12-11 14:13:20 +0100 <kuribas> timCF: what are you trying to do?
2021-12-11 14:13:33 +0100 <kuribas> For example, a sum type instead of existential.
2021-12-11 14:14:54 +0100Gurkenglas(~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
2021-12-11 14:14:57 +0100 <timCF> I'm trying to learn singletons :)
2021-12-11 14:16:49 +0100 <timCF> Case is just using `SomeFoo` instead of `Foo (bar :: Bar)` in case where `bar` is known only in runtime
2021-12-11 14:17:15 +0100 <timCF> Coming from IO-like action
2021-12-11 14:18:09 +0100 <merijn> timCF: Can't derive existential types, no, you'll have to handroll the instance
2021-12-11 14:18:50 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Remote host closed the connection)
2021-12-11 14:20:31 +0100 <kuribas> timCF: my deepest sympathy :)
2021-12-11 14:20:43 +0100 <kuribas> timCF: why not learn a proper dependently typed language instead?
2021-12-11 14:24:20 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-12-11 14:24:29 +0100 <timCF> kuribas: I'm just trying to evolve gradually) I've started Haskell only after I could say "I know Erlang, nothing to do here anymore". It took something around 5 years to be able to say so. Now I'm kinda invested already in learning Haskell :)
2021-12-11 14:24:58 +0100 <kuribas> timCF: I didn't say you should stop learning haskell :)
2021-12-11 14:25:09 +0100 <geekosaur> you're not really learning haskell any more
2021-12-11 14:25:13 +0100 <kuribas> Just that in that direction lies madness.
2021-12-11 14:25:23 +0100 <geekosaur> you're learning a misguided attempt to pretend to be idris in haskell
2021-12-11 14:25:24 +0100 <merijn> s/not really learning Haskell/really not learning Haskell
2021-12-11 14:25:48 +0100 <merijn> timCF: I'd second the idea of "maybe you should look at Idris instead" :p
2021-12-11 14:29:42 +0100 <kuribas> timCF: note that a lot of DT language build on haskell knowledge, so learning haskell isn't a waste of effort.
2021-12-11 14:29:50 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-12-11 14:31:53 +0100bollu(uid233390@id-233390.helmsley.irccloud.com)
2021-12-11 14:31:57 +0100 <merijn> More relevantly, Idris is *intentionally* positioned/designed to accommodate people coming from Haskell
2021-12-11 14:33:22 +0100 <timCF> - How and why you started programming in Idiris? - Well one day I tried to refactor my Haskell codebase to work with singletons. - Understandable.
2021-12-11 14:34:41 +0100lavaman(~lavaman@98.38.249.169)
2021-12-11 14:36:56 +0100hueso(~root@user/hueso)
2021-12-11 14:37:41 +0100 <merijn> timCF: tbh, if you say that in the idris channel I'm pretty sure *everyone* will understand that immediately :p
2021-12-11 14:39:16 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2021-12-11 14:41:11 +0100max22-(~maxime@2a01cb0883359800fed7895ae16757a7.ipv6.abo.wanadoo.fr)
2021-12-11 14:44:04 +0100 <kuribas> most idris activity is in discord, not freenode.
2021-12-11 14:44:36 +0100 <kuribas> or wathever this place is :)
2021-12-11 14:46:01 +0100 <kuribas> My current interest in haskell is more in how to write clean haskell without resorting to too much fancy type level stuff.
2021-12-11 14:46:05 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2021-12-11 14:46:26 +0100 <kuribas> Like leveraging abstractions and algebraic structures, like Monoid/Applicative/...
2021-12-11 14:46:33 +0100ProfSimm(~ProfSimm@87.227.196.109) (Ping timeout: 256 seconds)
2021-12-11 14:46:35 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 14:51:18 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 260 seconds)
2021-12-11 14:55:17 +0100neurocyte0132889(~neurocyte@45.14.190.29)
2021-12-11 14:55:17 +0100neurocyte0132889(~neurocyte@45.14.190.29) (Changing host)
2021-12-11 14:55:17 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-11 14:55:44 +0100xkuru(~xkuru@user/xkuru)
2021-12-11 14:57:58 +0100Digit(~user@user/digit)
2021-12-11 14:58:41 +0100 <Digit> hi. just had this idea.... ~ "if gimp were coded in haskell"
2021-12-11 15:01:52 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:3170:52ba:4037:d1)
2021-12-11 15:06:07 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:3170:52ba:4037:d1) (Ping timeout: 252 seconds)
2021-12-11 15:09:10 +0100Successus(~Successus@gateway/tor-sasl/successus) ()
2021-12-11 15:09:52 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2021-12-11 15:12:42 +0100jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 256 seconds)
2021-12-11 15:14:32 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-12-11 15:14:38 +0100jle`(~jle`@cpe-23-240-75-236.socal.res.rr.com)
2021-12-11 15:16:36 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-11 15:21:53 +0100kaction(~kaction@pool-71-191-91-40.washdc.fios.verizon.net) (Read error: Connection reset by peer)
2021-12-11 15:24:31 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2021-12-11 15:32:24 +0100ProfSimm(~ProfSimm@87.227.196.109)
2021-12-11 15:32:35 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2021-12-11 15:32:55 +0100namkeleser(~namkelese@101.179.128.103) (Quit: Client closed)
2021-12-11 15:35:57 +0100 <kuribas> then?
2021-12-11 15:36:37 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-11 15:36:56 +0100 <geekosaur> we'd have a gui lib to write it in?
2021-12-11 15:36:58 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2021-12-11 15:37:48 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2021-12-11 15:39:22 +0100 <geekosaur> (come to think of it, that probably *is* the point: gtk started out as the toolkit developed for gimp)
2021-12-11 15:39:31 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Quit: Leaving)
2021-12-11 15:40:30 +0100 <geekosaur> kinda doubt it'd have had as much impact if it had been done in haskell though
2021-12-11 15:40:54 +0100 <kuribas> you can already use gtk from haskell.
2021-12-11 15:40:58 +0100 <kuribas> And there is wxHaskell.
2021-12-11 15:41:06 +0100 <geekosaur> but neither is native
2021-12-11 15:41:22 +0100 <kuribas> don't know what you mean by native...
2021-12-11 15:41:24 +0100 <geekosaur> and, do we still have wxHaskell? last I checked it was badly bitrotted
2021-12-11 15:41:29 +0100 <kuribas> wxHaskell uses native widgets.
2021-12-11 15:41:37 +0100 <kuribas> geekosaur: it did, because nobody uses it.
2021-12-11 15:42:23 +0100 <geekosaur> but more to the point, gtk fits C-think. what would we have gotten if it had been developed in Haskell in the first place? FRP?
2021-12-11 15:42:34 +0100 <kuribas> These days everyone makes their own UI toolkit in JS.
2021-12-11 15:42:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-11 15:42:54 +0100 <kuribas> geekosaur: you can already use FRP with gtk.
2021-12-11 15:43:00 +0100 <kuribas> You just need a bit more plumbing.
2021-12-11 15:44:07 +0100 <timCF> Let's say I do have a normal class `class C a` and a kind `data K = K0 | K1` and a type `newtype T (k :: Maybe K) = T String`. There are both instances `instance C (T ('Just 'K0))` and `instance C (T ('Just 'K1))` presented in a scope, but when I'm trying to apply C method to value of the type `T ('Just k)`, GHC refuses to resolve it. Should I help GHC somehow to perform inference?
2021-12-11 15:44:23 +0100 <kuribas> Maybe I am becoming an old fart, but I liked when UI toolkits came with the OS.
2021-12-11 15:45:44 +0100 <timCF> Error is something like "No instance for (C (T ('Just k)))
2021-12-11 15:45:48 +0100 <geekosaur> please. I shudder to think what linux devs would have come up with
2021-12-11 15:45:57 +0100 <kuribas> gtk?
2021-12-11 15:46:11 +0100 <kuribas> gtk is a standard linux toolkit.
2021-12-11 15:46:20 +0100 <geekosaur> they didn't come up with that, they adopted it
2021-12-11 15:46:25 +0100 <kuribas> by OS I didn't mean the kernel programmers.
2021-12-11 15:46:36 +0100 <geekosaur> as I said, it started out as a custom toolkit for the gimp
2021-12-11 15:47:10 +0100Digit(~user@user/digit) (Read error: Connection reset by peer)
2021-12-11 15:47:19 +0100 <kuribas> yes
2021-12-11 15:47:25 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-12-11 15:47:28 +0100 <geekosaur> "my job here is done"? :þ
2021-12-11 15:47:56 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-12-11 15:47:58 +0100 <kuribas> timCF: code?
2021-12-11 15:48:32 +0100 <kuribas> I just mean, so there is a unified look and feel for the OS.
2021-12-11 15:48:32 +0100opqdonut(opqdonut@pseudo.fixme.fi) (Ping timeout: 240 seconds)
2021-12-11 15:48:47 +0100Digit(~user@user/digit)
2021-12-11 15:49:25 +0100 <geekosaur> kuribas, so linux has blown it because gtk is not the only toolkit used. qt/kde is also widely used
2021-12-11 15:49:40 +0100 <kuribas> yeah, they did :)
2021-12-11 15:49:44 +0100 <geekosaur> and there are still aps based on awt (god alone knows why)
2021-12-11 15:50:02 +0100 <kuribas> But most distros managed to unify the look and feel.
2021-12-11 15:50:03 +0100 <geekosaur> uh, athena widgets
2021-12-11 15:50:46 +0100 <kuribas> I remember those :)
2021-12-11 15:50:59 +0100 <kuribas> there was also gnustep.
2021-12-11 15:51:13 +0100opqdonut(opqdonut@pseudo.fixme.fi)
2021-12-11 15:52:24 +0100 <geekosaur> moist distros picked one de and ran with it — but there are still apps available only for oe toolkit or the other. there are ways to try to unify theming but they have limits
2021-12-11 15:52:50 +0100 <geekosaur> *most
2021-12-11 15:55:32 +0100 <kuribas> I wouldn't claim linux is a good example :)
2021-12-11 15:56:26 +0100 <kuribas> I just think haskell UI libraries are poor because nobody takes the effort to maintain them.
2021-12-11 15:56:41 +0100 <kuribas> Not because haskell is inherently bad for UI programming.
2021-12-11 15:57:02 +0100 <kuribas> I tried a bit UI programming with FRP and reactive banana, and I found it did simplify a lot.
2021-12-11 15:57:22 +0100 <kuribas> Better than a global event loop and lots of mutable state.
2021-12-11 15:58:11 +0100Jing(~hedgehog@2604:a840:3::1001) (Remote host closed the connection)
2021-12-11 15:58:46 +0100Jing(~hedgehog@125.106.89.1)
2021-12-11 16:03:26 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2021-12-11 16:03:53 +0100LambdaDuck(~anka@ksit.fixme.fi) (Ping timeout: 268 seconds)
2021-12-11 16:05:24 +0100_ht_(~quassel@37.120.218.158) (Ping timeout: 256 seconds)
2021-12-11 16:05:34 +0100lavaman(~lavaman@98.38.249.169)
2021-12-11 16:05:42 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-12-11 16:06:04 +0100jeetelongname(~jeet@148.197.248.20)
2021-12-11 16:06:22 +0100mmhat(~mmh@55d45c6c.access.ecotel.net)
2021-12-11 16:08:51 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19)
2021-12-11 16:10:02 +0100LambdaDuck(~anka@ksit.fixme.fi)
2021-12-11 16:10:39 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-12-11 16:11:20 +0100earendel(uid498179@user/earendel) (Quit: Connection closed for inactivity)
2021-12-11 16:13:18 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp) (Remote host closed the connection)
2021-12-11 16:13:36 +0100tcard(~tcard@p2878075-ipngn18701hodogaya.kanagawa.ocn.ne.jp)
2021-12-11 16:15:41 +0100__monty__(~toonn@user/toonn)
2021-12-11 16:21:53 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 16:25:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-11 16:25:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-11 16:25:05 +0100wroathe(~wroathe@user/wroathe)
2021-12-11 16:26:22 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds)
2021-12-11 16:32:06 +0100CiaoSen(~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-12-11 16:33:45 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-12-11 16:36:41 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-12-11 16:46:18 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2021-12-11 16:49:09 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-12-11 16:50:57 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 16:54:13 +0100 <tdammers> the haskell gui story is kind of a perfect storm
2021-12-11 16:54:56 +0100 <tdammers> one part is that the user base isn't overly dependent on gui's; most haskellers work on a) academic projects, b) web stuff, c) crypto stuff, d) compilers; neither of those need a gui
2021-12-11 16:55:26 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 260 seconds)
2021-12-11 16:55:32 +0100 <tdammers> another part is that we like sound abstractions and morally correct solutions; but the world hasn't quite figured out what the correct way of doing gui's is
2021-12-11 16:56:21 +0100 <tdammers> frp looks promising, but it's absolutely not there yet, as far as maturity and ergonomics go. OOP is what most of the rest of the world uses, but OOP is a bit of a red flag for a lot of haskellers. so then what?
2021-12-11 16:57:03 +0100 <tdammers> other languages just shrug, and implement a paradigm that is known to be mildly wrong, but you can make it good enough and just carry on about your day
2021-12-11 16:57:22 +0100 <perro> "wrong"
2021-12-11 16:58:21 +0100 <tdammers> "wrong" meaning that the actual semantics of the code don't match the "morally correct" semantics of the intended UI
2021-12-11 16:58:33 +0100 <tdammers> forcing the programmer to "fake it"
2021-12-11 16:58:38 +0100 <perro> reactish stuff gets pretty close
2021-12-11 16:58:43 +0100 <perro> can*
2021-12-11 16:58:49 +0100 <tdammers> yes. sometimes.
2021-12-11 16:58:57 +0100 <aplainzetakind> Is there a way to Proxy higher kinded types?
2021-12-11 16:59:05 +0100 <tdammers> but reactive stuff makes things like creating widgets dynamically awkward
2021-12-11 16:59:36 +0100 <tdammers> or keeping effects local to a single component, without bleeding knowledge of the effect out of the component
2021-12-11 17:00:11 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19) (Quit: gone to sleep. ZZZzzz…)
2021-12-11 17:02:27 +0100timCF(~timCF@m91-129-100-224.cust.tele2.ee) (Ping timeout: 268 seconds)
2021-12-11 17:04:09 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19)
2021-12-11 17:04:29 +0100shriekingnoise(~shrieking@186.137.144.80)
2021-12-11 17:05:45 +0100Feuermagier(~Feuermagi@user/feuermagier) (Remote host closed the connection)
2021-12-11 17:06:02 +0100Feuermagier(~Feuermagi@user/feuermagier)
2021-12-11 17:06:19 +0100fr33domlover(~fr33@2.55.25.254)
2021-12-11 17:09:05 +0100harveypwca(~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
2021-12-11 17:11:36 +0100 <EvanR> for any given concrete UI, you might be able to see some kind of pattern that could be explained post hoc with declarative methods
2021-12-11 17:12:17 +0100 <EvanR> but the concrete UIs vary wildly, I'm skeptical there's a silver bullet
2021-12-11 17:13:15 +0100 <EvanR> toolkits basically encourage you to be able to do anything
2021-12-11 17:14:02 +0100LambdaDuck(~anka@ksit.fixme.fi) (Ping timeout: 240 seconds)
2021-12-11 17:14:44 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2021-12-11 17:16:33 +0100 <EvanR> and what toolkits work with is some oddball reflection of human interaction forged over the decades, rather than a nice mathematical phenomenon
2021-12-11 17:17:08 +0100 <EvanR> and give you the tools to say screw that, I'm doing something else
2021-12-11 17:17:47 +0100 <kuribas> Isn't what the toolkit provides, and how you do event processing, orthogonal?
2021-12-11 17:18:02 +0100 <EvanR> web is good in that respect, designers we able to evolve a bit
2021-12-11 17:18:26 +0100 <kuribas> Just because most toolkits use an event loop, doesn't mean it's the only way of getting those features?
2021-12-11 17:18:48 +0100 <EvanR> event delegation has a lot of built in strategies that can override
2021-12-11 17:18:57 +0100 <EvanR> that you can override
2021-12-11 17:19:06 +0100ggVGc(~ggVGc@a.lowtech.earth) (Ping timeout: 268 seconds)
2021-12-11 17:19:34 +0100ggVGc(~ggVGc@a.lowtech.earth)
2021-12-11 17:20:02 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 240 seconds)
2021-12-11 17:21:10 +0100LambdaDuck(~anka@ksit.fixme.fi)
2021-12-11 17:21:46 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-11 17:22:06 +0100mc47(~mc47@xmonad/TheMC47)
2021-12-11 17:23:31 +0100 <kuribas> you mean triggering events?
2021-12-11 17:23:50 +0100 <kuribas> I am sure you could model event delegation with FRP.
2021-12-11 17:24:22 +0100jeetelongname(~jeet@148.197.248.20) (Remote host closed the connection)
2021-12-11 17:25:44 +0100cosimone(~user@93-47-231-91.ip115.fastwebnet.it) (Remote host closed the connection)
2021-12-11 17:26:42 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2021-12-11 17:28:07 +0100 <EvanR> not sure why we are on the subject of event processing xD
2021-12-11 17:29:37 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2021-12-11 17:31:22 +0100 <EvanR> is the idea that any UI is just a pile of event processing
2021-12-11 17:31:57 +0100 <EvanR> works for javascript I guess
2021-12-11 17:36:09 +0100x_kuru(~xkuru@user/xkuru)
2021-12-11 17:37:45 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
2021-12-11 17:38:22 +0100xkuru(~xkuru@user/xkuru) (Ping timeout: 260 seconds)
2021-12-11 17:43:26 +0100mikoto-chan(~mikoto-ch@esm-84-240-99-143.netplaza.fi)
2021-12-11 17:44:12 +0100aeka(~hiruji@user/hiruji) (Quit: ZNC 1.8.2 - https://znc.in)
2021-12-11 17:44:15 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2021-12-11 17:45:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-11 17:45:31 +0100aeka(~aeka@2606:6080:1002:9:ffc4:b9c1:20ad:82f9)
2021-12-11 17:57:26 +0100spoofer(~spoofer@64.185.111.205) (Remote host closed the connection)
2021-12-11 17:58:48 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19) (Quit: gone to sleep. ZZZzzz…)
2021-12-11 18:02:00 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19)
2021-12-11 18:04:27 +0100dcoutts(~duncan@71.78.6.51.dyn.plus.net)
2021-12-11 18:07:15 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Quit: Lost terminal)
2021-12-11 18:07:46 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 260 seconds)
2021-12-11 18:10:14 +0100jeetelongname(~jeet@148.197.248.20)
2021-12-11 18:11:17 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
2021-12-11 18:11:58 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2021-12-11 18:14:30 +0100Jing(~hedgehog@125.106.89.1) (Read error: Connection reset by peer)
2021-12-11 18:15:10 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2021-12-11 18:15:24 +0100Guest75(~Guest75@c-73-51-111-196.hsd1.il.comcast.net)
2021-12-11 18:17:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
2021-12-11 18:18:38 +0100pfurla(~pfurla@2804:14d:5c81:4104:654d:199b:4253:3c19) (Quit: gone to sleep. ZZZzzz…)
2021-12-11 18:20:18 +0100Jing(~hedgehog@2604:a840:3::1001)
2021-12-11 18:20:36 +0100cosimone(~user@93-47-231-91.ip115.fastwebnet.it)
2021-12-11 18:21:16 +0100_xor(~xor@dsl-50-5-233-169.fuse.net) (Read error: Connection reset by peer)
2021-12-11 18:21:35 +0100earendel(uid498179@user/earendel)
2021-12-11 18:29:20 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Ping timeout: 256 seconds)
2021-12-11 18:30:32 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2021-12-11 18:32:14 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2021-12-11 18:34:41 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 250 seconds)
2021-12-11 18:41:12 +0100kuribas(~user@ptr-25vy0i8mmtix9f62pzs.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-12-11 18:46:12 +0100DNH(~DNH@2a02:8108:1100:16d8:11c1:36c3:fe48:2c6f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-12-11 18:46:55 +0100machinedgod(~machinedg@24.105.81.50)
2021-12-11 18:52:49 +0100zaquest(~notzaques@5.130.79.72)
2021-12-11 18:55:22 +0100Guest75(~Guest75@c-73-51-111-196.hsd1.il.comcast.net) (Quit: Client closed)
2021-12-11 18:55:54 +0100mbuf(~Shakthi@122.178.201.137) (Quit: Leaving)
2021-12-11 18:56:27 +0100johnjay(~pi@154.6.152.74) (Ping timeout: 256 seconds)
2021-12-11 18:57:20 +0100johnjay(~pi@154.6.152.74)
2021-12-11 18:58:13 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2021-12-11 18:58:58 +0100cheater(~Username@user/cheater) (Ping timeout: 265 seconds)
2021-12-11 18:59:22 +0100DNH(~DNH@2a02:8108:1100:16d8:11c1:36c3:fe48:2c6f)
2021-12-11 19:02:46 +0100zincy_(~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 256 seconds)
2021-12-11 19:05:38 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788) (Ping timeout: 260 seconds)
2021-12-11 19:07:26 +0100jakalx(~jakalx@base.jakalx.net) ()
2021-12-11 19:11:47 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-11 19:14:33 +0100cheater(~Username@user/cheater)
2021-12-11 19:14:36 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-11 19:15:24 +0100werneta(~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
2021-12-11 19:18:02 +0100DNH(~DNH@2a02:8108:1100:16d8:11c1:36c3:fe48:2c6f) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-12-11 19:18:17 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2021-12-11 19:18:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-11 19:18:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-11 19:18:27 +0100wroathe(~wroathe@user/wroathe)
2021-12-11 19:20:19 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:3170:52ba:4037:d1)
2021-12-11 19:24:34 +0100_xor(~xor@dsl-50-5-233-169.fuse.net)
2021-12-11 19:25:21 +0100vicfred(~vicfred@user/vicfred)
2021-12-11 19:25:23 +0100sluigi(~sluigi@18.31.14.245)
2021-12-11 19:29:41 +0100 <awpr> timCF "there is an instance for each constructor of T" is different from "GHC can find the right instance for a call site with universally quantified T" -- in that case the right instance changes per callsite, and GHC cannot pick one without it being passed in as a constraint
2021-12-11 19:30:47 +0100DNH(~DNH@2a02:8108:1100:16d8:11c1:36c3:fe48:2c6f)
2021-12-11 19:30:56 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-11 19:31:08 +0100 <awpr> it could also be a stuck type family like `Any`, in which case there actually isn't an instance
2021-12-11 19:34:32 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
2021-12-11 19:34:53 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-12-11 19:35:46 +0100neurocyte0132889(~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
2021-12-11 19:36:33 +0100econo(uid147250@user/econo)
2021-12-11 19:37:54 +0100johnjay(~pi@154.6.152.74) (Ping timeout: 256 seconds)
2021-12-11 19:38:23 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-12-11 19:38:57 +0100neurocyte0132889(~neurocyte@45.14.190.29)
2021-12-11 19:38:57 +0100neurocyte0132889(~neurocyte@45.14.190.29) (Changing host)
2021-12-11 19:38:57 +0100neurocyte0132889(~neurocyte@user/neurocyte)
2021-12-11 19:39:09 +0100johnjay(~pi@154.6.152.74)
2021-12-11 19:42:01 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-11 19:44:30 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 19:48:10 +0100 <glguy> Is there a common name for a function: Ord a => [a] -> Map a Int whose behavior is to count the number of occurences of the elements in a list? Maybe somethin to do with cardinalities, frequencies, etc?
2021-12-11 19:48:57 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-12-11 19:49:33 +0100 <geekosaur> histogram?
2021-12-11 19:50:48 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-11 19:51:21 +0100 <glguy> that takes me to "In statistics, a frequency distribution is a list, table (i.e.: frequency table) or graph (i.e.: bar plot or histogram) that displays the frequency of various outcomes in a sample."
2021-12-11 19:52:00 +0100 <glguy> so maybe "frequency distribution" is closer to what I want with histogram being a particular rendering of that thing
2021-12-11 19:52:42 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-11 19:53:53 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 19:56:02 +0100 <sluigi> why is the concept of a functor so different in haskell compared to ocaml?
2021-12-11 19:56:41 +0100 <dsal> glguy: multiset seems to exist for that.
2021-12-11 19:57:43 +0100 <glguy> dsal: oh yeah, instead of figuring out the verb for the action of constructing a frequency table, I could focus on the name of the frequency table representation
2021-12-11 19:58:50 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-12-11 20:00:10 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2021-12-11 20:01:18 +0100max22-(~maxime@2a01cb0883359800fed7895ae16757a7.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
2021-12-11 20:02:39 +0100 <geekosaur> sluigi, different languages seem to take their definition of "functor" from different places. Haskell uses one from mathematics, specifically category theory (although it cuts the name down, properly it should be "Endofunctor")
2021-12-11 20:02:47 +0100 <awpr> sluigi: they're kind of just unrelated things that happen to use the same name (along the same lines, C++ jargon uses "functor" to mean a callable object). is that a satisfying answer to "why", or are you hoping for a deeper reason about why ML functors are called that? (I don't have a good answer for that)
2021-12-11 20:03:02 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788)
2021-12-11 20:03:13 +0100 <geekosaur> nor do I
2021-12-11 20:03:20 +0100 <sluigi> i guess i just don't understand how the two functors are related
2021-12-11 20:03:28 +0100 <sluigi> and would like to
2021-12-11 20:03:43 +0100 <awpr> my understanding is that they're not related in any meaningful way
2021-12-11 20:03:54 +0100 <geekosaur> I'm not sure they are
2021-12-11 20:04:23 +0100 <geekosaur> there may be some very abstract sense based on ML functors being "higher order modules" in some sense
2021-12-11 20:04:23 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-11 20:05:31 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788) (Remote host closed the connection)
2021-12-11 20:06:29 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788)
2021-12-11 20:06:35 +0100 <awpr> like, to guess at the etymology of the C++ situation, if you take "access" and objectify it, you get "accessor", so if you take "function" and objectify it, you get "functor". in that case, the same word seems to have come about from completely unrelated origins. it could be that the ML situation is similar, or that someone chose the category theory "functor" based on some distant metaphor
2021-12-11 20:06:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-11 20:06:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-11 20:06:42 +0100wroathe(~wroathe@user/wroathe)
2021-12-11 20:07:07 +0100 <dsal> sluigi: lots of languages call things functions that I wouldn't consider a function.
2021-12-11 20:07:17 +0100lavaman(~lavaman@98.38.249.169)
2021-12-11 20:08:53 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net)
2021-12-11 20:09:13 +0100 <awpr> or ML functors could be CT functors in some way I don't know of -- functors are extremely diverse depending on the source and target categories, and the Haskell `Functor` is a very narrowly specialized case of them, so there are plenty of "functors" that look totally foreign compared to the `Functor` class
2021-12-11 20:09:42 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788) (Client Quit)
2021-12-11 20:09:43 +0100johnjay(~pi@154.6.152.74) (Ping timeout: 252 seconds)
2021-12-11 20:09:58 +0100 <EvanR> C++: callable. Haskell: mappable. ML: instancable?
2021-12-11 20:11:26 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788)
2021-12-11 20:11:32 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2021-12-11 20:11:46 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-11 20:12:06 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788) (Client Quit)
2021-12-11 20:12:32 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788)
2021-12-11 20:12:53 +0100johnjay(~pi@154.6.152.74)
2021-12-11 20:13:08 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-11 20:14:11 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788) (Client Quit)
2021-12-11 20:14:34 +0100mvk(~mvk@2607:fea8:5cdd:f000::9788)
2021-12-11 20:17:32 +0100 <EvanR> you could ask where category theory got "functor"
2021-12-11 20:17:34 +0100deadmarshal(~deadmarsh@95.38.118.223) (Ping timeout: 256 seconds)
2021-12-11 20:18:01 +0100 <glguy> Where did category theory get functor?
2021-12-11 20:22:22 +0100yhsiveht(~Nishant@49.37.177.34)
2021-12-11 20:24:45 +0100thevishy(~Nishant@2405:201:f005:c007:acb3:d7a7:c300:b2a1) (Ping timeout: 252 seconds)
2021-12-11 20:27:52 +0100dudek(~dudek@185.150.236.103)
2021-12-11 20:28:59 +0100jakalx(~jakalx@base.jakalx.net) (Error from remote client)
2021-12-11 20:29:52 +0100APic(apic@apic.name) (Quit: [TLS] Client upgrade)
2021-12-11 20:30:10 +0100APic(~apic@apic.name)
2021-12-11 20:30:54 +0100cosimone(~user@93-47-231-91.ip115.fastwebnet.it) (Remote host closed the connection)
2021-12-11 20:31:26 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 20:31:59 +0100lavaman(~lavaman@98.38.249.169)
2021-12-11 20:33:06 +0100max22-(~maxime@2a01cb08833598004fea75dc1e636bbe.ipv6.abo.wanadoo.fr)
2021-12-11 20:35:26 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-11 20:36:00 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-11 20:36:16 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 256 seconds)
2021-12-11 20:36:18 +0100cosimone(~user@93-47-231-91.ip115.fastwebnet.it)
2021-12-11 20:36:19 +0100hololeap(~hololeap@user/hololeap)
2021-12-11 20:37:30 +0100jeetelongname(~jeet@148.197.248.20) (Quit: off streaming)
2021-12-11 20:39:01 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-12-11 20:40:09 +0100sluigi(~sluigi@18.31.14.245) (Ping timeout: 256 seconds)
2021-12-11 20:40:23 +0100gehmehgeh(~user@user/gehmehgeh)
2021-12-11 20:40:49 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-11 20:42:11 +0100 <hololeap> newtype Grid x y a = Grid { getGrid :: Sized.Vector y (Sized.Vector x a) }
2021-12-11 20:42:25 +0100 <hololeap> withGrid :: forall a r. SomeGrid a -> (forall x y. (KnownNat x, KnownNat y) => Grid x y a -> r) -> Maybe r
2021-12-11 20:42:28 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 20:42:36 +0100 <hololeap> this is hard
2021-12-11 20:42:43 +0100 <glguy> hololeap: for 2-d arrays I like using Array
2021-12-11 20:42:57 +0100 <glguy> but I guess you're doing something typefancy here
2021-12-11 20:43:15 +0100 <hololeap> yeah, I'm playing around with it
2021-12-11 20:43:30 +0100 <awpr> hmm, why Maybe? can something in there fail?
2021-12-11 20:43:51 +0100fr33domlover(~fr33@2.55.25.254) (Ping timeout: 268 seconds)
2021-12-11 20:43:54 +0100 <hololeap> awpr: yeah the rows could be of different lengths
2021-12-11 20:44:25 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-12-11 20:44:31 +0100 <awpr> oh, hmm, is SomeGrid not an existential wrapper around Grid then?
2021-12-11 20:44:38 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-11 20:44:49 +0100 <hololeap> type SomeGrid a = Vector (Vector a)
2021-12-11 20:44:54 +0100 <hololeap> (regular vectors there)
2021-12-11 20:45:02 +0100 <awpr> ok that makes perfect sense then
2021-12-11 20:45:08 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-12-11 20:45:14 +0100kjak(~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
2021-12-11 20:46:22 +0100 <hololeap> I need to branch depending on if (y :: Nat) is 0 or >=1, and I need to do it in a way that the type system can follow
2021-12-11 20:46:28 +0100 <awpr> https://hackage.haskell.org/package/orthotope is another option for shape-indexed multidimensional arrays, btw
2021-12-11 20:46:54 +0100 <awpr> oof, that's a problem that's way harder than it sounds like it should be
2021-12-11 20:47:32 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 268 seconds)
2021-12-11 20:48:06 +0100 <hololeap> you could be right. my thinking was that if y is 0, then you just pass that rank-2 function (Grid 0 0 a)
2021-12-11 20:48:52 +0100 <hololeap> but if it has at least one row, then you need to start working with x, and you need to check every subsequent row to make sure they are the correct size
2021-12-11 20:49:42 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 260 seconds)
2021-12-11 20:49:54 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2021-12-11 20:50:03 +0100 <hololeap> I'm also trying to build it using: withSized :: forall a r. Vector a -> (forall n. KnownNat n => Sized.Vector n a -> r) -> r
2021-12-11 20:50:25 +0100 <hololeap> (from Data.Vector.Sized)
2021-12-11 20:51:28 +0100 <awpr> hmm, so it'd need to know that it's equal to 0 in order to "cast" it to the desired type and/or use an empty vector; and it'd need to know that it's >= 1 in order to access the 0th element to find the candidate inner vector length
2021-12-11 20:51:44 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-12-11 20:52:07 +0100 <hololeap> right. I suppose I could turn Grid into a GADT with an constructor for y==0 and y>=1
2021-12-11 20:52:07 +0100 <awpr> actually you're free to pass a 0-length vector regardless of the input length, so that one shouldn't be an issue
2021-12-11 20:52:27 +0100 <hololeap> *two constructors
2021-12-11 20:53:27 +0100 <monochrom> Ah I missed the functor discussion. I would take it one step further "where did math get 'function'?".
2021-12-11 20:54:56 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-11 20:57:01 +0100 <EvanR> \o/
2021-12-11 20:57:31 +0100phma(phma@2001:5b0:210f:6be8:16f7:aafd:70ba:5696) (Read error: Connection reset by peer)
2021-12-11 20:57:53 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 250 seconds)
2021-12-11 20:58:29 +0100 <awpr> how about something like `let mn = foldMap (First . Just . Vector.length) outerVec in case mn of Nothing -> k Sized.empty; Just n -> k <$> traverse (Sized.toSized n) outerVec`?
2021-12-11 20:58:36 +0100abrantesasf(~abrantesa@187.36.170.211)
2021-12-11 20:58:45 +0100jakalx(~jakalx@base.jakalx.net)
2021-12-11 20:59:22 +0100 <awpr> (the main point being to use Foldable to Maybe find the inner length and then Traversable to check they're all the same)
2021-12-11 21:00:01 +0100 <awpr> er, it'll need lifting with TypeNats functions + TypeApplications
2021-12-11 21:03:18 +0100phma(~phma@host-67-44-209-24.hnremote.net)
2021-12-11 21:05:03 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 250 seconds)
2021-12-11 21:05:50 +0100Guest81(~Guest81@2a01cb0589202e00edc070a9acc1d4bb.ipv6.abo.wanadoo.fr)
2021-12-11 21:06:34 +0100 <Guest81> hello. could someone coup explain to me why in haskell when you do 3.1 + 0.1 it returns 3.3000000000000003 ?
2021-12-11 21:06:43 +0100 <Guest81> this is pretty disturbing.
2021-12-11 21:07:02 +0100juhp(~juhp@128.106.188.82)
2021-12-11 21:07:59 +0100 <glguy> Guest81: this is the nature of IEE floating point numbers
2021-12-11 21:08:02 +0100 <monochrom> It is floating point. It happens in all languages. Some languages show fewer digits by default, e.g., C.
2021-12-11 21:08:15 +0100 <glguy> IEEE754*
2021-12-11 21:08:29 +0100 <hololeap> it's because floating point numbers have limited precision due to how their modeled
2021-12-11 21:08:36 +0100 <monochrom> In C if you printf("%.18f") you will see the same disturbing thing again.
2021-12-11 21:08:57 +0100 <monochrom> Also I forgot to say that it is floating point and binary.
2021-12-11 21:09:30 +0100 <glguy> In floating point, 3.1 is represented as the fraction:
2021-12-11 21:09:30 +0100 <glguy> > 6980579422424269 * 2^^(-51) :: Rational
2021-12-11 21:09:32 +0100 <lambdabot> 6980579422424269 % 2251799813685248
2021-12-11 21:09:44 +0100 <glguy> which is pretty close to 3.1 if you divide it out, but not quite
2021-12-11 21:09:47 +0100Sgeo(~Sgeo@user/sgeo)
2021-12-11 21:10:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-11 21:10:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-11 21:10:13 +0100wroathe(~wroathe@user/wroathe)
2021-12-11 21:10:20 +0100 <monochrom> https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
2021-12-11 21:11:32 +0100 <monochrom> Also, Knuth proved that if you are to suffer truncation errors anyway, binary is the least worst.
2021-12-11 21:12:59 +0100 <int-e> Guest81: I don't think your example is correct... floating point is not *that* imprecise.
2021-12-11 21:13:20 +0100 <monochrom> Heh
2021-12-11 21:13:21 +0100 <int-e> > 3.1 + 0.2
2021-12-11 21:13:22 +0100 <lambdabot> 3.3000000000000003
2021-12-11 21:13:49 +0100 <Guest81> int-e you can try it by youself in ghci, 3,2 + 0.1
2021-12-11 21:13:49 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-11 21:14:00 +0100 <monochrom> You said 3.1+0.1
2021-12-11 21:14:11 +0100 <Guest81> y it was a mistake
2021-12-11 21:14:23 +0100 <Guest81> it was 3.2 + 0.1
2021-12-11 21:14:40 +0100 <Guest81> that is pretty interesting btw, thanks for the answers
2021-12-11 21:15:46 +0100 <hololeap> % fromRational $ (32 % 10) + (1 % 10)
2021-12-11 21:15:46 +0100 <yahb> hololeap: 3.3
2021-12-11 21:15:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-11 21:16:55 +0100 <hololeap> if you know how to represent your numbers as fractions, then that's the way to go
2021-12-11 21:19:59 +0100paddymahoney(~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 265 seconds)
2021-12-11 21:19:59 +0100Jing(~hedgehog@2604:a840:3::1001) (Remote host closed the connection)
2021-12-11 21:20:37 +0100 <Guest81> so that's how you do when you need precise calculations ?  writing  int divisions instead of floats ?
2021-12-11 21:21:43 +0100deadmarshal(~deadmarsh@95.38.118.223)
2021-12-11 21:22:44 +0100 <hololeap> it's not int divisions, you can get arbitrary precision because it's modeled differently
2021-12-11 21:23:31 +0100 <hololeap> it's modeled as fractions of Integers, which have arbitrary precision, as opposed to Float which is limited to a fixed number of bits for its representation
2021-12-11 21:24:22 +0100Jing(~hedgehog@2604:a840:3::1001)
2021-12-11 21:25:10 +0100 <hololeap> and then you can convert it back to Float or whatever at the end of your calculation you won't have compounding rounding errors
2021-12-11 21:25:33 +0100Erutuon(~Erutuon@user/erutuon)
2021-12-11 21:26:03 +0100deadmarshal(~deadmarsh@95.38.118.223) (Ping timeout: 250 seconds)
2021-12-11 21:26:55 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2021-12-11 21:30:15 +0100 <Guest81> hololeap ok i got it, i managed to fix my code thanks to your explanations
2021-12-11 21:31:27 +0100 <hololeap> :)
2021-12-11 21:31:36 +0100 <awpr> note you do get the compounding behavior showing up in a different way: the size of the representation. the more operations you pile up into a Rational, the more likely it is to have a massive denominator and correspondingly larger numerator. that shows up in memory usage as well as in computational cost
2021-12-11 21:32:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-11 21:32:12 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-11 21:32:12 +0100wroathe(~wroathe@user/wroathe)
2021-12-11 21:32:31 +0100 <awpr> if you do need arbitrary precision, Rational is indeed the thing to reach for, but it's expensive and most cases in practice are perfectly content with the precision of Double or even Float
2021-12-11 21:35:01 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
2021-12-11 21:35:09 +0100 <awpr> if this is just about aesthetically not liking things getting printed like "3.30000000000000000001", then there should be formatting functions with rounding to avoid that
2021-12-11 21:39:26 +0100 <hololeap> % fromRational $ 4074071952668972172536891376818756322102936787331872501272280898708762599526673412366793387 % 2037035976334486086268445688409378161051468393665936250636140449354381299763336706183397223
2021-12-11 21:39:26 +0100 <yahb> hololeap: 2.0
2021-12-11 21:39:29 +0100tomku(~tomku@user/tomku) (Ping timeout: 250 seconds)
2021-12-11 21:40:42 +0100 <int-e> > showGFloat (Just 3) (3.2 + 0.1) ""
2021-12-11 21:40:43 +0100 <lambdabot> "3.300"
2021-12-11 21:46:23 +0100tomku(~tomku@user/tomku)
2021-12-11 21:47:58 +0100 <EvanR> Guest81, rationals and floats were discussed. Also note there are decimal types that can be useful for e.g. money
2021-12-11 21:48:14 +0100 <EvanR> > 3.1 + 0.1 :: Pico
2021-12-11 21:48:16 +0100 <lambdabot> 3.200000000000
2021-12-11 21:48:30 +0100 <EvanR> > 3.1 + 0.1 :: Centi
2021-12-11 21:48:32 +0100 <lambdabot> 3.20
2021-12-11 21:48:43 +0100yhsiveht(~Nishant@49.37.177.34) (Quit: Leaving)
2021-12-11 21:49:42 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net) (Quit: Leaving)
2021-12-11 21:49:57 +0100 <EvanR> > let x = 10 / 3 in (10 - x) + x :: Pico
2021-12-11 21:49:58 +0100 <lambdabot> 10.000000000000
2021-12-11 21:50:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
2021-12-11 21:51:18 +0100 <int-e> > let x = 10 / 3 in 3*x :: Pico
2021-12-11 21:51:19 +0100 <lambdabot> 9.999999999999
2021-12-11 21:51:47 +0100 <EvanR> careful when dividing by 3
2021-12-11 21:53:00 +0100 <int-e> > let x = 10 / 7 in 7*x :: Pico
2021-12-11 21:53:01 +0100 <lambdabot> 9.999999999997
2021-12-11 21:53:13 +0100 <int-e> EvanR: I heeded your advice and see where it got me
2021-12-11 21:53:22 +0100 <EvanR> careful when dividing by 7
2021-12-11 21:53:31 +0100 <geekosaur> careful with repeating fractions
2021-12-11 21:53:57 +0100 <int-e> now if we worked in base 60 we wouldn't have trouble with dividing by 3
2021-12-11 21:54:01 +0100 <int-e> why did we stop :P
2021-12-11 21:54:08 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-11 21:54:12 +0100 <int-e> (or refuse to learn from the Babylonians)
2021-12-11 21:54:27 +0100 <EvanR> 60 sucks... you can't even divide by 7
2021-12-11 21:54:45 +0100 <EvanR> clearly we need 420
2021-12-11 21:54:48 +0100ephemient(uid407513@id-407513.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2021-12-11 21:54:48 +0100 <awpr> hmm, base 60 even has less waste than base 10 when clustered into digits
2021-12-11 21:55:08 +0100 <awpr> (60/64 used values in 6 bits vs. 10/16 used values in 4 bits)
2021-12-11 21:55:13 +0100 <glguy> Why stop at 60, work in base product[1..100] and it'll be divisible by most of the numbers you'll need on a daily basis
2021-12-11 21:55:18 +0100 <int-e> > foldl1 lcm [1..100] -- let's cover a bit more
2021-12-11 21:55:19 +0100 <lambdabot> 69720375229712477164533808935312303556800
2021-12-11 21:55:39 +0100 <EvanR> there's some number like that used in video conversion
2021-12-11 21:56:02 +0100 <int-e> (okay that has duplicate prime factors)
2021-12-11 21:56:31 +0100 <int-e> 2305567963945518424753102147331756070 would be enough
2021-12-11 22:01:38 +0100curiousgay(~curiousga@77-120-141-90.kha.volia.net)
2021-12-11 22:01:52 +0100BrokenClutch(~pioneer@2804:d41:c2b2:be00:da32:623d:efa3:7121)
2021-12-11 22:02:46 +0100smartin(~Thunderbi@88.135.18.171) (Remote host closed the connection)
2021-12-11 22:02:48 +0100 <BrokenClutch> I'm almost giving up on haskell, too difficult D:
2021-12-11 22:03:04 +0100smartin(~Thunderbi@88.135.18.171)
2021-12-11 22:03:38 +0100 <BrokenClutch> I'm trying to find some book that's more theoretical, that i can understand the logic behind it
2021-12-11 22:04:13 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-12-11 22:04:29 +0100 <BrokenClutch> I already know the functions, I know what are the functions of a monad, I want to understand it, but i can't find any good source about it
2021-12-11 22:06:33 +0100 <janus> BrokenClutch: are you looking for a book recommendation?
2021-12-11 22:07:45 +0100 <BrokenClutch> or anything like that, please
2021-12-11 22:08:20 +0100Unhammer(~Unhammer@user/unhammer) (Ping timeout: 252 seconds)
2021-12-11 22:08:21 +0100 <BrokenClutch> I've was trying to read Haskell in Depth, pretty cool but too repetitive and sparse
2021-12-11 22:09:05 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2021-12-11 22:09:13 +0100 <BrokenClutch> I would be really happy if someone gave me some recommendations on more dense books.
2021-12-11 22:10:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-12-11 22:10:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
2021-12-11 22:10:33 +0100wroathe(~wroathe@user/wroathe)
2021-12-11 22:11:10 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
2021-12-11 22:11:31 +0100 <EvanR> focusing on monads might be barking up the wrong tree, if you're trying to get into haskell generally
2021-12-11 22:11:32 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-12-11 22:11:49 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Client Quit)
2021-12-11 22:12:46 +0100 <EvanR> don't think that in haskell, "everything's a monad" or something xD
2021-12-11 22:13:47 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
2021-12-11 22:15:06 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 268 seconds)
2021-12-11 22:15:38 +0100 <janus> BrokenClutch: the haskell report is very dense: https://www.haskell.org/onlinereport/haskell2010/
2021-12-11 22:16:55 +0100jinsun(~quassel@user/jinsun) (Read error: Connection reset by peer)
2021-12-11 22:17:10 +0100jinsun(~quassel@user/jinsun)
2021-12-11 22:21:02 +0100 <monochrom> "more books" is also a wrong tree to bark up.
2021-12-11 22:21:49 +0100Unhammer(~Unhammer@user/unhammer)
2021-12-11 22:22:15 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-12-11 22:22:37 +0100 <BrokenClutch> I want to understand why StateT exists, things like that
2021-12-11 22:22:55 +0100 <BrokenClutch> it's like I have to follow some strict line to learn the language
2021-12-11 22:23:24 +0100 <BrokenClutch> The documentation is shallow
2021-12-11 22:24:36 +0100son0p(~ff@2800:484:1d81:b700::4)
2021-12-11 22:25:33 +0100 <EvanR> probably some examples where a basic state pattern could help would be good
2021-12-11 22:26:45 +0100 <dsal> Haskell is super easy related to most languages I've worked in.
2021-12-11 22:27:03 +0100 <EvanR> i.e. want to solve an isolated problem, temporarily do a stateful algorithm to get the answer and final state
2021-12-11 22:27:08 +0100 <dsal> Except I am currently struggling with some existentials. I think I realized I can just do something a little different, though.
2021-12-11 22:27:31 +0100 <BrokenClutch> They help me understand where I need to apply them, but I still don't know what they are.
2021-12-11 22:27:32 +0100 <BrokenClutch> I can't just try to understand their type, it's like everything is ofuscated
2021-12-11 22:27:55 +0100 <BrokenClutch> obfuscated*
2021-12-11 22:28:02 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
2021-12-11 22:28:10 +0100 <EvanR> State a is just a glorified function of type s -> (a,s)
2021-12-11 22:28:57 +0100 <EvanR> that's "what that is"
2021-12-11 22:29:00 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Ping timeout: 276 seconds)
2021-12-11 22:29:00 +0100azimut(~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
2021-12-11 22:29:25 +0100 <BrokenClutch> But i can't understand their definition, like, the things inside
2021-12-11 22:29:41 +0100 <Rembane> BrokenClutch: Do you have some more concrete examples?
2021-12-11 22:29:42 +0100 <BrokenClutch> I've learned a lot of languages, but i have too much difficult with haskell
2021-12-11 22:29:44 +0100 <EvanR> implementation of transformers library is... probably not too illuminating
2021-12-11 22:30:18 +0100chexum(~quassel@gateway/tor-sasl/chexum) (Ping timeout: 276 seconds)
2021-12-11 22:30:18 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Ping timeout: 276 seconds)
2021-12-11 22:30:57 +0100hololeap(~hololeap@user/hololeap) (Ping timeout: 276 seconds)
2021-12-11 22:30:57 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 276 seconds)
2021-12-11 22:30:57 +0100jpds(~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
2021-12-11 22:30:57 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 276 seconds)
2021-12-11 22:31:38 +0100 <BrokenClutch> Rembane: Any monad transformer and how it relates to some already defined types
2021-12-11 22:31:52 +0100 <BrokenClutch> StateT is an example of it
2021-12-11 22:32:07 +0100 <EvanR> try ReaderT
2021-12-11 22:33:04 +0100 <BrokenClutch> I think i will continue to bang my head against this wall, because I'm really confused, almost 2 weeks and i can't write a simple program
2021-12-11 22:33:25 +0100 <EvanR> @unmtl ReaderT r m a
2021-12-11 22:33:25 +0100 <lambdabot> r -> m a
2021-12-11 22:33:46 +0100namkeleser(~namkelese@101.179.128.103)
2021-12-11 22:33:47 +0100 <EvanR> it's simpler and probably more useful honestly than StateT xD
2021-12-11 22:33:49 +0100johnjay(~pi@154.6.152.74) (Ping timeout: 252 seconds)
2021-12-11 22:33:56 +0100 <geekosaur> I feel like trying to understand StateT to write a simple program is doing something wrong somewhere
2021-12-11 22:34:01 +0100 <Rembane> BrokenClutch: You can use equational reasoning to see how StateT or ReaderT works under the hood.
2021-12-11 22:34:09 +0100Rembaneagrees with geekosaur
2021-12-11 22:34:32 +0100johnjay(~pi@154.6.152.74)
2021-12-11 22:34:40 +0100 <dsal> BrokenClutch: It's a bit hard to understand if you start reading near the end of the story. haskellbook.com works you through it from the beginning.
2021-12-11 22:35:51 +0100 <glguy> BrokenClutch: you don't really need to use any monad transformers to write Haskell. It's completely optional and not a "best practice" that you need to figure out and rely on. It's certainly useful to know how they work, but it's not required
2021-12-11 22:35:56 +0100 <BrokenClutch> dsal: Those books are very boring and they never go deep enough
2021-12-11 22:36:00 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-11 22:36:29 +0100 <BrokenClutch> glguy: But that's the fun part
2021-12-11 22:37:37 +0100pfurla(~pfurla@2804:18:5857:ae14:19d8:3b1a:26c3:84d4)
2021-12-11 22:38:20 +0100 <glguy> yeah, learning stuff is fun, I just wanted to be clear you don't need to know that before you can productively write Haskell
2021-12-11 22:38:32 +0100 <dsal> BrokenClutch: you read it and didn't think it was deep enough? It explained the things you're claiming to not understand to me pretty clearly.
2021-12-11 22:38:41 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)
2021-12-11 22:39:39 +0100 <BrokenClutch> dsal: Takes to much time, it's boring. But it's a good book for a more linear reading
2021-12-11 22:40:25 +0100 <dsal> It takes way longer to just guess and be frustrated about things you don't fully understand.
2021-12-11 22:40:32 +0100 <BrokenClutch> I would like something more dense, something more focused on definitions with a couple examples. I don't want anything holding my hand, this stuff makes me anxious
2021-12-11 22:41:33 +0100pfurla_(~pfurla@185.81.138.21)
2021-12-11 22:41:52 +0100jpds(~jpds@gateway/tor-sasl/jpds)
2021-12-11 22:41:52 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2021-12-11 22:41:53 +0100chexum(~quassel@gateway/tor-sasl/chexum)
2021-12-11 22:41:55 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-12-11 22:42:12 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2021-12-11 22:42:32 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2021-12-11 22:42:34 +0100azimut(~azimut@gateway/tor-sasl/azimut)
2021-12-11 22:42:36 +0100hololeap(~hololeap@user/hololeap)
2021-12-11 22:44:43 +0100pfurla(~pfurla@2804:18:5857:ae14:19d8:3b1a:26c3:84d4) (Ping timeout: 268 seconds)
2021-12-11 22:45:13 +0100 <BrokenClutch> Oh, i have a good example. The think with kinds, most books don't talk about this stuff on the beginning.
2021-12-11 22:45:14 +0100 <BrokenClutch> In math we take a little look on fields, sets and rings before calculus to explain what we are mapping, for then analyze it
2021-12-11 22:46:19 +0100 <geekosaur> kinds barely exist in standard Haskell
2021-12-11 22:48:22 +0100 <BrokenClutch> I'm starting to think that I've approached haskell wrongly
2021-12-11 22:48:38 +0100 <geekosaur> it kinda sounds like it, yes
2021-12-11 22:49:22 +0100 <geekosaur> also that you may be trying to jump into the deep end without learning to swim in the shallow end first? (kinds are generally fairly advanced Haskell)
2021-12-11 22:50:26 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
2021-12-11 22:51:27 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk)
2021-12-11 22:51:30 +0100pfurla_(~pfurla@185.81.138.21) (Ping timeout: 268 seconds)
2021-12-11 22:52:09 +0100 <monochrom> "best practice" is such a red herring, especially for learning.
2021-12-11 22:52:25 +0100 <BrokenClutch> It's hard for me to learn something from top to bottom
2021-12-11 22:52:45 +0100 <BrokenClutch> I like to link everything together as fast as possible
2021-12-11 22:53:00 +0100 <monochrom> In day-to-day going-to-the-grocery, "best practice" is driving a car to get there.
2021-12-11 22:53:01 +0100 <dsal> It's hard for everyone to start from the top without understanding what stuff is built on.
2021-12-11 22:53:11 +0100 <BrokenClutch> I've learned most of what I know of C++ by following links on the documentations
2021-12-11 22:53:15 +0100 <monochrom> That still doesn't mean a baby learns to drive before learning to walk.
2021-12-11 22:53:51 +0100 <BrokenClutch> But they can know what the car is supposed to do
2021-12-11 22:54:52 +0100Jing(~hedgehog@2604:a840:3::1001) (Remote host closed the connection)
2021-12-11 22:56:14 +0100burnsidesLlama(~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
2021-12-11 22:57:23 +0100whatsupdoc(uid509081@id-509081.hampstead.irccloud.com)
2021-12-11 22:59:03 +0100Jing(~hedgehog@2604:a840:3::1001)
2021-12-11 23:02:00 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net)
2021-12-11 23:06:02 +0100 <dsal> Knowing what the car is supposed to do is easy. Haskell is a programming language. You can write programs with it. I wouldn't expect a baby to diagnose the broken clutch, though.
2021-12-11 23:06:05 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2021-12-11 23:06:27 +0100fizbin(~fizbin@c-73-33-197-160.hsd1.nj.comcast.net) (Ping timeout: 252 seconds)
2021-12-11 23:06:28 +0100ChaiTRex(~ChaiTRex@user/chaitrex)
2021-12-11 23:07:54 +0100 <glguy> metaphors are like a side quest
2021-12-11 23:08:29 +0100 <BrokenClutch> my 3yrld can only ride horses
2021-12-11 23:09:31 +0100jgeerds(~jgeerds@55d4ac73.access.ecotel.net)
2021-12-11 23:11:47 +0100 <glguy> wakling is a good next skill
2021-12-11 23:12:41 +0100shapr(~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 252 seconds)
2021-12-11 23:13:50 +0100 <BrokenClutch> still teaching anatomy to him, after that he can walk
2021-12-11 23:14:19 +0100 <BrokenClutch> I'm seeing how dumb is my to learn stuff. Gonna insist on it, it's how i study math and other shit
2021-12-11 23:17:04 +0100 <BrokenClutch> I will probably use more of the haskell's source code (This had help me on the past) and this online doc (i liked it, thanks)
2021-12-11 23:17:04 +0100 <systemfault> This may be seen as a troll question but I'll ask anyway.... Do you believe that there are as many Haskell languages as there are combination of language extensions and that it makes the language a lot more hostile to newcomers?
2021-12-11 23:17:35 +0100 <dsal> Not *really*
2021-12-11 23:18:02 +0100 <dsal> Some extensions alter the language in meaningful ways. Some extensions just do things that you'd expect for consistency and when you write the code that needs them, you're told to fix it up.
2021-12-11 23:18:13 +0100 <glguy> systemfault: Most living langauges add new features. Haskell just tends to like to give those features names and have you explicitly turn them on
2021-12-11 23:18:58 +0100 <BrokenClutch> The most used ones aren't that bad. Most have good documentation too.
2021-12-11 23:19:53 +0100 <BrokenClutch> For me, don't forget that I'm not a good example for those stuff, the extensions aren't a problem because they are very well contained and documented
2021-12-11 23:20:24 +0100 <geekosaur> also most extensions do just that, they extend existing features
2021-12-11 23:20:37 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-12-11 23:20:52 +0100 <dsal> It'd be nice to have a rating of extensions with how surprising they are.
2021-12-11 23:22:39 +0100 <dsal> TupleSections over on the left in like "I'm surprised that's not part of the core language" and, I don't know, DeriveAnyClass or NoMonomorphismRestriction or something on the right where things behave differently.
2021-12-11 23:22:55 +0100pfurla(~pfurla@177.79.127.186)
2021-12-11 23:23:00 +0100nfd(~nfd@user/nfd)
2021-12-11 23:23:27 +0100 <geekosaur> yeh, DeriveAnyClass feels to me like "that's a weird solution to the problem"
2021-12-11 23:23:39 +0100 <BrokenClutch> where FuncDeps would be on this rating?
2021-12-11 23:23:43 +0100 <geekosaur> especially given the knock-ons that then lead to more extensions as patch-ups
2021-12-11 23:23:55 +0100 <dsal> FuncDeps are on the left.
2021-12-11 23:24:03 +0100 <BrokenClutch> dsal: good
2021-12-11 23:24:04 +0100 <dsal> I need this and I have to turn on a thing to make it work..
2021-12-11 23:24:17 +0100 <dsal> DeriveAnyClass as a strategy is nice.
2021-12-11 23:24:27 +0100 <dsal> I kind of wish I could use it in DerivingStrategies without having it be automatic.
2021-12-11 23:25:28 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:3170:52ba:4037:d1) (Remote host closed the connection)
2021-12-11 23:26:09 +0100 <monochrom> I think of GHC2021 as the beginning of a crude rating. An extension that makes it into GHC2021 is rated unsurprising.
2021-12-11 23:26:29 +0100 <systemfault> What is GHC2021?
2021-12-11 23:26:45 +0100 <dsal> a set of extensions you get with a single name
2021-12-11 23:26:53 +0100 <geekosaur> new in ghc 9.2.1
2021-12-11 23:26:56 +0100 <dsal> https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/control.html
2021-12-11 23:27:20 +0100pfurla_(~pfurla@177.79.120.224)
2021-12-11 23:27:23 +0100 <systemfault> Well, that solves my problem.
2021-12-11 23:27:41 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
2021-12-11 23:27:45 +0100 <systemfault> That gives a "scope" to the language... a set of expectations, a defined featureset
2021-12-11 23:28:03 +0100 <geekosaur> basically, since the standards process is more or less dead in the water, the ghc proposals process has taken over the helm and does its own "standardization"
2021-12-11 23:28:10 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Read error: Connection reset by peer)
2021-12-11 23:28:22 +0100pfurla(~pfurla@177.79.127.186) (Ping timeout: 260 seconds)
2021-12-11 23:29:18 +0100 <EvanR> systemfault, well we already had that with "no extensions"
2021-12-11 23:29:33 +0100 <EvanR> just that you often want 1... or 4 for some purpose
2021-12-11 23:29:40 +0100 <EvanR> in a file
2021-12-11 23:30:19 +0100 <EvanR> GHC2021 adds 40 something
2021-12-11 23:30:19 +0100 <dsal> There are a few extensions you pretty much want on any time you're writing any actual code.
2021-12-11 23:30:28 +0100 <dsal> There are lots of people who'd fight me over that as well as which ones.
2021-12-11 23:30:48 +0100 <EvanR> so far I haven't added any in AoC xD
2021-12-11 23:30:48 +0100 <geekosaur> sure. that's why the standardization process is dead in the water
2021-12-11 23:31:16 +0100 <glguy> ImportQualifiedPost is pretty important
2021-12-11 23:31:19 +0100 <Rembane> LambdaCase is the best!
2021-12-11 23:31:21 +0100 <geekosaur> and for that matter there was a lot of argument over GHC2021, but at least it's somewhat transparent
2021-12-11 23:31:22 +0100 <systemfault> Is there any other new Haskell compiler that is relevant beside GHC? (There was hugs at one point.. but it died I believe)
2021-12-11 23:31:49 +0100 <geekosaur> hugs is actually kept barely alive (compiling, at least) because some university courses still use it
2021-12-11 23:31:49 +0100 <systemfault> I mean, at this point, whatever is the default in GHC is more or less what is the "Haskell Standard", no?
2021-12-11 23:31:57 +0100 <geekosaur> but de facto ghc is it
2021-12-11 23:31:58 +0100 <EvanR> BlockArguments didn't make it in? :(
2021-12-11 23:32:08 +0100 <dsal> I'd never heard of ImportQualifiedPost. That's pretty weird.
2021-12-11 23:32:16 +0100 <geekosaur> and the more extensions it gets, the harder it is for any competing compiler to appear
2021-12-11 23:32:22 +0100 <dsal> How many import extensions are there? Those are just strange.
2021-12-11 23:32:27 +0100 <glguy> dsal: without it you get that ugly trough of whitespace in the imports. it's pretty important :)
2021-12-11 23:33:14 +0100 <dsal> You could just use ormolu and give up on aesthetics altogether.
2021-12-11 23:33:40 +0100 <glguy> if you don't care what the code looks like you don't have to use a tool at all
2021-12-11 23:34:05 +0100 <dsal> I don't fully understand BlockArguments. I occasionally write code that wants it, but I don't turn it on often because I've not bothered to read about it.
2021-12-11 23:36:01 +0100 <geekosaur> not much to understand, it just elevates blocks to full arguments that don't require parentheses or $
2021-12-11 23:36:02 +0100abrantesasf(~abrantesa@187.36.170.211) (Read error: Connection reset by peer)
2021-12-11 23:36:03 +0100 <monochrom> I can't strictly think of, say, C as "one language" either. (Casually, sure.) Even if you stick to just the standards, there are already multiple standards, chronologically ordered. By the time you also take into account how GNU C, Microsoft C, Turbo C, Aztec C... all adds their own things, there is no one single "C".
2021-12-11 23:36:18 +0100 <perrierjouet> key bind meta-h /buffer #haskell
2021-12-11 23:36:30 +0100 <perrierjouet> key bind meta-k /buffer #kotlin
2021-12-11 23:36:43 +0100 <monochrom> The Haskell people simply recognize that a linear order is too restrictive.
2021-12-11 23:36:48 +0100 <geekosaur> mm, you missing some command keys perrierjouet?
2021-12-11 23:37:10 +0100 <perrierjouet> geekosaur: ? am configuring my weechat
2021-12-11 23:37:25 +0100 <geekosaur> you sent a couple of them to the channel instead of to weechat
2021-12-11 23:37:50 +0100 <monochrom> Cf my whine yesterday about web forums pretending that a discussion is linear, until Reddit re-taught us that it is at least tree-structured.
2021-12-11 23:38:21 +0100mei(~mei@user/mei) (Ping timeout: 252 seconds)
2021-12-11 23:38:29 +0100 <hololeap> dsal: I've been using ImportQualifiedPost for a while and now it feels weird not to have it
2021-12-11 23:38:45 +0100abrantesasf(~abrantesa@187.36.170.211)
2021-12-11 23:40:12 +0100 <geekosaur> whereas I've gotten so used to the standard syntax that the new one looks weird to me
2021-12-11 23:40:35 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-11 23:40:52 +0100pfurla_(~pfurla@177.79.120.224) (Quit: gone to sleep. ZZZzzz…)
2021-12-11 23:41:06 +0100 <geekosaur> of course this kind of argumentation is why there's no new standard :)
2021-12-11 23:41:22 +0100 <monochrom> Oh nice, best revision ever!
2021-12-11 23:41:57 +0100 <monochrom> "import Data.Char qualified as C" is very close to English.
2021-12-11 23:42:18 +0100perrierjouet(~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
2021-12-11 23:42:26 +0100pavonia(~user@user/siracusa)
2021-12-11 23:43:10 +0100 <hololeap> there's even a GHC warning that yells at you if you write it the old way, but that just seems excessive
2021-12-11 23:44:10 +0100 <geekosaur> if yu're going to be different, at least be consistent about it? using both styles seems like it'd be jarring
2021-12-11 23:44:38 +0100 <hololeap> that's true, but this seems like it's stepping into linter territory
2021-12-11 23:44:51 +0100 <monochrom> Or very close to COBOL >:)
2021-12-11 23:44:55 +0100 <BrokenClutch> Thanks for the help everyone, gonna try to use the docs from emacs and, as base, use the official online docs
2021-12-11 23:45:13 +0100 <awpr> `import qualified Data.Maybe qualified as Maybe as M` -- using both
2021-12-11 23:45:27 +0100 <BrokenClutch> Another thing, is lambdabot compiling?
2021-12-11 23:45:33 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net) (Quit: Reconnecting)
2021-12-11 23:45:41 +0100 <monochrom> GHC currently doesn't let you use both.
2021-12-11 23:45:45 +0100madjestic(~madjestic@88-159-247-120.fixed.kpn.net)
2021-12-11 23:46:16 +0100 <monochrom> But you can always split that into 4 lines.
2021-12-11 23:46:34 +0100Techcable(~Techcable@168.235.93.147) (Ping timeout: 260 seconds)
2021-12-11 23:46:43 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-12-11 23:46:45 +0100 <hololeap> the bikeshedding compromise
2021-12-11 23:47:08 +0100 <monochrom> Oh, you can still bikeshed on which line goes first >:)
2021-12-11 23:47:35 +0100 <earendel> lol bikeshedding
2021-12-11 23:47:54 +0100 <geekosaur> lambdabot compiles, yes, but to bytecode. also > / @run only accepts expressions, not definitions
2021-12-11 23:48:22 +0100 <geekosaur> yahb is a full ghci; use % prefix, or %% to send output to a pastebin (useful for something like :info)
2021-12-11 23:48:23 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:3170:52ba:4037:d1)
2021-12-11 23:48:26 +0100themc47(~mc47@xmonad/TheMC47)
2021-12-11 23:48:31 +0100 <BrokenClutch> I was talking about its source (english is not my main language)
2021-12-11 23:48:37 +0100 <geekosaur> also yahb is ghc 9.0 whereas lambdabot is 8.7
2021-12-11 23:48:54 +0100mc47(~mc47@xmonad/TheMC47) (Ping timeout: 260 seconds)
2021-12-11 23:49:00 +0100 <geekosaur> oh
2021-12-11 23:49:12 +0100 <monochrom> Bikeshedding is in human nature. It is why every climate summit takes forever and produces nothing. You can bet they spend days on disputing enumeration order.
2021-12-11 23:49:30 +0100 <geekosaur> lambdabot itself should build, at least on ghc 8.10.7, but one of its dependencies needs a patch
2021-12-11 23:50:01 +0100 <earendel> they should just use fibonacci sequence
2021-12-11 23:50:21 +0100 <BrokenClutch> geekosaur: thanks :)
2021-12-11 23:50:25 +0100 <geekosaur> (@djinn uses an external program, which currently doesn't build because <> was added to the Prelude. the patch is minor)
2021-12-11 23:50:28 +0100 <earendel> i am sorry. i couldn't hold me.
2021-12-11 23:50:41 +0100cosimone(~user@93-47-231-91.ip115.fastwebnet.it) (Ping timeout: 268 seconds)
2021-12-11 23:51:04 +0100 <earendel> or halt.
2021-12-11 23:51:14 +0100 <earendel> english is difficult.
2021-12-11 23:51:18 +0100 <monochrom> Hey did you know of this fibonacci joke? https://twitter.com/sigfpe/status/776420034419658752
2021-12-11 23:51:53 +0100 <earendel> im banned from twitter :(
2021-12-11 23:52:06 +0100 <monochrom> OK, "This Fibonacci joke is as bad as the last two you heard combined."
2021-12-11 23:52:18 +0100 <earendel> eheh.
2021-12-11 23:52:27 +0100 <earendel> well.
2021-12-11 23:52:42 +0100BrokenClutch(~pioneer@2804:d41:c2b2:be00:da32:623d:efa3:7121) ()
2021-12-11 23:53:02 +0100namkeleser(~namkelese@101.179.128.103) (Quit: Client closed)
2021-12-11 23:53:41 +0100themc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2021-12-11 23:54:23 +0100chomwitt(~chomwitt@2a02:587:dc0d:3700:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
2021-12-11 23:55:09 +0100namkeleser(~namkelese@101.179.128.103)
2021-12-11 23:56:08 +0100tromp(~textual@dhcp-077-249-230-040.chello.nl)