2021/02/02

2021-02-02 00:00:28 +0100 <ij> ephemient, ill try that
2021-02-02 00:01:30 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-02-02 00:02:10 +0100 <ephemient> ij: as dolio says, the time and space includes whatever parts of its arguments it needed to force. StrictData is just a shortcut to make the callers force record fields before constructing/updating them, so it will change where the time and space are counted
2021-02-02 00:02:51 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-02 00:03:04 +0100irchaxwell(~IRC@2a00:23a8:4382:a900:587b:b4e:634d:c1c8)
2021-02-02 00:03:19 +0100forgottenone(~forgotten@176.42.19.155) (Quit: Konversation terminated!)
2021-02-02 00:03:52 +0100irchaxwell(~IRC@2a00:23a8:4382:a900:587b:b4e:634d:c1c8) ()
2021-02-02 00:03:59 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-02 00:04:34 +0100 <dolio> The pragma will have no effect on some things, though. Like Cursor is defined as an alias for (Int,Int).
2021-02-02 00:07:05 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 240 seconds)
2021-02-02 00:08:57 +0100fendor__(~fendor@77.119.131.134.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-02-02 00:09:49 +0100 <ephemient> yep, to force those would take a bit more effort to check how they're being used, I just mentioned StrictData since it's so easy to add a single pragma
2021-02-02 00:10:05 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-02 00:11:11 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-02-02 00:12:24 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 00:12:54 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 00:12:57 +0100conal(~conal@64.71.133.70)
2021-02-02 00:14:08 +0100dhouthoo_(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
2021-02-02 00:14:08 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 00:14:54 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-02-02 00:15:04 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 00:15:52 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 00:20:42 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 258 seconds)
2021-02-02 00:23:19 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving)
2021-02-02 00:24:34 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2021-02-02 00:24:39 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-02-02 00:26:03 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis) (Max SendQ exceeded)
2021-02-02 00:27:20 +0100lotuseat`(~user@2a02:908:fbd1:b0a0:b483:a739:f5cf:4a41)
2021-02-02 00:28:47 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8d2:7a79:927f:8886)
2021-02-02 00:29:02 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-02 00:29:24 +0100lotuseater(~user@ip-176-198-181-127.hsi05.unitymediagroup.de) (Ping timeout: 265 seconds)
2021-02-02 00:31:07 +0100ces(~ces@fsf/member/ces)
2021-02-02 00:33:50 +0100conal(~conal@64.71.133.70)
2021-02-02 00:36:06 +0100TommyC(~TommyC@unaffiliated/sepulchralbloom) (Ping timeout: 246 seconds)
2021-02-02 00:36:23 +0100nocm(~chatzilla@178.141.160.197)
2021-02-02 00:37:02 +0100__monty__(~toonn@unaffiliated/toonn) (Quit: leaving)
2021-02-02 00:37:46 +0100TommyC(~TommyC@unaffiliated/sepulchralbloom)
2021-02-02 00:38:18 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-02-02 00:39:24 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-02 00:39:25 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-02-02 00:40:30 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 00:40:56 +0100gioyik(~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.0)
2021-02-02 00:43:14 +0100usr25(~usr25@unaffiliated/usr25) (Quit: Leaving)
2021-02-02 00:44:26 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds)
2021-02-02 00:44:45 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds)
2021-02-02 00:46:29 +0100alx741(~alx741@181.196.69.29) (Quit: alx741)
2021-02-02 00:46:44 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-02 00:47:22 +0100zebrag(~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-02 00:47:42 +0100zebrag(~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
2021-02-02 00:47:58 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-02-02 00:50:05 +0100conal(~conal@64.71.133.70)
2021-02-02 00:57:53 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-02 00:58:30 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 00:59:05 +0100shiraeeshi(~shiraeesh@109.166.57.33) (Ping timeout: 240 seconds)
2021-02-02 01:00:51 +0100alx741(~alx741@181.196.69.29)
2021-02-02 01:01:47 +0100Ranhir(~Ranhir@157.97.53.139) (Ping timeout: 265 seconds)
2021-02-02 01:02:34 +0100 <aveltras> Is there anything wrong with using data-default + lenses to hide data constructors from a library (to get the opportunity to add fields down the line without breaking existing code) ?
2021-02-02 01:03:53 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 01:04:41 +0100 <glguy> for that you can just define a default value in your library; you don't need data-default
2021-02-02 01:05:42 +0100 <glguy> You might have multiple defaults values; they can have different names. There's no value in fitting all your various defaults into the letters 'def'
2021-02-02 01:05:56 +0100 <glguy> might even have multiple starting values like that for the same type
2021-02-02 01:06:18 +0100 <aveltras> yeah, that s what i did until now but the way it will be used, the type returned by def will always be known so i think it would cut on the typing
2021-02-02 01:06:33 +0100 <glguy> it just makes life harder for your readers
2021-02-02 01:06:35 +0100Ranhir(~Ranhir@157.97.53.139)
2021-02-02 01:07:21 +0100 <aveltras> i have done with things like mkItem but then you can t really predict every value they d like to use as default so i wonder if it's not better to just define the def and let users implement their own "default" on top of it
2021-02-02 01:07:45 +0100 <glguy> there's no value in the typeclass
2021-02-02 01:07:50 +0100 <glguy> it's just an extra indirection
2021-02-02 01:08:25 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-02 01:09:13 +0100 <aveltras> sure but wouldnt you prefer typing "def" than "mkSomething" ? (in the case i don't provide multiple constructors for various case obviously)
2021-02-02 01:09:19 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-02 01:09:37 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-02 01:10:07 +0100 <glguy> no, typing speed has never been what slows me down when I'm programming
2021-02-02 01:10:22 +0100 <glguy> I definitely don't want to have to do type inference in my head when reading the program to figure out which def you meant
2021-02-02 01:11:00 +0100 <glguy> its easier to find other use of a namedValue with simple text search
2021-02-02 01:11:20 +0100 <aveltras> ye ok i think i ll drop this idea then :)
2021-02-02 01:11:26 +0100 <aveltras> thanks for your input
2021-02-02 01:11:28 +0100 <glguy> easier to read, better support from the type system when a def finds its way to the wrong place in my file
2021-02-02 01:13:13 +0100dnlkrgr(~dnlkrgr@2a02:8070:a193:c900:245d:f92b:f644:1a9a) (Ping timeout: 258 seconds)
2021-02-02 01:13:29 +0100bennofs__(~quassel@dslb-094-222-058-083.094.222.pools.vodafone-ip.de)
2021-02-02 01:17:04 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 256 seconds)
2021-02-02 01:17:21 +0100bennofs_(~quassel@dslb-094-222-050-219.094.222.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2021-02-02 01:17:40 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 01:18:05 +0100fresheyeball(~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds)
2021-02-02 01:19:23 +0100rajivr(uid269651@gateway/web/irccloud.com/x-cydbvtlxdfyoajld)
2021-02-02 01:19:30 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-02-02 01:20:20 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2021-02-02 01:21:34 +0100miguel_clean(~Miguel@89-72-187-203.dynamic.chello.pl) (Quit: Leaving.)
2021-02-02 01:24:39 +0100 <mniip> so if we have a monad M(X) = Hom(A, FX) then its associated monad transformer is usually T(N, X) = Hom(A, F(NX))
2021-02-02 01:25:21 +0100 <mniip> in comonads do we go from W(X) = F(Hom(A, X)) to T(V, X) = F(V(Hom(A, X)))
2021-02-02 01:25:38 +0100conal(~conal@64.71.133.70)
2021-02-02 01:26:02 +0100alx741(~alx741@181.196.69.29) (Quit: alx741)
2021-02-02 01:26:20 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 01:26:21 +0100alx741(~alx741@181.196.69.29)
2021-02-02 01:26:36 +0100edwtjo(~edwtjo@fsf/member/edwtjo) (Ping timeout: 240 seconds)
2021-02-02 01:28:45 +0100deviantfero(~deviantfe@190.150.27.58) (Ping timeout: 264 seconds)
2021-02-02 01:29:49 +0100conal(~conal@64.71.133.70) (Client Quit)
2021-02-02 01:30:21 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-02 01:30:51 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 258 seconds)
2021-02-02 01:33:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-02 01:34:03 +0100edwtjo(~edwtjo@fsf/member/edwtjo)
2021-02-02 01:39:45 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 01:44:16 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 258 seconds)
2021-02-02 01:47:22 +0100zebrag(~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-02 01:47:28 +0100 <ski> mniip : example of such a monad ?
2021-02-02 01:47:42 +0100zebrag(~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
2021-02-02 01:48:29 +0100 <mniip> state
2021-02-02 01:48:33 +0100 <mniip> and its dual store
2021-02-02 01:48:41 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-02-02 01:48:42 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-02 01:48:54 +0100 <mniip> I'm just looking at StoreT, TracedT, EnvT and trying to figure out a pattern
2021-02-02 01:49:07 +0100 <ski> shouldn't it be `Hom(A, N(FX))', then ?
2021-02-02 01:49:19 +0100 <mniip> oops
2021-02-02 01:49:20 +0100 <mniip> yes
2021-02-02 01:50:24 +0100ph88(~ph88@95.90.247.26) (Ping timeout: 265 seconds)
2021-02-02 01:50:38 +0100 <ski> `StoreT s w a = s * w (s -> a)' ?
2021-02-02 01:51:29 +0100 <ski> hm, seems to make sense
2021-02-02 01:52:50 +0100dnlkrgr(~dnlkrgr@2a02:8070:a193:c900:7891:1ab1:ddee:eba1)
2021-02-02 01:53:12 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-02-02 01:53:18 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 265 seconds)
2021-02-02 01:53:33 +0100jespada(~jespada@90.254.242.138) (Ping timeout: 272 seconds)
2021-02-02 01:55:04 +0100jespada(~jespada@90.254.242.138)
2021-02-02 01:56:07 +0100conal(~conal@64.71.133.70)
2021-02-02 02:00:49 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
2021-02-02 02:02:05 +0100soft-warm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2021-02-02 02:04:15 +0100_ashbreeze_(~mark@64.85.214.234.reverse.socket.net) (Remote host closed the connection)
2021-02-02 02:04:50 +0100metreo(~Thunderbi@unaffiliated/metreo) (Quit: metreo)
2021-02-02 02:05:25 +0100alx741(~alx741@181.196.69.29) (Quit: alx741)
2021-02-02 02:05:26 +0100renzhi(~renzhi@2607:fa49:6500:6f00::1e43) (Ping timeout: 264 seconds)
2021-02-02 02:05:28 +0100_ashbreeze_(~mark@64.85.214.234.reverse.socket.net)
2021-02-02 02:06:40 +0100alx741(~alx741@181.196.69.29)
2021-02-02 02:07:07 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer)
2021-02-02 02:09:11 +0100dnlkrgr(~dnlkrgr@2a02:8070:a193:c900:7891:1ab1:ddee:eba1) (Ping timeout: 258 seconds)
2021-02-02 02:10:35 +0100pfurla(~pfurla@ool-182ed2e2.dyn.optonline.net)
2021-02-02 02:10:45 +0100nineonin_(~nineonine@50.216.62.2) (Ping timeout: 264 seconds)
2021-02-02 02:10:45 +0100Rudd0(~Rudd0@185.189.115.103) (Read error: Connection reset by peer)
2021-02-02 02:12:18 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-02 02:16:54 +0100cocytus(~cocytus@cpe-76-95-48-109.socal.res.rr.com) (Ping timeout: 246 seconds)
2021-02-02 02:17:48 +0100vgtw(~vgtw@gateway/tor-sasl/vgtw) (Ping timeout: 268 seconds)
2021-02-02 02:18:07 +0100 <mniip> I'm trying to figure out if the tape comonad is commutative
2021-02-02 02:18:22 +0100vgtw(~vgtw@gateway/tor-sasl/vgtw)
2021-02-02 02:19:00 +0100nineonine(~nineonine@50.216.62.2)
2021-02-02 02:23:36 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com)
2021-02-02 02:30:38 +0100soft-warm(4408f588@ip68-8-245-136.sd.sd.cox.net) (Quit: Ping timeout (120 seconds))
2021-02-02 02:31:29 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds)
2021-02-02 02:32:55 +0100Wuzzy(~Wuzzy@p5b0df175.dip0.t-ipconnect.de)
2021-02-02 02:33:36 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds)
2021-02-02 02:33:55 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 02:34:13 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-02-02 02:34:42 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
2021-02-02 02:36:25 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2021-02-02 02:36:52 +0100alx741(~alx741@181.196.69.29) (Quit: alx741)
2021-02-02 02:37:45 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds)
2021-02-02 02:37:48 +0100alx741(~alx741@181.196.69.29)
2021-02-02 02:38:37 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
2021-02-02 02:45:28 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-02-02 02:46:45 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 258 seconds)
2021-02-02 02:50:30 +0100bgamari(~bgamari@72.65.102.135)
2021-02-02 02:51:33 +0100bgamari_(~bgamari@72.65.102.22) (Ping timeout: 264 seconds)
2021-02-02 02:51:41 +0100bitmapper(uid464869@gateway/web/irccloud.com/x-zkobjotekrfpnlhu)
2021-02-02 02:51:49 +0100soft-warm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2021-02-02 02:55:24 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection)
2021-02-02 02:55:45 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-02-02 03:03:36 +0100uwap(~uwap@genja.uwap.name) (Ping timeout: 256 seconds)
2021-02-02 03:04:03 +0100jb55(~jb55@gateway/tor-sasl/jb55) (Ping timeout: 268 seconds)
2021-02-02 03:04:04 +0100fiddlerwoaroof(~fiddlerwo@unaffiliated/fiddlerwoaroof) (Ping timeout: 260 seconds)
2021-02-02 03:04:46 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-02-02 03:05:24 +0100alx741(~alx741@181.196.69.29) (Quit: alx741)
2021-02-02 03:06:18 +0100alx741(~alx741@181.196.69.29)
2021-02-02 03:06:51 +0100 <orzo> I'm thinking about applying LinearTypes to a wrapper over OpenGL. I want it to do both: (1) provide a pure interface to gl's buffer objects, and (2) ensure buffer objects are deallocated properly
2021-02-02 03:07:08 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-02 03:08:30 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-02 03:08:33 +0100 <orzo> What I'm a having a little trouble thinking about is how the (2) use case inter-operates with IORefs. I want to support putting a proxy to the GL state in an IORef or MVar and manipulating it as if it were haskell mutable state
2021-02-02 03:09:17 +0100 <orzo> i could force the user to close his files by using a withFile fname $ \handle -> ... pattern
2021-02-02 03:10:40 +0100 <orzo> oes the LinearTypes approach have the same restrictions? or could I store that handle in an IORef that is used freely in the code and somehow the lineartypes mechanism causes it to be closed when i'm done
2021-02-02 03:11:44 +0100garFF(~garff@0x3e2c8761.mobile.telia.dk) (Read error: Connection reset by peer)
2021-02-02 03:12:19 +0100toorevitimirp(~tooreviti@117.182.181.145)
2021-02-02 03:12:41 +0100 <orzo> i don't want to force the programmer to clean up all his state too soon. in particular, managing the gl context like the dummy s parpameter of the ST monad is not going to work
2021-02-02 03:13:21 +0100 <orzo> gtk supports having multiple GL contexts and activating one to explicitly make it current
2021-02-02 03:14:26 +0100fiddlerwoaroof(~fiddlerwo@unaffiliated/fiddlerwoaroof)
2021-02-02 03:16:22 +0100uwap(~uwap@mail.uwap.name)
2021-02-02 03:16:39 +0100jb55(~jb55@gateway/tor-sasl/jb55)
2021-02-02 03:24:16 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 03:24:36 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds)
2021-02-02 03:25:22 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-02-02 03:26:00 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2021-02-02 03:27:18 +0100TianGTY(~textual@103.116.47.90)
2021-02-02 03:27:57 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 03:28:32 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds)
2021-02-02 03:29:08 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 03:29:44 +0100mcginleyr1_(uid475794@gateway/web/irccloud.com/x-wlcnxolzjahjktbd)
2021-02-02 03:30:39 +0100haritz(~hrtz@unaffiliated/haritz) (Ping timeout: 260 seconds)
2021-02-02 03:31:50 +0100xff0x_(~xff0x@2001:1a81:52fa:6600:15f3:b1c2:7f2e:1231) (Ping timeout: 264 seconds)
2021-02-02 03:32:16 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-02 03:33:05 +0100mmohammadi9812(~mmohammad@5.238.164.53) (Ping timeout: 240 seconds)
2021-02-02 03:33:16 +0100mmohammadi9812(~mmohammad@5.115.226.197)
2021-02-02 03:33:33 +0100xff0x_(~xff0x@2001:1a81:5334:6300:df2c:5529:9d1:9df2)
2021-02-02 03:33:57 +0100charukiewicz(~quassel@irouteince04.i.subnet.rcn.com) (Read error: Connection reset by peer)
2021-02-02 03:34:05 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-02-02 03:37:03 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 03:40:10 +0100DataComputist(~lumeng@50.43.26.251)
2021-02-02 03:41:25 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 03:43:28 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer)
2021-02-02 03:44:04 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-02-02 03:45:15 +0100haritz(~hrtz@62.3.70.206)
2021-02-02 03:45:15 +0100haritz(~hrtz@62.3.70.206) (Changing host)
2021-02-02 03:45:15 +0100haritz(~hrtz@unaffiliated/haritz)
2021-02-02 03:45:55 +0100dandart(~Thunderbi@home.dandart.co.uk) (Ping timeout: 265 seconds)
2021-02-02 03:48:45 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Ping timeout: 240 seconds)
2021-02-02 03:50:16 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 265 seconds)
2021-02-02 03:51:39 +0100alvinsj[m](alvinsjmat@gateway/shell/matrix.org/x-uchfnejtitviszqn) ("User left")
2021-02-02 03:52:45 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 03:57:25 +0100hyperisco(~hyperisco@104-195-141-253.cpe.teksavvy.com) (Ping timeout: 240 seconds)
2021-02-02 03:59:37 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-02-02 04:01:07 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 04:03:19 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-02 04:04:57 +0100urodna(~urodna@unaffiliated/urodna) (Quit: urodna)
2021-02-02 04:05:35 +0100raym(~ray@45.64.220.55) (Quit: leaving)
2021-02-02 04:05:53 +0100raym(~ray@45.64.220.55)
2021-02-02 04:07:08 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Remote host closed the connection)
2021-02-02 04:09:33 +0100aveltras(uid364989@gateway/web/irccloud.com/x-mxzuswfxnnumwsmo) (Quit: Connection closed for inactivity)
2021-02-02 04:09:55 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 04:12:22 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-02-02 04:12:22 +0100Stanley00(~stanley00@unaffiliated/stanley00) (Client Quit)
2021-02-02 04:15:27 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 04:15:41 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 04:19:37 +0100TianGTY(~textual@103.116.47.90) (Remote host closed the connection)
2021-02-02 04:19:45 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-02 04:20:03 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds)
2021-02-02 04:22:47 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 04:22:54 +0100theDon(~td@muedsl-82-207-238-102.citykom.de) (Ping timeout: 246 seconds)
2021-02-02 04:24:17 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-02-02 04:24:47 +0100theDon(~td@94.134.91.201)
2021-02-02 04:25:47 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net)
2021-02-02 04:26:34 +0100plutoniix(~q@184.82.194.190)
2021-02-02 04:27:25 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds)
2021-02-02 04:28:35 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 04:28:58 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 04:30:16 +0100catt(~r@31.124.181.226) (Ping timeout: 240 seconds)
2021-02-02 04:33:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-02 04:36:05 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 04:36:54 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-02 04:37:11 +0100erh^(erh@ip98-184-89-2.mc.at.cox.net) ()
2021-02-02 04:38:05 +0100DataComputist(~lumeng@50.43.26.251) (Ping timeout: 240 seconds)
2021-02-02 04:39:14 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 04:39:44 +0100FinnElija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-02-02 04:39:44 +0100finn_elijaGuest61986
2021-02-02 04:39:44 +0100FinnElijafinn_elija
2021-02-02 04:40:51 +0100DataComputist(~lumeng@50.43.26.251)
2021-02-02 04:43:40 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2021-02-02 04:43:57 +0100Guest61986(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds)
2021-02-02 04:44:28 +0100_xor(~xor@74.215.46.133) (Quit: brb)
2021-02-02 04:45:14 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-02 04:45:40 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 04:45:55 +0100_xor(~xor@74.215.46.133)
2021-02-02 04:49:00 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 04:51:52 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 04:52:23 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-02-02 04:53:00 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi)
2021-02-02 04:54:09 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds)
2021-02-02 04:57:51 +0100doyougnu(~user@2601:1c0:8801:9ca0:1c62:3a04:7ef8:8109)
2021-02-02 05:00:29 +0100Rudd0(~Rudd0@185.189.115.103)
2021-02-02 05:05:19 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 05:05:32 +0100alx741(~alx741@181.196.69.29) (Quit: alx741)
2021-02-02 05:05:59 +0100frozenErebus(~frozenEre@37.231.239.43)
2021-02-02 05:09:48 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds)
2021-02-02 05:12:18 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-02 05:14:26 +0100conal(~conal@64.71.133.70)
2021-02-02 05:14:33 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 05:15:16 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection)
2021-02-02 05:18:07 +0100doyougnu(~user@2601:1c0:8801:9ca0:1c62:3a04:7ef8:8109) (Quit: ERC (IRC client for Emacs 27.1))
2021-02-02 05:19:05 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 05:19:45 +0100_linker_(~linker@2a02:a31a:a045:3500:444d:215c:647d:b95c) (Remote host closed the connection)
2021-02-02 05:22:02 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 05:22:23 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl)
2021-02-02 05:22:54 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer)
2021-02-02 05:23:28 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 05:24:02 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt)
2021-02-02 05:24:27 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 05:24:57 +0100nineonine(~nineonine@50.216.62.2)
2021-02-02 05:25:45 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8d2:7a79:927f:8886) (Remote host closed the connection)
2021-02-02 05:26:58 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds)
2021-02-02 05:28:18 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Read error: Connection reset by peer)
2021-02-02 05:28:27 +0100sakirious(~sakirious@c-71-197-191-137.hsd1.wa.comcast.net)
2021-02-02 05:29:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds)
2021-02-02 05:29:14 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds)
2021-02-02 05:33:50 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 05:34:05 +0100conal(~conal@64.71.133.70) (Ping timeout: 240 seconds)
2021-02-02 05:34:53 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber)
2021-02-02 05:35:35 +0100conal(~conal@64.71.133.70)
2021-02-02 05:36:19 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-ocvvkbgfkbiznzsh)
2021-02-02 05:38:52 +0100mcginleyr1_(uid475794@gateway/web/irccloud.com/x-wlcnxolzjahjktbd) (Quit: Connection closed for inactivity)
2021-02-02 05:38:52 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 05:39:49 +0100shadowdaemon(~user@unaffiliated/shadowdaemon) (Remote host closed the connection)
2021-02-02 05:41:03 +0100shadowdaemon(~user@unaffiliated/shadowdaemon)
2021-02-02 05:43:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-02-02 05:43:23 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 05:48:03 +0100soft-warm(4408f588@ip68-8-245-136.sd.sd.cox.net) (Quit: Ping timeout (120 seconds))
2021-02-02 05:48:10 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 05:48:31 +0100soft-warm(4408f588@ip68-8-245-136.sd.sd.cox.net)
2021-02-02 05:52:44 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8d2:7a79:927f:8886)
2021-02-02 05:52:45 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 05:53:50 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 05:54:51 +0100JordiGH(jordi@octave/developer/JordiGH)
2021-02-02 05:55:01 +0100 <JordiGH> There's no built-in single precision type, is there? (dear lazyweb...)
2021-02-02 05:55:38 +0100 <monochrom> Float
2021-02-02 05:55:44 +0100conal(~conal@64.71.133.70) (Ping timeout: 258 seconds)
2021-02-02 05:56:05 +0100thunderrd(~thunderrd@183.182.115.7) (Remote host closed the connection)
2021-02-02 05:56:27 +0100jedws(~jedws@121.209.199.128)
2021-02-02 05:56:54 +0100 <JordiGH> Oh, crap, that's single?
2021-02-02 05:56:56 +0100conal(~conal@64.71.133.70)
2021-02-02 05:56:57 +0100 <JordiGH> heh, Haskell is old. :P
2021-02-02 05:57:10 +0100 <Axman6> well Double is... double precision...
2021-02-02 05:57:13 +0100zebrag(~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-02 05:58:27 +0100MidAutumnHotaru(~MidAutumn@unaffiliated/midautumnhotaru) (Quit: Ping timeout (120 seconds))
2021-02-02 05:58:46 +0100MidAutumnHotaru(~MidAutumn@unaffiliated/midautumnhotaru)
2021-02-02 05:59:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 06:01:29 +0100Wuzzy(~Wuzzy@p5b0df175.dip0.t-ipconnect.de) (Quit: Wuzzy)
2021-02-02 06:05:06 +0100TommyC(~TommyC@unaffiliated/sepulchralbloom) (Ping timeout: 246 seconds)
2021-02-02 06:05:49 +0100TommyC(~TommyC@unaffiliated/sepulchralbloom)
2021-02-02 06:10:41 +0100forgottenone(~forgotten@176.42.19.155)
2021-02-02 06:13:10 +0100 <Axman6> in fact, are there many languages which have a type called float which do not define it as a single precision IEEE-754 floating point number
2021-02-02 06:13:50 +0100 <dolio> I don't think so.
2021-02-02 06:14:38 +0100thunderrd(~thunderrd@183.182.115.7)
2021-02-02 06:15:40 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-02 06:15:43 +0100 <Axman6> C, C++, Java, Scala, C# all call them float and double. Rust uses f32 and f64
2021-02-02 06:20:55 +0100 <pjb> Axman6: only languages older than IEEE-754.
2021-02-02 06:21:58 +0100 <pjb> Note also that not all hardware and system provide IEEE-754. On early Macintosh computers, you had to load a specific library named SANE to get software-emulated IEEE-754 floats.
2021-02-02 06:22:08 +0100bcoppens(~bartcopp@kde/coppens) (Ping timeout: 260 seconds)
2021-02-02 06:22:16 +0100bcoppens(~bartcopp@vpn2.bartcoppens.be)
2021-02-02 06:22:17 +0100bcoppens(~bartcopp@vpn2.bartcoppens.be) (Changing host)
2021-02-02 06:22:17 +0100bcoppens(~bartcopp@kde/coppens)
2021-02-02 06:22:20 +0100 <ephemient> Python's type is called "float" and has double precision
2021-02-02 06:24:34 +0100 <ephemient> Javascript is "special" and calls it "Number"
2021-02-02 06:25:11 +0100 <ephemient> OCaml's "float" is also double precision
2021-02-02 06:26:44 +0100 <ephemient> pjb: no, not "only languages older than IEEE-754"
2021-02-02 06:31:38 +0100Saukk(~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection)
2021-02-02 06:32:13 +0100darjeeling_(~darjeelin@115.215.41.65) (Ping timeout: 272 seconds)
2021-02-02 06:33:25 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection)
2021-02-02 06:33:41 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-02-02 06:34:08 +0100darjeeling_(~darjeelin@115.215.41.65)
2021-02-02 06:34:15 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis)
2021-02-02 06:36:41 +0100Codaraxis__(Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection)
2021-02-02 06:37:13 +0100ixaxaar(~ixaxaar@49.207.210.215)
2021-02-02 06:42:31 +0100nineonin_(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 06:42:50 +0100 <arahael> And then there's C++ that sometimes/often uses 128-bit floats as temporaries.
2021-02-02 06:45:44 +0100nineonine(~nineonine@50.216.62.2) (Ping timeout: 256 seconds)
2021-02-02 06:46:13 +0100 <dolio> Well, C also doesn't really say how float and double are implemented.
2021-02-02 06:47:57 +0100elliott__(~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
2021-02-02 06:50:23 +0100 <ephemient> there's the 80-bit "long double" of x86 (IA-32) that gets used for intermediates... sometimes
2021-02-02 06:55:19 +0100Tops21(~Tobias@dyndsl-095-033-022-141.ewe-ip-backbone.de)
2021-02-02 06:57:33 +0100Tops2(~Tobias@dyndsl-095-033-090-119.ewe-ip-backbone.de) (Ping timeout: 264 seconds)
2021-02-02 06:57:54 +0100nineonin_(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
2021-02-02 07:00:28 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 07:01:13 +0100gridcommand(~gridcomma@2601:86:600:a2a:fce2:a9fb:ecd7:398e) (Read error: Connection reset by peer)
2021-02-02 07:03:29 +0100 <pjb> arahael: there are 80-bit ieee-754 floats that are used often for temporaries (they're only kept in the FPU registers, not in RAM).
2021-02-02 07:04:15 +0100TommyC(~TommyC@unaffiliated/sepulchralbloom) (Ping timeout: 246 seconds)
2021-02-02 07:04:41 +0100TommyC(~TommyC@unaffiliated/sepulchralbloom)
2021-02-02 07:04:59 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
2021-02-02 07:05:11 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 07:05:13 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 07:06:00 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 07:06:42 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
2021-02-02 07:07:40 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 07:09:54 +0100 <arahael> pjb: Ah, nice.
2021-02-02 07:10:01 +0100 <arahael> Still, it makes it all rather complex.
2021-02-02 07:10:09 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 264 seconds)
2021-02-02 07:10:12 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds)
2021-02-02 07:10:50 +0100xff0x_(~xff0x@2001:1a81:5334:6300:df2c:5529:9d1:9df2) (Ping timeout: 264 seconds)
2021-02-02 07:11:44 +0100xff0x_(~xff0x@2001:1a81:5334:6300:e5e1:e574:4b70:a67b)
2021-02-02 07:11:46 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-02 07:12:01 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 258 seconds)
2021-02-02 07:15:33 +0100Jd007(~Jd007@162.156.11.151) (Quit: Jd007)
2021-02-02 07:15:47 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 07:17:03 +0100eacameron(uid256985@gateway/web/irccloud.com/x-gxofaafswzzfxmhg)
2021-02-02 07:19:15 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 07:22:09 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2021-02-02 07:23:54 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 258 seconds)
2021-02-02 07:24:05 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 240 seconds)
2021-02-02 07:24:15 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred)
2021-02-02 07:26:47 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 07:30:14 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 07:32:29 +0100shiraeeshi(~shiraeesh@77.94.25.42)
2021-02-02 07:33:08 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2021-02-02 07:35:21 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds)
2021-02-02 07:38:42 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 07:38:51 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 07:39:17 +0100jpds_(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-02 07:39:41 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-02-02 07:39:58 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 07:41:25 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
2021-02-02 07:41:27 +0100JordiGH(jordi@octave/developer/JordiGH) (Ping timeout: 260 seconds)
2021-02-02 07:42:11 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 07:49:25 +0100jpds_(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-02 07:49:46 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-02-02 07:53:05 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 07:54:55 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-02-02 07:55:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 07:56:40 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 07:57:25 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 07:58:06 +0100knupfer(~Thunderbi@200116b82c1c27008dc7f9fb3f442ce0.dip.versatel-1u1.de)
2021-02-02 08:00:45 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 08:00:59 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-02-02 08:02:06 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-02 08:02:10 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 08:04:07 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 08:06:50 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 258 seconds)
2021-02-02 08:07:13 +0100soft-warm(4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 248 seconds)
2021-02-02 08:08:37 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2021-02-02 08:08:54 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa)
2021-02-02 08:11:58 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-02-02 08:12:37 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-02 08:13:38 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 08:14:03 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-vscqvdfvmwotoltj)
2021-02-02 08:14:04 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 08:14:33 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-vscqvdfvmwotoltj) (Changing host)
2021-02-02 08:14:33 +0100saitamaplus(uid272474@unaffiliated/cheeky/x-5333603)
2021-02-02 08:14:33 +0100saitamaplus(uid272474@unaffiliated/cheeky/x-5333603) (Changing host)
2021-02-02 08:14:33 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-vscqvdfvmwotoltj)
2021-02-02 08:15:40 +0100_ht(~quassel@82-169-194-8.biz.kpn.net)
2021-02-02 08:18:31 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 265 seconds)
2021-02-02 08:19:09 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-02-02 08:19:18 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-02 08:19:32 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 08:21:56 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 08:22:05 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 08:24:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-02-02 08:25:08 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 08:25:09 +0100frozenErebus(~frozenEre@37.231.239.43) (Ping timeout: 264 seconds)
2021-02-02 08:25:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 08:25:57 +0100sMuNiX(~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca)
2021-02-02 08:26:05 +0100rdivyanshu(uid322626@gateway/web/irccloud.com/x-ocvvkbgfkbiznzsh) (Quit: Connection closed for inactivity)
2021-02-02 08:27:54 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds)
2021-02-02 08:28:10 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be)
2021-02-02 08:28:36 +0100salumu(~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca) (Ping timeout: 240 seconds)
2021-02-02 08:30:22 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 08:31:22 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 08:31:25 +0100Stanley00(~stanley00@unaffiliated/stanley00)
2021-02-02 08:33:45 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 08:36:05 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-02 08:37:04 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 08:38:52 +0100 <dminuoso> Is there a canonical `itself :: Iso a a` in optics?
2021-02-02 08:39:12 +0100 <dminuoso> Oh, just as I hit enter I realized my mistake..
2021-02-02 08:39:32 +0100 <dminuoso> simple :: Iso' a a
2021-02-02 08:39:46 +0100 <koz_> Lol, was about to say.
2021-02-02 08:39:54 +0100jamm_(~jamm@unaffiliated/jamm) (Remote host closed the connection)
2021-02-02 08:40:01 +0100 <koz_> So wait, technically, simple :: Iso a a a a
2021-02-02 08:40:29 +0100 <dminuoso> Yeah, I grepped with `Iso a a` on the hoogle documentation and was surprised to not find anything.
2021-02-02 08:40:34 +0100 <dminuoso> Or haddock, rather.
2021-02-02 08:40:54 +0100 <c_wraith> does id not typecheck?
2021-02-02 08:40:59 +0100 <dminuoso> Not in optics
2021-02-02 08:41:14 +0100 <dminuoso> Well you can write `Optics id`, of course.
2021-02-02 08:41:20 +0100 <c_wraith> oh. why do people use that library, again?
2021-02-02 08:41:23 +0100 <dminuoso> simple = Optic id
2021-02-02 08:41:49 +0100 <dminuoso> c_wraith: It's slightly less error prone (e.g. you cant view through a fold) and you have very good error diagnostics
2021-02-02 08:42:43 +0100 <koz_> And far fewer deps.
2021-02-02 08:43:07 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-02-02 08:43:28 +0100 <dminuoso> Right, with optics-core you get Prisms and Isos, while the only external dependencies is containers and transformers
2021-02-02 08:44:09 +0100 <dminuoso> I consider indexed-profunctors as part of optics, since it was designed minimally for that purpose
2021-02-02 08:44:25 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-02-02 08:44:42 +0100 <dminuoso> Oh, and you have things like AffineFold and AffineTraversal too, which are not represented in lens
2021-02-02 08:45:02 +0100d3od(~nickmeno3@78-1-90-197.adsl.net.t-com.hr)
2021-02-02 08:45:27 +0100 <c_wraith> looks represented to me.... https://hackage.haskell.org/package/lens-4.19.2/docs/Control-Lens-Traversal.html#t:Traversal1
2021-02-02 08:47:13 +0100 <dminuoso> Well that representation is really awkward
2021-02-02 08:47:22 +0100 <dminuoso> A regular Traversal wont gracefully degrade into Traversal1
2021-02-02 08:47:40 +0100 <dminuoso> But you're right, should have phrased it more carefully
2021-02-02 08:49:53 +0100 <dminuoso> Err sorry, the other way around.
2021-02-02 08:50:14 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-02 08:51:28 +0100 <hololeap> what's the standard way to make a ParseErrorBundle (megaparsec) for some type that can be parsed?
2021-02-02 08:52:05 +0100shiraeeshi(~shiraeesh@77.94.25.42) (Ping timeout: 240 seconds)
2021-02-02 08:54:06 +0100 <hololeap> runParser returns `Either (ParseErrorBundle s e) a`, but what would a custom `e` look like?
2021-02-02 08:54:57 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-02-02 08:56:32 +0100 <hololeap> how can you split a parser into subparsers and have valid error messages?
2021-02-02 08:56:42 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 260 seconds)
2021-02-02 08:58:05 +0100heatsink_(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363)
2021-02-02 09:00:56 +0100 <hololeap> for instance, i'm trying to parse a "package atom" like "<category>/<package>-<version>". it makes sense to make the version part separate. how would i combine them where it would be able to say: "Invalid package atom: Error parsing version number: Expected '.'"... and give the character offset in terms of the whole package atom string?
2021-02-02 09:01:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:b8d2:7a79:927f:8886) (Ping timeout: 264 seconds)
2021-02-02 09:02:30 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 09:05:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-02-02 09:06:33 +0100raisen(~raisen@cpe-108-185-219-72.socal.res.rr.com)
2021-02-02 09:08:53 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 09:11:01 +0100jedws(~jedws@121.209.199.128) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-02 09:12:02 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 09:13:37 +0100berberman_(~berberman@unaffiliated/berberman)
2021-02-02 09:14:14 +0100berberman_(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-02-02 09:14:21 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds)
2021-02-02 09:14:32 +0100shiraeeshi(~shiraeesh@77.94.25.42)
2021-02-02 09:15:01 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 09:15:48 +0100ubert(~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de)
2021-02-02 09:16:17 +0100unlink2(~unlink2@p57b8511e.dip0.t-ipconnect.de) (Remote host closed the connection)
2021-02-02 09:16:39 +0100poscat(~poscat@111.192.221.197) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-02 09:17:19 +0100Widget_(~widget@213.55.241.69)
2021-02-02 09:17:31 +0100unlink2(~unlink2@p57b8511e.dip0.t-ipconnect.de)
2021-02-02 09:18:04 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:2fa0:b1fa:9b56:867f)
2021-02-02 09:19:08 +0100Widget(~widget@2a04:ee41:6:7207:2113:b8a0:61a4:72c7) (Ping timeout: 265 seconds)
2021-02-02 09:19:30 +0100poscat(~poscat@111.192.221.197)
2021-02-02 09:21:54 +0100frozenErebus(~frozenEre@37.231.239.43)
2021-02-02 09:24:37 +0100 <pavonia> hololeap: Is the string to parse for the atom the whole string to parse?
2021-02-02 09:25:42 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 09:26:17 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 09:26:59 +0100Varis(~Tadas@unaffiliated/varis)
2021-02-02 09:27:33 +0100 <hololeap> yes
2021-02-02 09:27:55 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 09:28:10 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 09:28:30 +0100 <dibblego> AffineFold and AffineTraversal are mistakes
2021-02-02 09:28:41 +0100 <pavonia> hololeap: Well then it should just work
2021-02-02 09:29:08 +0100 <dminuoso> dibblego: Why do you consider them mistakes?
2021-02-02 09:29:23 +0100 <dibblego> they have no operations that otherwise do not exist
2021-02-02 09:29:52 +0100 <hololeap> pavonia: even if e is Void?
2021-02-02 09:31:09 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 264 seconds)
2021-02-02 09:31:23 +0100raisen(~raisen@cpe-108-185-219-72.socal.res.rr.com) (Remote host closed the connection)
2021-02-02 09:31:36 +0100 <pavonia> What is e in there, the error type?
2021-02-02 09:32:19 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 09:33:07 +0100 <nshepperd2> Doesn't AffineFold let you fold over a semigroup
2021-02-02 09:33:35 +0100 <dibblego> no, Fold1
2021-02-02 09:33:53 +0100 <dminuoso> c_wraith: Oh and I just realized. Traversal1 is not an affine-traversal, it's rather a non-empty traversal
2021-02-02 09:34:23 +0100 <nshepperd2> oh, 'affine' is the 0 or 1 one?
2021-02-02 09:34:26 +0100 <dminuoso> Right
2021-02-02 09:34:31 +0100 <hololeap> parse :: Parsec e s a -> String -> s -> Either (ParseErrorBundle s e) a
2021-02-02 09:34:35 +0100 <dibblego> yes, fmap/pure
2021-02-02 09:34:41 +0100 <c_wraith> oh, whoops. yeah, you'd need a pointed class to get affine
2021-02-02 09:35:16 +0100 <hololeap> the docs show e ~ Void in the examples
2021-02-02 09:35:29 +0100 <dminuoso> dibblego: So NonEmpty is a mistake too? It doesn't have operations that others do not exist (on lists)
2021-02-02 09:35:37 +0100 <dibblego> No, because yes it does
2021-02-02 09:35:53 +0100 <dibblego> I wrote NonEmpty back in the day y'know
2021-02-02 09:36:08 +0100 <dminuoso> Oh. Well there's getting the head I suppose. :)
2021-02-02 09:36:10 +0100Neuromancer(~Neuromanc@unaffiliated/neuromancer)
2021-02-02 09:36:14 +0100 <dibblego> and all the others too :)
2021-02-02 09:36:53 +0100 <dminuoso> dibblego: Eitherway, AffineTraversal keeps you more honest. For a similar reason you can't view through a Fold in optics, you cant preview a Traversal.
2021-02-02 09:37:01 +0100 <dibblego> does it? show me
2021-02-02 09:38:16 +0100 <dminuoso> lens allows you to preview a traversal, which might not be what you intended.
2021-02-02 09:38:34 +0100 <dminuoso> Traversal doesn't even tell you whether there's possibly multiple targets
2021-02-02 09:38:38 +0100 <pavonia> hololeap: I don't think the parameter type is relevant for your problem
2021-02-02 09:38:39 +0100 <dibblego> I do not subscribe to this idea of "an operation is perfectly reasonable, but you might not want it, so it doesn't appear"
2021-02-02 09:38:40 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de)
2021-02-02 09:38:54 +0100Major_Biscuit(~Major_Bis@82-169-100-198.biz.kpn.net)
2021-02-02 09:38:57 +0100 <dibblego> Traversal tells you there are 0 or more
2021-02-02 09:39:12 +0100 <hololeap> pavonia: alright i'll try it. thanks
2021-02-02 09:39:27 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection)
2021-02-02 09:39:40 +0100 <idnar> dminuoso: surely you can firstOf it?
2021-02-02 09:39:49 +0100DirefulSalt(DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt)
2021-02-02 09:40:14 +0100howdoi(uid224@gateway/web/irccloud.com/x-xqjpumaqgnkbwagv) (Quit: Connection closed for inactivity)
2021-02-02 09:40:56 +0100 <dminuoso> This is the difference between Maybe and [], really
2021-02-02 09:41:04 +0100 <dibblego> nope :)
2021-02-02 09:41:07 +0100 <dminuoso> Surely Maybe is useful on the basis of knowing there's definitely no more than 1 element
2021-02-02 09:41:16 +0100 <dibblego> it's the difference between Pointed and Applicative
2021-02-02 09:41:19 +0100 <dminuoso> Just like an AffineTraversal is useful on the basis of knowing there's definitely no more than 1 target.
2021-02-02 09:41:25 +0100 <dminuoso> No, code reasoning wise
2021-02-02 09:41:27 +0100 <dibblego> show the operation and I'll take it back
2021-02-02 09:41:32 +0100 <dibblego> no, it's quite different
2021-02-02 09:42:02 +0100 <dibblego> "since there is no more than 1 target, then … becomes an operation"
2021-02-02 09:42:08 +0100 <dibblego> fill in the gap please
2021-02-02 09:42:13 +0100 <dibblego> gtg
2021-02-02 09:42:38 +0100 <dminuoso> If my compiler automatically derives its an affine fold, I cant accidentally throw away information with a preview
2021-02-02 09:42:54 +0100 <dminuoso> or affine traversal
2021-02-02 09:43:01 +0100LKoen(~LKoen@252.248.88.92.rev.sfr.net)
2021-02-02 09:43:46 +0100miguel_clean(~Miguel@89-72-187-203.dynamic.chello.pl)
2021-02-02 09:43:59 +0100 <dminuoso> Arguably a list models all the operations that Maybe does too, and more. That is, Maybe doesn't give you anything that list doesnt already have too
2021-02-02 09:44:09 +0100electrostat(~dag@unaffiliated/electrostat) (Quit: uwotm8)
2021-02-02 09:44:38 +0100 <dibblego> I really must go, but yes it does
2021-02-02 09:46:19 +0100unlink2(~unlink2@p57b8511e.dip0.t-ipconnect.de) (Quit: Leaving)
2021-02-02 09:47:33 +0100jhuizy(~jhuizy@static.241.188.216.95.clients.your-server.de) (Quit: Ping timeout (120 seconds))
2021-02-02 09:47:52 +0100jhuizy(~jhuizy@static.241.188.216.95.clients.your-server.de)
2021-02-02 09:48:02 +0100deviantfero(~deviantfe@190.150.27.58) (Ping timeout: 258 seconds)
2021-02-02 09:48:26 +0100shapr(~shapr@haskell/developer/shapr) (Ping timeout: 260 seconds)
2021-02-02 09:48:42 +0100alp(~alp@163.172.83.213) (Remote host closed the connection)
2021-02-02 09:49:39 +0100shapr(~shapr@162.243.9.169)
2021-02-02 09:49:40 +0100shaprGuest44411
2021-02-02 09:50:18 +0100M2tias(m2@seri.fi) (Ping timeout: 260 seconds)
2021-02-02 09:50:25 +0100M2tias(m2@seri.fi)
2021-02-02 09:50:59 +0100alp(~alp@163.172.83.213)
2021-02-02 09:55:25 +0100gzj(~gzj@unaffiliated/gzj) (Ping timeout: 240 seconds)
2021-02-02 09:56:03 +0100electrostat(~dag@unaffiliated/electrostat)
2021-02-02 09:59:45 +0100ph88(~ph88@2a02:8109:9e00:7e5c:47d:dbba:6c77:ca6f)
2021-02-02 10:02:13 +0100ubert(~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-02-02 10:03:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-02 10:04:58 +0100Tuplanolla(~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
2021-02-02 10:05:43 +0100Franciman(~francesco@host-95-235-155-82.retail.telecomitalia.it)
2021-02-02 10:06:06 +0100dandart(~Thunderbi@home.dandart.co.uk)
2021-02-02 10:06:40 +0100energizer(~energizer@unaffiliated/energizer) (Disconnected by services)
2021-02-02 10:06:42 +0100fendor(~fendor@77.119.131.134.wireless.dyn.drei.com)
2021-02-02 10:09:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 10:09:20 +0100lotuseat`lotuseater
2021-02-02 10:14:06 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 10:14:49 +0100 <edwardk> mniip: tape comonad?
2021-02-02 10:15:14 +0100 <mniip> zipper over lists
2021-02-02 10:15:45 +0100d3od(~nickmeno3@78-1-90-197.adsl.net.t-com.hr) (Ping timeout: 240 seconds)
2021-02-02 10:15:57 +0100d3od(~nickmeno3@78-1-90-197.adsl.net.t-com.hr)
2021-02-02 10:15:58 +0100energizer_(~energizer@unaffiliated/energizer)
2021-02-02 10:16:04 +0100poljar1(~poljar@93-139-54-120.adsl.net.t-com.hr) (Ping timeout: 240 seconds)
2021-02-02 10:16:56 +0100poljar1(~poljar@93-139-54-120.adsl.net.t-com.hr)
2021-02-02 10:17:25 +0100shiraeeshi(~shiraeesh@77.94.25.42) (Ping timeout: 265 seconds)
2021-02-02 10:17:25 +0100RusAlex(~Chel@unaffiliated/rusalex) (Ping timeout: 240 seconds)
2021-02-02 10:17:29 +0100feliocrat(~feliocrat@31.223.8.190)
2021-02-02 10:18:41 +0100d3od(~nickmeno3@78-1-90-197.adsl.net.t-com.hr) (Remote host closed the connection)
2021-02-02 10:18:56 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:2fa0:b1fa:9b56:867f) (Quit: WeeChat 2.8)
2021-02-02 10:19:28 +0100RusAlex(~Chel@unaffiliated/rusalex)
2021-02-02 10:19:35 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:2fa0:b1fa:9b56:867f)
2021-02-02 10:21:39 +0100heatsink_(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) (Remote host closed the connection)
2021-02-02 10:21:43 +0100CrabMan(phi-matrix@gateway/shell/matrix.org/x-avrunmqpnajwjhyb)
2021-02-02 10:23:52 +0100ces(~ces@fsf/member/ces) (Read error: Connection reset by peer)
2021-02-02 10:25:14 +0100gzj(~gzj@unaffiliated/gzj)
2021-02-02 10:25:25 +0100CrabMansent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/zuqvtuXnuZRxlRhjFdNBRkcB/message.txt >
2021-02-02 10:25:50 +0100CrabMansent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/MnKsjfVkVmQJvSqMJmSCRrva/message.txt >
2021-02-02 10:26:54 +0100GZJ0X_(~gzj@unaffiliated/gzj)
2021-02-02 10:28:18 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 10:29:58 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 10:30:25 +0100gzj(~gzj@unaffiliated/gzj) (Ping timeout: 240 seconds)
2021-02-02 10:30:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 10:30:55 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-02 10:31:24 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-02-02 10:34:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-02-02 10:35:52 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-lkgihyenvdkfexro) (Quit: Connection closed for inactivity)
2021-02-02 10:36:42 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 246 seconds)
2021-02-02 10:39:05 +0100LKoen(~LKoen@252.248.88.92.rev.sfr.net) (Remote host closed the connection)
2021-02-02 10:40:00 +0100bitmagie(~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de)
2021-02-02 10:42:13 +0100energizer_energizer
2021-02-02 10:42:14 +0100sveit_(~sveit@45.77.0.246) (Quit: Bye)
2021-02-02 10:42:32 +0100sveit(~sveit@45.77.0.246)
2021-02-02 10:44:58 +0100niekvand_(~niekvande@89.205.131.87)
2021-02-02 10:45:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 10:46:03 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 10:46:11 +0100encod3(~encod3@45-154-157-94.ftth.glasoperator.nl)
2021-02-02 10:46:18 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 10:46:37 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 10:47:29 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 10:48:36 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 246 seconds)
2021-02-02 10:49:22 +0100nocm(~chatzilla@178.141.160.197) (Quit: ChatZilla 0.9.93 [Firefox 52.9.1/20180826165001])
2021-02-02 10:49:28 +0100 <pie_> oooh shiny https://leanpub.com/algebra-driven-design
2021-02-02 10:49:57 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-02 10:50:32 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-02-02 10:52:42 +0100dandart(~Thunderbi@home.dandart.co.uk) (Remote host closed the connection)
2021-02-02 10:53:09 +0100bitmagie(~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de) (Quit: bitmagie)
2021-02-02 10:55:33 +0100bitmagie(~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de)
2021-02-02 10:56:19 +0100xff0x_(~xff0x@2001:1a81:5334:6300:e5e1:e574:4b70:a67b) (Ping timeout: 272 seconds)
2021-02-02 10:56:59 +0100xff0x_(~xff0x@2001:1a81:5334:6300:b71d:b02d:8cc6:d6fd)
2021-02-02 10:59:04 +0100GZJ0X_(~gzj@unaffiliated/gzj) (Remote host closed the connection)
2021-02-02 10:59:57 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
2021-02-02 11:00:57 +0100a3f(~a3f@chimeria.ext.pengutronix.de) (Ping timeout: 260 seconds)
2021-02-02 11:01:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 11:01:48 +0100a3f(~a3f@chimeria.ext.pengutronix.de)
2021-02-02 11:03:46 +0100m0rphism1(~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de)
2021-02-02 11:04:41 +0100thefybe(~thefybe@249-147-161-N2.customer.vsm.sh)
2021-02-02 11:05:24 +0100dragestil(~quassel@fsf/member/dragestil) (Ping timeout: 246 seconds)
2021-02-02 11:06:01 +0100ubert(~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de)
2021-02-02 11:06:05 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 11:07:31 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Ping timeout: 268 seconds)
2021-02-02 11:09:01 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-02-02 11:16:17 +0100 <mentaal[m]> phi the _|_ means undefined or "bottom". It represents a computation that will result in an error if forced. The right lazy business means that whatever is in the second argument doesn't matter because the function won't force it as it doesn't care about it.
2021-02-02 11:17:35 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 11:17:36 +0100 <Taneb> mentaal[m]: it doesn't necessarily need to produce an error, non-termination is also bottom
2021-02-02 11:17:48 +0100kuribas(~user@ptr-25vy0i8t5wed114xdik.18120a2.ip6.access.telenet.be)
2021-02-02 11:18:00 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
2021-02-02 11:18:05 +0100 <CrabMan> I see, thanks
2021-02-02 11:18:05 +0100 <mentaal[m]> Yes true, thanks for the clarification
2021-02-02 11:18:32 +0100 <pjb> mentaal[m]: you mean: βŠ₯
2021-02-02 11:18:41 +0100 <mentaal[m]> * phi the `_|_` means undefined or "bottom". It represents a computation that will result in an error if forced. The right lazy business means that whatever is in the second argument doesn't matter because the function won't force it as it doesn't care about it.
2021-02-02 11:18:48 +0100 <pjb> with ⊀ = top
2021-02-02 11:19:07 +0100 <mentaal[m]> Yeah typing it literally on my phone didn't work out!
2021-02-02 11:19:16 +0100 <Taneb> pjb: it's tricky to type βŠ₯ on most keyboards so _|_ is often used as an ASCII subsitute
2021-02-02 11:19:26 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-02-02 11:21:08 +0100 <pjb> Taneb: that's why you should edit your own xmodmap ;-) Here's mine: https://github.com/informatimago/rc/blob/master/xmodmap-daskeyboard-3-current (the X11 keysyms are uptack and downtack (with lefttack and righttack nearby).
2021-02-02 11:22:01 +0100heatsink(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363)
2021-02-02 11:22:07 +0100 <pjb> My keyboard map: https://termbin.com/2z9e
2021-02-02 11:22:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 11:23:38 +0100dragestil(~quassel@fsf/member/dragestil)
2021-02-02 11:24:13 +0100asheshambasta(~user@ptr-e1lysax2ic2wl7mrg8y.18120a2.ip6.access.telenet.be)
2021-02-02 11:24:46 +0100oish(~charlie@228.25.169.217.in-addr.arpa)
2021-02-02 11:25:40 +0100Lord_of_Life_(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-02-02 11:27:01 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl)
2021-02-02 11:27:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) (Ping timeout: 264 seconds)
2021-02-02 11:28:45 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds)
2021-02-02 11:28:45 +0100Lord_of_Life_Lord_of_Life
2021-02-02 11:29:21 +0100proteusguy(~proteusgu@cm-58-10-154-202.revip7.asianet.co.th) (Ping timeout: 264 seconds)
2021-02-02 11:31:15 +0100encod3(~encod3@45-154-157-94.ftth.glasoperator.nl) (Remote host closed the connection)
2021-02-02 11:31:16 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds)
2021-02-02 11:31:32 +0100encod3(~encod3@45-154-157-94.ftth.glasoperator.nl)
2021-02-02 11:33:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 11:33:21 +0100encod3(~encod3@45-154-157-94.ftth.glasoperator.nl) (Client Quit)
2021-02-02 11:34:06 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds)
2021-02-02 11:34:36 +0100thc202(~thc202@unaffiliated/thc202)
2021-02-02 11:35:01 +0100jespada(~jespada@90.254.242.138) (Quit: Leaving)
2021-02-02 11:35:32 +0100oish(~charlie@228.25.169.217.in-addr.arpa) (Quit: leaving)
2021-02-02 11:37:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 11:42:24 +0100proteusguy(~proteusgu@cm-58-10-154-202.revip7.asianet.co.th)
2021-02-02 11:42:28 +0100plutoniix(~q@184.82.194.190) (Quit: Leaving)
2021-02-02 11:44:21 +0100B-J(~BenziJuni@dsl-149-65-135.hive.is) (Ping timeout: 264 seconds)
2021-02-02 11:44:58 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 11:45:56 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 11:47:52 +0100Benzi-Junior(~BenziJuni@dsl-149-64-174.hive.is)
2021-02-02 11:48:13 +0100lortabac(~lortabac@51.158.65.124) (Ping timeout: 260 seconds)
2021-02-02 11:48:14 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 11:48:24 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 11:48:30 +0100TheScoop(~TheScoop@unaffiliated/tryte) (Quit: _)
2021-02-02 11:48:30 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 11:48:41 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 11:48:41 +0100__monty__(~toonn@unaffiliated/toonn)
2021-02-02 11:49:07 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 11:53:42 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds)
2021-02-02 11:55:18 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 11:55:45 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 11:57:33 +0100Uma_(~uma@umazalakain.info) (Ping timeout: 264 seconds)
2021-02-02 11:57:56 +0100Uma(~uma@umazalakain.info)
2021-02-02 11:58:05 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-02 11:59:01 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-02 12:00:25 +0100darjeeling_(~darjeelin@115.215.41.65) (Ping timeout: 240 seconds)
2021-02-02 12:02:43 +0100darjeeling_(~darjeelin@115.215.41.65)
2021-02-02 12:04:34 +0100LKoen(~LKoen@252.248.88.92.rev.sfr.net)
2021-02-02 12:12:33 +0100haritz(~hrtz@unaffiliated/haritz) (Ping timeout: 264 seconds)
2021-02-02 12:13:30 +0100haritz(~hrtz@62.3.70.206)
2021-02-02 12:13:30 +0100haritz(~hrtz@62.3.70.206) (Changing host)
2021-02-02 12:13:30 +0100haritz(~hrtz@unaffiliated/haritz)
2021-02-02 12:13:50 +0100__monty__(~toonn@unaffiliated/toonn) (Ping timeout: 256 seconds)
2021-02-02 12:15:44 +0100TianGTY(~textual@103.116.47.86) (Remote host closed the connection)
2021-02-02 12:16:21 +0100knupfer(~Thunderbi@200116b82c1c27008dc7f9fb3f442ce0.dip.versatel-1u1.de) (Remote host closed the connection)
2021-02-02 12:16:35 +0100knupfer(~Thunderbi@200116b82c1c270094caa69472e071be.dip.versatel-1u1.de)
2021-02-02 12:18:54 +0100plutoniix(~q@ppp-223-24-62-223.revip6.asianet.co.th)
2021-02-02 12:19:09 +0100aveltras(uid364989@gateway/web/irccloud.com/x-acxpamgdnfyygncw)
2021-02-02 12:20:30 +0100 <aveltras> is there a workaround for the following ?
2021-02-02 12:20:34 +0100 <aveltras> https://www.irccloud.com/pastebin/IpHyyoeL/
2021-02-02 12:20:48 +0100 <aveltras> using microlens
2021-02-02 12:20:59 +0100TianGTY(~textual@103.116.47.86)
2021-02-02 12:21:21 +0100dyeplexer(~lol@unaffiliated/terpin)
2021-02-02 12:23:18 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 12:23:22 +0100heatsink(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363)
2021-02-02 12:23:23 +0100saitamaplus(uid272474@gateway/web/irccloud.com/x-vscqvdfvmwotoltj) (Quit: Connection closed for inactivity)
2021-02-02 12:23:26 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 12:23:52 +0100 <dminuoso> aveltras: Place it into a newtype
2021-02-02 12:25:29 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 12:26:07 +0100 <aveltras> in fact i think that's because i used a type snynome which contains a forall
2021-02-02 12:26:08 +0100 <thefybe> Or you could specialise it to Getting Bool s Bool if all you do is to call view with it
2021-02-02 12:26:10 +0100 <aveltras> the following works
2021-02-02 12:26:12 +0100 <aveltras> https://www.irccloud.com/pastebin/kGdxXJIa/
2021-02-02 12:27:05 +0100 <carbolymer> what was the name of the extension which allowed writing `type MyFoo m = MonadIO m`; ConstraintKinds or similar?
2021-02-02 12:27:22 +0100 <dminuoso> carbolymer: Yes.
2021-02-02 12:27:30 +0100 <dminuoso> % :set -XConstraintKinds
2021-02-02 12:27:31 +0100 <yahb> dminuoso:
2021-02-02 12:27:38 +0100 <dminuoso> % type MyFoo m = MonadIO m
2021-02-02 12:27:39 +0100 <yahb> dminuoso:
2021-02-02 12:27:39 +0100carbolymertypes ConstraintKinds again into ddg
2021-02-02 12:28:05 +0100son0p(~son0p@181.58.39.182)
2021-02-02 12:28:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) (Ping timeout: 264 seconds)
2021-02-02 12:28:33 +0100 <carbolymer> dminuoso: thx
2021-02-02 12:30:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-02-02 12:31:42 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-02 12:32:48 +0100niekvand_(~niekvande@89.205.131.87) (Remote host closed the connection)
2021-02-02 12:33:20 +0100niekvandepas(~niekvande@89.205.131.87)
2021-02-02 12:33:55 +0100pera(~pera@unaffiliated/pera)
2021-02-02 12:34:35 +0100niekvand_(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 12:35:53 +0100niekvandepas(~niekvande@89.205.131.87) (Read error: Connection reset by peer)
2021-02-02 12:38:18 +0100pavonia(~user@unaffiliated/siracusa) (Quit: Bye!)
2021-02-02 12:39:36 +0100forgottenone(~forgotten@176.42.19.155) (Quit: Konversation terminated!)
2021-02-02 12:40:02 +0100Stanley00(~stanley00@unaffiliated/stanley00) ()
2021-02-02 12:41:33 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 12:42:48 +0100jespada(~jespada@90.254.242.138)
2021-02-02 12:42:55 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-02 12:43:22 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 12:44:21 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr)
2021-02-02 12:45:42 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-02 12:45:57 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 260 seconds)
2021-02-02 12:46:05 +0100niekvand_(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 240 seconds)
2021-02-02 12:46:20 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 12:46:41 +0100jerin[m]1(jerinmatri@gateway/shell/matrix.org/x-oqephxscfyounuwh)
2021-02-02 12:49:02 +0100jerin[m]1(jerinmatri@gateway/shell/matrix.org/x-oqephxscfyounuwh) (Quit: authenticating)
2021-02-02 12:49:12 +0100jerin[m]1(jerinmatri@gateway/shell/matrix.org/x-stcjgbkwbrmjmqpx)
2021-02-02 12:51:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 12:53:03 +0100bitmagie(~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de) (Quit: bitmagie)
2021-02-02 12:53:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 12:55:40 +0100finn_elija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection)
2021-02-02 12:56:02 +0100finn_elija(~finn_elij@gateway/tor-sasl/finnelija/x-67402716)
2021-02-02 12:57:03 +0100jerin[m]1jerin
2021-02-02 12:59:01 +0100ukari(~ukari@unaffiliated/ukari) (Remote host closed the connection)
2021-02-02 12:59:25 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 12:59:30 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 13:00:03 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 13:00:21 +0100ukari(~ukari@unaffiliated/ukari)
2021-02-02 13:05:25 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 240 seconds)
2021-02-02 13:07:13 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 13:09:18 +0100lotuseater(~user@2a02:908:fbd1:b0a0:b483:a739:f5cf:4a41) (Remote host closed the connection)
2021-02-02 13:10:00 +0100jedws(~jedws@121.209.199.128)
2021-02-02 13:12:33 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds)
2021-02-02 13:13:58 +0100lotuseater(~user@ip-176-198-181-127.hsi05.unitymediagroup.de)
2021-02-02 13:15:02 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 13:18:09 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-02 13:19:50 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 264 seconds)
2021-02-02 13:24:09 +0100heatsink(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363)
2021-02-02 13:28:03 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 13:28:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) (Ping timeout: 264 seconds)
2021-02-02 13:32:59 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 13:33:10 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-02-02 13:33:35 +0100 <kuribas> I cannot use a symbol for some phantom type?
2021-02-02 13:34:21 +0100 <kuribas> "Expected a type, but β€˜"TABLES"’ has kind β€˜GHC.Types.Symbol’"
2021-02-02 13:35:48 +0100Tario(~Tario@201.192.165.173)
2021-02-02 13:35:52 +0100 <kuribas> hm, and enabling PolyKinds gives an kind error in my newtype definition
2021-02-02 13:36:49 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 13:37:03 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 13:38:11 +0100wei2912(~wei2912@unaffiliated/wei2912)
2021-02-02 13:38:17 +0100xiinotulp(~q@ppp-223-24-148-46.revip6.asianet.co.th)
2021-02-02 13:38:29 +0100 <dminuoso> kuribas: `Expected a type` is a poor GHC diagnostic suggesting it wants something of kind *
2021-02-02 13:38:41 +0100 <kuribas> I figured that.
2021-02-02 13:38:59 +0100 <dminuoso> Well. fsvo of "poor"
2021-02-02 13:39:10 +0100 <kuribas> I'll better fix the kind as a Symbol then...
2021-02-02 13:39:26 +0100 <dminuoso> It's a trade off between giving easy diagnostics for newcomers and precise diagnostics for GHC experts.
2021-02-02 13:40:09 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 264 seconds)
2021-02-02 13:40:21 +0100 <kuribas> I am not sure being imprecise is easier for beginners
2021-02-02 13:40:29 +0100 <kuribas> it just confuses them.
2021-02-02 13:40:29 +0100 <dminuoso> Perhaps GHC should have a sort of "diagnostic mode", where the user can chose between being lied to (think asking for the type of ($), or the "Expected a type"), or being confronted with just technical facts
2021-02-02 13:40:58 +0100 <kuribas> I am a proponent of first stating facts, then some helpful comment or example.
2021-02-02 13:41:12 +0100 <dminuoso> If you take responsibility in educating Haskllers about facts like `Maybe` itself being a type too..
2021-02-02 13:41:24 +0100 <dminuoso> If you produce too much diagnostics, it easily overwhelms
2021-02-02 13:41:25 +0100plutoniix(~q@ppp-223-24-62-223.revip6.asianet.co.th) (Ping timeout: 240 seconds)
2021-02-02 13:42:01 +0100 <dminuoso> Not all people have the patience to carefully read the entire message, and deduce things from it
2021-02-02 13:42:11 +0100 <idnar> it depends on what "type" means :P
2021-02-02 13:42:24 +0100 <kuribas> For example, a rigid variable error could say: "this can often be solved by adding a type annotation, or bring the type variable in scope with ScopedTypeVariables".
2021-02-02 13:42:46 +0100 <dminuoso> kuribas: rigid variable errors occur in all sorts of places, where its impossible to say how to fix it
2021-02-02 13:43:01 +0100 <dminuoso> Note, that being rigid is not a problem, it is, as you want it, just a piece of information
2021-02-02 13:43:07 +0100 <kuribas> dminuoso: maybe, but this covers 95% of the cases I encounter.
2021-02-02 13:43:26 +0100 <dminuoso> I find, that one tends to provoke similar errors frequently because one has a particular programming style
2021-02-02 13:43:39 +0100 <nshepperd2> (somehow there seems to be some debate about whether Maybe is a 'type', which probably explains why someone thought 'expected a type' would be a sensible diagnostic)
2021-02-02 13:43:40 +0100 <dminuoso> But that's very specific to the programmer
2021-02-02 13:44:53 +0100 <kuribas> if Maybe is a type, it is not inhabited...
2021-02-02 13:45:04 +0100 <kuribas> Then, would it be really a type?
2021-02-02 13:46:02 +0100 <idnar> is x :: Int -> Int a value?
2021-02-02 13:46:46 +0100 <dminuoso> 13:42:11 idnar | it depends on what "type" means :P
2021-02-02 13:46:49 +0100 <dminuoso> This is the key phrase.
2021-02-02 13:47:02 +0100 <dminuoso> If you give a precise definition of the word "type", then its easy to check whether `X is a type"
2021-02-02 13:47:11 +0100 <dminuoso> (Whether that's a common or useful definition is another debate, then)
2021-02-02 13:47:26 +0100 <kuribas> idnar: yes
2021-02-02 13:47:37 +0100 <merijn> "Maybe" is unambiguously a type
2021-02-02 13:47:51 +0100 <nshepperd2> indeed, some people insist that only members of 'habitable' kinds (TYPE r for some r) are 'types', and the rest of them are just 'thingies that live in the type level'
2021-02-02 13:48:02 +0100 <dminuoso> merijn: If we take the introduction definition of TaPL, thats very debatable
2021-02-02 13:48:21 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-02 13:48:28 +0100 <merijn> dminuoso: Everything is debatable, if you don't care about being wrong >.>
2021-02-02 13:48:52 +0100 <dminuoso> "... classifying phrases according to the values they compute" <-
2021-02-02 13:48:57 +0100 <merijn> dminuoso: It is also debatable whether "5" is an expression
2021-02-02 13:49:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 13:49:27 +0100 <merijn> Hell, it's debatable whether Haskell is a language!
2021-02-02 13:49:27 +0100xiinotulp(~q@ppp-223-24-148-46.revip6.asianet.co.th) (Quit: Leaving)
2021-02-02 13:49:31 +0100 <dminuoso> merijn: If we take this sentence, one could think of types as classifying lexical phrases according to the values they compute.
2021-02-02 13:49:44 +0100 <dminuoso> That's not.. helpful.
2021-02-02 13:49:52 +0100 <merijn> dminuoso: Well, that's my point :)
2021-02-02 13:50:05 +0100 <idnar> merijn: GHC seems to think only things of kind `Type` are types
2021-02-02 13:50:26 +0100 <merijn> idnar: GHC's terminology is a messy clusterfuck
2021-02-02 13:50:38 +0100 <merijn> idnar: There are no kinds in GHC terminology anymore
2021-02-02 13:51:05 +0100 <merijn> idnar: There's just "Type"
2021-02-02 13:51:26 +0100 <merijn> But what is the kind of "Type"? 'Type'
2021-02-02 13:51:36 +0100 <merijn> Ok, but how about 'Type -> Type'? 'Type'
2021-02-02 13:51:45 +0100p7lpa1ugixavugu(~atomic@2800:810:514:8155:bcdb:8438:3690:f57c) (Ping timeout: 272 seconds)
2021-02-02 13:51:55 +0100 <merijn> It's 'Type' all the way up and down >.>
2021-02-02 13:52:14 +0100 <idnar> merijn: -XPolyKinds
2021-02-02 13:52:46 +0100 <merijn> idnar: That extension was created and named way before the TypeInType lunacy
2021-02-02 13:53:06 +0100 <merijn> PolyKinds was somewhere in early 7.x, iirc
2021-02-02 13:53:37 +0100 <merijn> From 2012, apparently
2021-02-02 13:54:05 +0100frozenErebus(~frozenEre@37.231.239.43) (Ping timeout: 256 seconds)
2021-02-02 13:54:17 +0100 <kuribas> merijn: is '"abc" a type?
2021-02-02 13:54:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-02-02 13:54:45 +0100 <merijn> ' is DataKinds promoted?
2021-02-02 13:54:50 +0100 <kuribas> yes
2021-02-02 13:54:52 +0100 <merijn> Then yes
2021-02-02 13:55:28 +0100 <merijn> I'm not sure that's actually legal, tbh. "abc" can be a type of kind Symbol without the tick
2021-02-02 13:55:53 +0100 <nshepperd2> > error "i'm a type" :: * -> *
2021-02-02 13:55:55 +0100 <lambdabot> <* -> *>
2021-02-02 13:56:30 +0100 <idnar> merijn: ok -XStandaloneKindSignatures was 8.10.1
2021-02-02 13:56:39 +0100 <kuribas> merijn: right, there is no tick
2021-02-02 13:56:58 +0100miguel_clean(~Miguel@89-72-187-203.dynamic.chello.pl) (Ping timeout: 256 seconds)
2021-02-02 13:57:28 +0100carlomagno1(~cararell@148.87.23.5)
2021-02-02 13:58:26 +0100miguel_clean(~Miguel@89-72-187-203.dynamic.chello.pl)
2021-02-02 13:58:48 +0100 <dminuoso> Perhaps this is not the right argumentation here.
2021-02-02 13:58:53 +0100 <dminuoso> What GHC does internally is just implementation specific.
2021-02-02 13:58:58 +0100 <dminuoso> However, the Haskell report is quite clear
2021-02-02 13:59:00 +0100 <dminuoso> https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-970004.6
2021-02-02 13:59:14 +0100 <dminuoso> `Maybe and IO are unary type constructors, and treated as _types_ with kind βˆ—β†’βˆ—.` (emphasis added)
2021-02-02 13:59:22 +0100 <nshepperd2> my impression is that kinds exist in ghc now only in the sense that being a kind is something that a type does in relation to another type
2021-02-02 13:59:49 +0100 <merijn> nshepperd2: Yes, but what GHC does is dumb, therefore I elect to ignore it
2021-02-02 13:59:57 +0100 <nshepperd2> you can still ask what the kind of a type is
2021-02-02 14:00:09 +0100 <nshepperd2> but there isn't a separate category of things called kinds
2021-02-02 14:00:15 +0100forgottenone(~forgotten@176.42.24.1)
2021-02-02 14:00:16 +0100 <merijn> nshepperd2: Right, which make it not only dumb, but also inconsistent :)
2021-02-02 14:00:34 +0100 <nshepperd2> nah, not really
2021-02-02 14:00:36 +0100machinedgod(~machinedg@135-23-192-217.cpe.pppoe.ca)
2021-02-02 14:00:38 +0100carlomagno(~cararell@148.87.23.7) (Ping timeout: 264 seconds)
2021-02-02 14:01:05 +0100pera(~pera@unaffiliated/pera)
2021-02-02 14:01:09 +0100 <merijn> Anyway, that doesn't really affect "is Maybe a type?" either way :)
2021-02-02 14:01:56 +0100geowiesnot(~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds)
2021-02-02 14:02:17 +0100 <dminuoso> https://hackage.haskell.org/package/base-4.14.1.0/docs/Data-Kind.html#t:Type
2021-02-02 14:02:32 +0100 <dminuoso> Dunno, as long as GHC is so ambiguous about those terms, if we use the GHC definition, Id say it's very ambiguous.
2021-02-02 14:04:12 +0100 <nshepperd2> it just means that kindhood (kindness? :) is a relation, not a predicate
2021-02-02 14:04:39 +0100 <merijn> Well, one view provides a simple, consistent, accessible, easily explained to beginners view of types. The other view is "it's an ambiguous mess because years of evolution have made GHC's terminology confusing and unhelpful to beginners" >.>
2021-02-02 14:05:54 +0100 <merijn> "Functor"? type, "Maybe"? type, "Bool"? type! "1"? type, but only if DataKinds is enabled! :p
2021-02-02 14:06:14 +0100hekkaidekapus}(~tchouri@gateway/tor-sasl/hekkaidekapus)
2021-02-02 14:07:35 +0100hekkaidekapus{(~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds)
2021-02-02 14:09:37 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-02-02 14:09:46 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 14:10:52 +0100mmohammadi9812(~mmohammad@5.115.226.197) (Ping timeout: 265 seconds)
2021-02-02 14:11:22 +0100 <nshepperd2> personally i favor calling all type level things 'types', and i call types which can contain values (ie. types :: Type r) 'habitable types'
2021-02-02 14:11:22 +0100mmohammadi9812(~mmohammad@198.12.95.170)
2021-02-02 14:12:39 +0100 <nshepperd2> but a lot of hot air has been expended due to the lack of a good term for the latter. some people reach for 'concrete type' but then that gets conflated with 'types without any variables'
2021-02-02 14:13:10 +0100 <merijn> nshepperd2: We already have a name for types that are inhabited, though
2021-02-02 14:13:16 +0100 <merijn> nshepperd2: "type of kind *"
2021-02-02 14:13:41 +0100urodna(~urodna@unaffiliated/urodna)
2021-02-02 14:13:46 +0100 <ski> "types without any variables" can be called "closed types"
2021-02-02 14:13:47 +0100 <nshepperd2> yeah but that's kind of a mouthful and also unlifted types can be inhabited too
2021-02-02 14:14:03 +0100 <merijn> nshepperd2: "types of kind * and #" :p
2021-02-02 14:14:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 14:14:25 +0100 <merijn> nshepperd2: The solution is: more kinds, not collapsing types and kinds
2021-02-02 14:14:29 +0100 <hpc> is # a kind anymore?
2021-02-02 14:14:40 +0100 <hpc> :k Int#
2021-02-02 14:14:41 +0100 <lambdabot> error:
2021-02-02 14:14:41 +0100 <lambdabot> Not in scope: type constructor or class β€˜Int#’
2021-02-02 14:14:41 +0100 <lambdabot> Perhaps you meant one of these:
2021-02-02 14:14:43 +0100 <nshepperd2> it's TYPE r now
2021-02-02 14:14:45 +0100 <hpc> :k Int32#
2021-02-02 14:14:46 +0100 <lambdabot> error:
2021-02-02 14:14:47 +0100 <lambdabot> Not in scope: type constructor or class β€˜Int32#’
2021-02-02 14:14:47 +0100 <lambdabot> Perhaps you meant β€˜Int32’ (imported from Data.Int)
2021-02-02 14:14:51 +0100 <hpc> bah
2021-02-02 14:14:59 +0100 <merijn> hpc: * and # are just "TYPE (l :: Levity)"
2021-02-02 14:15:08 +0100geekosaur(82650c7c@130.101.12.124)
2021-02-02 14:15:13 +0100 <merijn> hpc: Due to levity polymorphism
2021-02-02 14:15:43 +0100 <hpc> :k (->) -- so this is still a slight lie then
2021-02-02 14:15:44 +0100 <lambdabot> * -> * -> *
2021-02-02 14:16:03 +0100 <merijn> I really wanna make Haskell 2.0, ditching a bunch of the junk GHC has bolted on over the years, but I *don't* want to reinvent all of GHCs optimisation backend :\
2021-02-02 14:16:26 +0100 <nshepperd2> (->) :: TYPE q -> TYPE r -> *
2021-02-02 14:16:31 +0100 <kuribas> merijn: use GRIN?
2021-02-02 14:16:32 +0100 <aldum> if you make 2.0, please swap : and ::
2021-02-02 14:16:33 +0100usr25(~usr25@unaffiliated/usr25)
2021-02-02 14:16:47 +0100 <merijn> aldum: No
2021-02-02 14:16:50 +0100 <hpc> for extra fun, swap (->) and (=)
2021-02-02 14:16:55 +0100 <merijn> :: is clearly superior
2021-02-02 14:16:57 +0100 <aldum> sadpanda.cfg
2021-02-02 14:17:04 +0100 <merijn> Because it aligns with => and -> when linewrapping
2021-02-02 14:17:10 +0100 <kuribas> merijn: although that doesn have many optimizations either.
2021-02-02 14:17:31 +0100 <merijn> If anything, I'm going to change "foral a ." to something else because . being a single character is awkward with => and ->
2021-02-02 14:17:58 +0100 <ski> please flip the binding behaviour of `ScopedTypeVariables'
2021-02-02 14:18:17 +0100 <merijn> kuribas: I have (naive, optimistic) hopes for Csaba's work to integrate with GHC
2021-02-02 14:18:32 +0100 <merijn> ski: Also not convinced about that
2021-02-02 14:18:47 +0100ski. o O ( <https://mail.haskell.org/pipermail/ghc-steering-committee/2020-December/001973.html> )
2021-02-02 14:18:50 +0100 <nshepperd2> hah
2021-02-02 14:18:55 +0100 <merijn> There's only 26 characters in the alphabet and that makes naming polymorphic types in where blocks awkward
2021-02-02 14:19:16 +0100 <merijn> I already run into problems when enabling SCTV sometimes
2021-02-02 14:19:42 +0100ski. o O ( s/polymorphic types/universal types/ )
2021-02-02 14:20:02 +0100 <ski> awkward, in which way ?
2021-02-02 14:20:39 +0100 <merijn> ski: running out of variable names for type signatures in where blocks
2021-02-02 14:21:11 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-02-02 14:21:12 +0100 <ski> and where you want to refer to them, in the body ?
2021-02-02 14:21:18 +0100 <merijn> Especially for functorial types
2021-02-02 14:21:49 +0100 <merijn> ski: My point is that enabling SCTV by default would capture everything in the top-level signature
2021-02-02 14:21:56 +0100 <ski> would `map @a @b f (x:xs) = ..a..b..f..x..xs..' syntax help ?
2021-02-02 14:21:56 +0100 <nshepperd2> just put a forall on the inner function if you don't want it to use the one in scope?
2021-02-02 14:22:11 +0100 <ski> merijn : oh, i'm not talking about enabling ScopedTypeVariables by default
2021-02-02 14:22:24 +0100 <merijn> nshepperd2: forall is also super awkward due to '.' not aligning :p
2021-02-02 14:22:26 +0100 <nshepperd2> at least that actually makes sense, instead of the current way where you need a forall for no reason just to turn the feature on
2021-02-02 14:22:44 +0100 <merijn> ski: The problem with inverting the behaviour is that it breaks code when enabling SCTV
2021-02-02 14:23:32 +0100viluon(uid453725@gateway/web/irccloud.com/x-ksfxrsatayjgucds)
2021-02-02 14:23:41 +0100 <ski> hm, would it help if it could be enabled for particular definitions ?
2021-02-02 14:24:11 +0100 <merijn> Like introducing some sigil/keyword to enable it? :p
2021-02-02 14:24:41 +0100 <ski> like prefixing the defining equation(s) with a pragma
2021-02-02 14:24:53 +0100heatsink(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363)
2021-02-02 14:26:07 +0100son0p(~son0p@181.58.39.182) (Quit: Lost terminal)
2021-02-02 14:27:05 +0100 <ski> anyway, i think it's probably more realistic to introduce a new extension name, with the more sane behaviour .. and then, at some point deprecating `ScopedTypeVariables'
2021-02-02 14:28:20 +0100toorevitimirp(~tooreviti@117.182.181.145) (Remote host closed the connection)
2021-02-02 14:28:32 +0100 <merijn> Probably somewhere around the same time as HaskellPrime and pigs flying :p
2021-02-02 14:28:50 +0100toorevitimirp(~tooreviti@117.182.181.145)
2021-02-02 14:29:01 +0100 <merijn> ski: The "sane" behaviour is all downside from a practical usability point of view, though
2021-02-02 14:30:01 +0100 <ski> howso ?
2021-02-02 14:30:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) (Ping timeout: 264 seconds)
2021-02-02 14:30:06 +0100 <nshepperd2> ski: I'm very perplexed by this email. what do you do with ScopedTypeVariables other than bringing bound type variables into scope in the function body? isn't that the whole point...?
2021-02-02 14:30:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 14:30:55 +0100 <ski> nshepperd2 : the point is that it's bizarre that with `map :: forall a b. (a -> b) -> [a] -> [b]', those `a' and `b' tyvars scope over anything else than the body of the `forall', that is `(a -> b) -> [a] -> [b]'
2021-02-02 14:30:59 +0100 <merijn> ski: If I need to enable SCTV for a single function (which is often what I need/want) I need to modify all other code
2021-02-02 14:31:04 +0100 <aveltras> is this possible ?
2021-02-02 14:31:08 +0100 <aveltras> https://www.irccloud.com/pastebin/dNOkarHC/
2021-02-02 14:31:28 +0100 <merijn> ski: I have a module with 20 functions, 1 function needs SCTV. In your proposal how can I use SCTV without modifying the unrelated 19 functions?
2021-02-02 14:31:37 +0100alx741(~alx741@181.196.69.29)
2021-02-02 14:31:45 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net) (Ping timeout: 264 seconds)
2021-02-02 14:31:52 +0100 <ski> nshepperd2 : if one wrote `map :: (a -> b) -> [a] -> [b]', otoh, then it's much more reasonable to imagine an implicit `forall a b.' whose scope includes *both* the signature, and the defining equations
2021-02-02 14:31:53 +0100 <nshepperd2> ski: but that 'bizarre' behaviour is exactly the point of SCTV?
2021-02-02 14:32:10 +0100revprez_anzio(~revprez_a@pool-108-49-213-40.bstnma.fios.verizon.net)
2021-02-02 14:32:24 +0100 <merijn> nshepperd2: He wants the "forall" behaviour on everything without forall, and wants forall to limit the scope
2021-02-02 14:32:42 +0100 <ski> nshepperd2 : no, the point of the extension is to be able to refer to the type variables. the point isn't to have bizarre, anti-reasonable, scoping behaviour
2021-02-02 14:32:49 +0100cfricke(~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0)
2021-02-02 14:33:03 +0100 <merijn> ski: The entire selling point of the *current* design is that I can enable SCTV and modify 1 line on 1 function and it works
2021-02-02 14:33:20 +0100 <merijn> ski: Your proposed design involves enabling SCTV and modifying 19 or more functions
2021-02-02 14:33:40 +0100 <merijn> Hence my comment that it is regression in terms of practical usability
2021-02-02 14:34:36 +0100 <merijn> ski: You could introduce a new "opt-in" keyword, but now you have to invent a new keyword that's unlikely to class with any code
2021-02-02 14:34:49 +0100 <ski> well, if neither of those other definitions (re)use tyvars, then it's not a problem, so i assume you're talking about the case where you have local definitions with type signatures, or maybe type ascriptions
2021-02-02 14:34:57 +0100 <merijn> s/class/clash
2021-02-02 14:35:13 +0100 <ski> in that case, it sounds like the pragma suggestion could help
2021-02-02 14:35:14 +0100 <merijn> ski: *all* my local definitions have type signatures
2021-02-02 14:35:23 +0100 <idnar> @type \f g -> g . to f
2021-02-02 14:35:25 +0100 <lambdabot> (Profunctor p, Contravariant f) => (s -> a) -> (p s (f s) -> c) -> p a (f a) -> c
2021-02-02 14:35:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-02-02 14:35:32 +0100 <ski> yes, but do *all* your top-level definitions have local definitions ?
2021-02-02 14:35:42 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
2021-02-02 14:35:42 +0100 <merijn> ski: A significant number
2021-02-02 14:35:47 +0100 <merijn> I'd wager over 50%
2021-02-02 14:36:27 +0100 <merijn> ski: And I often reuse type variable, because using a type variable other than f/m/n for a functorial type feels off
2021-02-02 14:36:28 +0100 <idnar> @type \f g -> g . to f :: (a -> b) -> Getting a x a -> Getting b x b
2021-02-02 14:36:29 +0100 <lambdabot> error:
2021-02-02 14:36:29 +0100 <lambdabot> β€’ Couldn't match expected type β€˜(s0 -> f0 s0)
2021-02-02 14:36:29 +0100 <lambdabot> -> Getting a1 x1 a1 -> Getting b1 x1 b1’
2021-02-02 14:37:30 +0100skioften uses `g',`h',`i'
2021-02-02 14:37:46 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-02-02 14:38:02 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred)
2021-02-02 14:38:10 +0100gehmehgeh(~ircuser1@gateway/tor-sasl/gehmehgeh)
2021-02-02 14:38:14 +0100Nik05(~Nik05@85.150.134.175)
2021-02-02 14:38:31 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection)
2021-02-02 14:38:47 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2021-02-02 14:39:03 +0100TianGTY(~textual@103.116.47.86) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-02 14:40:26 +0100cfricke(~cfricke@unaffiliated/cfricke)
2021-02-02 14:41:12 +0100superfly1(~superfly@185.163.110.108)
2021-02-02 14:42:06 +0100 <ski> aveltras : not in a functorial way
2021-02-02 14:42:27 +0100JordiGH(jordi@octave/developer/JordiGH)
2021-02-02 14:42:44 +0100pera(~pera@unaffiliated/pera) (Quit: leaving)
2021-02-02 14:45:00 +0100 <aveltras> my use case is to give a getter to a function i don't really need to transform the original lens if i can map its target but i don't reember how
2021-02-02 14:45:02 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:2fa0:b1fa:9b56:867f) (Ping timeout: 264 seconds)
2021-02-02 14:46:36 +0100 <ski> aveltras : `fn f g h x = (Const . getConst . h . f . getConst) (g Const x)' works, i think. you could replace `getConst . h' in the body with `id'
2021-02-02 14:47:04 +0100elliott_(~elliott_@pool-108-51-101-42.washdc.fios.verizon.net)
2021-02-02 14:47:06 +0100 <ski> (and it'd do a different thing)
2021-02-02 14:47:52 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-02 14:48:23 +0100 <boxscape> are class dictionaries for classes with a single method implemented analogously to newtype instead of analogously to data?
2021-02-02 14:48:39 +0100 <boxscape> also, are class methods that don't take any arguments still called methods?
2021-02-02 14:49:00 +0100 <boxscape> (I guess they are at least functions in the sense that they do take an invisible dictionary)
2021-02-02 14:49:07 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-02 14:49:12 +0100carlomagno1(~cararell@148.87.23.5) (Remote host closed the connection)
2021-02-02 14:49:37 +0100 <merijn> boxscape: The dictionaries are an implementation detail of GHC, though
2021-02-02 14:49:43 +0100 <boxscape> right, I know
2021-02-02 14:50:11 +0100 <merijn> boxscape: so "at least they are functions" is doubly questionable :p
2021-02-02 14:50:24 +0100 <boxscape> there's a discussion about the performance of single-method versus multi-method dictionaries in a ghc proposal discussion with the argument that you can't use newtypes if a class has more than one method
2021-02-02 14:50:25 +0100 <boxscape> that's fair
2021-02-02 14:50:27 +0100 <ski> "are class methods that don't take any arguments still called methods?" -- yes, i'd say so
2021-02-02 14:50:29 +0100bitmagie(~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de)
2021-02-02 14:50:48 +0100jamm_(~jamm@unaffiliated/jamm)
2021-02-02 14:50:49 +0100 <ski> (e.g. `minBound',`mempty')
2021-02-02 14:50:56 +0100 <boxscape> okay
2021-02-02 14:51:01 +0100mmohammadi9812(~mmohammad@198.12.95.170) (Read error: Connection reset by peer)
2021-02-02 14:51:27 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 14:51:28 +0100mmohammadi9812(~mmohammad@2.178.175.70)
2021-02-02 14:51:49 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-02 14:51:57 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2021-02-02 14:52:01 +0100 <ski> (also note e.g. how `(==)' isn't a polymorphic method, while e.g. `return' is)
2021-02-02 14:52:23 +0100zaquest(~notzaques@5.128.210.178) (Quit: Leaving)
2021-02-02 14:52:28 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:530d:5016:5501:1cca)
2021-02-02 14:52:40 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-02 14:52:58 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection)
2021-02-02 14:53:21 +0100zaquest(~notzaques@5.128.210.178)
2021-02-02 14:53:27 +0100 <ski> boxscape : how about a class with only a single method, but which has superclass constraint(s) ?
2021-02-02 14:53:32 +0100kritzefitz(~kritzefit@212.86.56.80) (Remote host closed the connection)
2021-02-02 14:53:35 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-02 14:54:00 +0100 <boxscape> hm I'm not really sure how superclass constraints are handled
2021-02-02 14:54:10 +0100 <ski> as extra fields in the dictionary
2021-02-02 14:54:13 +0100 <boxscape> I see
2021-02-02 14:55:04 +0100bitmagie(~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de) (Client Quit)
2021-02-02 14:55:13 +0100 <boxscape> I guess then you could also do the newtype-equivalent thing for classes with 0 methods and one superclass constraint, but not any more
2021-02-02 14:55:15 +0100 <ski> "I guess they are at least functions in the sense that they do take an invisible dictionary" -- this only refers to the "external view"
2021-02-02 14:55:27 +0100justsomeguy(~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 2.9)
2021-02-02 14:55:27 +0100jamm_(~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds)
2021-02-02 14:55:57 +0100ski. o O ( `newclass Frob a => Foo a' )
2021-02-02 14:56:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
2021-02-02 14:58:51 +0100 <boxscape> the internal view being that they are a field of a dictionary, rather than functions that extract a field from a dictionary?
2021-02-02 14:59:08 +0100 <yorick> hey! what's the package called that can make swagger clients from openapi definitions?
2021-02-02 14:59:22 +0100 <ski> boxscape : well, that's related
2021-02-02 14:59:37 +0100 <ski> but you don't need to refer to the implementation
2021-02-02 14:59:48 +0100 <ski> @src Eq
2021-02-02 14:59:48 +0100 <lambdabot> class Eq a where
2021-02-02 14:59:48 +0100 <lambdabot> (==), (/=) :: a -> a -> Bool
2021-02-02 15:00:00 +0100 <merijn> Man..
2021-02-02 15:00:09 +0100 <merijn> I wish containers had symmetric difference :\
2021-02-02 15:00:14 +0100 <ski> note that the signature of `(==)' here does *not* include an elided `forall'
2021-02-02 15:00:19 +0100 <boxscape> ah, right
2021-02-02 15:00:23 +0100 <ski> (`(==)' is not a polymorphic method)
2021-02-02 15:01:16 +0100 <ski> but, `(==)', seen as an ordinary operation, rather than a method, *does* have signature `(==) :: forall a. Eq a => a -> a -> Bool', so not seen as a method, is it (constrained) polymorphic
2021-02-02 15:01:21 +0100 <ski> s/is it/it is/
2021-02-02 15:01:30 +0100 <boxscape> okay, got it
2021-02-02 15:02:16 +0100 <ski> similarly, the method `minBound :: a' in `Bounded a' is not polymorphic, but the operation `minBound :: forall a. Bounded a => a' is (but is not a function, although implemented as a (polymorphic) function from a dictionary)
2021-02-02 15:03:33 +0100 <ski> otoh e.g. `fmap :: forall a b. (a -> b) -> f a -> f b' in `Functor f' *is* polymorphic, and `traverse :: forall i a b. Applicative i => (a -> i b) -> t a -> i (t b)' in `Traversable t' is constrained polymorphic
2021-02-02 15:03:48 +0100 <boxscape> righ
2021-02-02 15:03:49 +0100 <boxscape> t
2021-02-02 15:04:50 +0100 <ski> (in terms of the dictionary translation, polymorphic methods would require use of the `PolymorphicComponents' (now usurped into the `Rank2Types'^W`RankNTypes' extension), because the fields themselves would be polymorphic
2021-02-02 15:04:54 +0100 <ski> )
2021-02-02 15:05:57 +0100 <boxscape> that makes sense
2021-02-02 15:06:12 +0100hyperisco(~hyperisco@104-195-141-253.cpe.teksavvy.com)
2021-02-02 15:06:18 +0100 <ski> it may be useful to compare with monomorphic vs. polymorphic recursion. inside the definition of `map', `map' is not polymorphic. it has type `(a -> b) -> [a] -> [b]' for specific (unknown) types `a',`b'
2021-02-02 15:06:20 +0100 <boxscape> I remember reading up about the difference between those when trying to use RankNTypes in Java, which only has PolymorphicComponents
2021-02-02 15:06:26 +0100Guest44411shapr
2021-02-02 15:06:55 +0100shaprGuest92861
2021-02-02 15:06:59 +0100Guest92861shapr`
2021-02-02 15:07:29 +0100shapr`(~shapr@162.243.9.169) (Changing host)
2021-02-02 15:07:29 +0100shapr`(~shapr@haskell/developer/shapr)
2021-02-02 15:07:31 +0100jedws(~jedws@121.209.199.128) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2021-02-02 15:08:57 +0100 <ski> (error messages will talk about "rigid" tyvars. at some point, they mentioned "skolems", which is the same thing. point being that, from the POV of a producer/callee/implementor of a polymorphic value, the tyvars in question act like abstract data types, about which nothing is known, which only unify with themselves. they're "skolem constants", unknown, forgotten, hidden, opaque, abstract)
2021-02-02 15:09:23 +0100 <boxscape> don't they say "rigid skolem" even?
2021-02-02 15:09:52 +0100 <ski> % let f :: a -> a; f _ = False
2021-02-02 15:09:52 +0100 <yahb> ski: ; <interactive>:99:24: error:; * Couldn't match expected type `a' with actual type `Bool'; `a' is a rigid type variable bound by; the type signature for:; f :: forall a. a -> a; at <interactive>:99:5-15; * In the expression: False; In an equation for `f': f _ = False; * Relevant bindings include f :: a -> a (bound at <interactive>:99:18)
2021-02-02 15:10:00 +0100 <boxscape> hm
2021-02-02 15:10:03 +0100 <dminuoso> boxscape: GHC is somewhat inconsistent with the uses of the words "rigid" and "skolem"
2021-02-02 15:10:10 +0100 <boxscape> I see
2021-02-02 15:10:19 +0100skilikes the term "skolem"
2021-02-02 15:10:45 +0100 <ski> (because it doesn't come preloaded with baggage)
2021-02-02 15:10:58 +0100jedws(~jedws@121.209.199.128)
2021-02-02 15:11:00 +0100 <ski> (but the other terms can also be fine)
2021-02-02 15:11:04 +0100 <boxscape> Unless you have preconceptions about norwegians
2021-02-02 15:11:22 +0100 <ski> most people wouldn't even know it's named after Thoralf Skolem :)
2021-02-02 15:11:31 +0100 <boxscape> that's fair
2021-02-02 15:12:10 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 15:12:21 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 15:12:22 +0100 <ski> anyway, sometimes people associate skolems/rigids/whatever with `forall's .. which is a misunderstanding
2021-02-02 15:12:44 +0100 <ski> (or, at least, can be)
2021-02-02 15:13:13 +0100 <ski> the same issue occurs in logic programming languages
2021-02-02 15:15:01 +0100jedws(~jedws@121.209.199.128) (Client Quit)
2021-02-02 15:15:45 +0100Major_Biscuit(~Major_Bis@82-169-100-198.biz.kpn.net) (Ping timeout: 240 seconds)
2021-02-02 15:15:48 +0100mmmattyx(uid17782@gateway/web/irccloud.com/x-fhsjdgdsmsucvkhr)
2021-02-02 15:16:27 +0100carlomagno(~cararell@148.87.23.4)
2021-02-02 15:17:34 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
2021-02-02 15:18:11 +0100Major_Biscuit(~Major_Bis@x065156.citg-m.tudelft.nl)
2021-02-02 15:19:19 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-02 15:20:39 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-02-02 15:20:49 +0100frozenErebus(~frozenEre@37.231.239.43)
2021-02-02 15:21:05 +0100kritzefitz(~kritzefit@212.86.56.80) (Client Quit)
2021-02-02 15:21:36 +0100usr25(~usr25@unaffiliated/usr25) ("Leaving")
2021-02-02 15:24:16 +0100jpds_(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-02 15:24:40 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-02-02 15:25:35 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 272 seconds)
2021-02-02 15:26:06 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8)
2021-02-02 15:26:33 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving)
2021-02-02 15:28:53 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 15:29:30 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 15:29:57 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer)
2021-02-02 15:30:13 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 15:30:14 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 15:30:38 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Ping timeout: 264 seconds)
2021-02-02 15:30:49 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 15:30:57 +0100geekosaur(82650c7c@130.101.12.124) (Ping timeout: 248 seconds)
2021-02-02 15:33:28 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 15:35:05 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 240 seconds)
2021-02-02 15:38:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-02-02 15:39:18 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-02 15:40:08 +0100geekosaur(82650c7c@130.101.12.124)
2021-02-02 15:44:33 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 15:44:37 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 15:45:10 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 15:48:52 +0100raym(~ray@45.64.220.55) (Quit: leaving)
2021-02-02 15:49:10 +0100raym(~ray@45.64.220.55)
2021-02-02 15:49:31 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 258 seconds)
2021-02-02 15:52:12 +0100deviantfero(~deviantfe@190.150.27.58) (Ping timeout: 272 seconds)
2021-02-02 15:54:49 +0100dcoutts__(~duncan@85.186.125.91.dyn.plus.net) (Remote host closed the connection)
2021-02-02 15:55:28 +0100dcoutts__(~duncan@85.186.125.91.dyn.plus.net)
2021-02-02 15:56:25 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
2021-02-02 15:56:35 +0100geekosaur(82650c7c@130.101.12.124) (Quit: Connection closed)
2021-02-02 15:58:30 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-02 15:58:54 +0100KeyJoo(~KeyJoo@46.249.12.62)
2021-02-02 15:59:09 +0100Jd007(~Jd007@162.156.11.151)
2021-02-02 16:08:24 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-02 16:09:58 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-02-02 16:10:14 +0100cfricke(~cfricke@unaffiliated/cfricke) (Ping timeout: 264 seconds)
2021-02-02 16:10:29 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-02-02 16:12:32 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-02 16:13:30 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de)
2021-02-02 16:14:05 +0100wei2912(~wei2912@unaffiliated/wei2912) (Quit: Lost terminal)
2021-02-02 16:14:44 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-02-02 16:14:54 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 16:15:33 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 264 seconds)
2021-02-02 16:17:00 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 16:17:30 +0100toorevitimirp(~tooreviti@117.182.181.145) (Remote host closed the connection)
2021-02-02 16:17:42 +0100pgib(~textual@lmms/pgib) (Ping timeout: 265 seconds)
2021-02-02 16:18:23 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 16:18:24 +0100mbomba(~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca)
2021-02-02 16:18:35 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 16:19:25 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 16:21:27 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Ping timeout: 246 seconds)
2021-02-02 16:23:33 +0100fresheyeball(~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com)
2021-02-02 16:24:05 +0100son0p(~son0p@181.136.122.143)
2021-02-02 16:24:30 +0100hiroaki(~hiroaki@ip4d167562.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds)
2021-02-02 16:26:42 +0100lambda(~xiretza@213-47-232-21.cable.dynamic.surfer.at) (Ping timeout: 246 seconds)
2021-02-02 16:26:57 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8)
2021-02-02 16:27:09 +0100Guest_47(0597b1e0@5.151.177.224)
2021-02-02 16:27:21 +0100Guest_47(0597b1e0@5.151.177.224) (Client Quit)
2021-02-02 16:27:45 +0100thefybe(~thefybe@249-147-161-N2.customer.vsm.sh) (Ping timeout: 246 seconds)
2021-02-02 16:31:18 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Ping timeout: 258 seconds)
2021-02-02 16:31:28 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net)
2021-02-02 16:33:19 +0100tdammers(~tdammers@unaffiliated/tdammers) (Ping timeout: 256 seconds)
2021-02-02 16:34:25 +0100hiroaki(~hiroaki@ip4d167562.dynamic.kabel-deutschland.de)
2021-02-02 16:36:00 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 16:36:15 +0100tdammers(~tdammers@unaffiliated/tdammers)
2021-02-02 16:37:22 +0100lambda(~xiretza@mail.xiretza.xyz)
2021-02-02 16:40:36 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 16:40:41 +0100deviantfero(~deviantfe@190.150.27.58)
2021-02-02 16:41:50 +0100shapr`shapr
2021-02-02 16:42:24 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 16:42:59 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 16:44:25 +0100Guest93718mrd
2021-02-02 16:44:36 +0100mrd(~mrd@45.61.147.211) (Changing host)
2021-02-02 16:44:36 +0100mrd(~mrd@debian/developer/mrd)
2021-02-02 16:46:18 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 16:46:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 16:47:03 +0100ADG1089__(~aditya@223.236.190.35)
2021-02-02 16:47:08 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 16:47:20 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 16:47:28 +0100ubert(~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds)
2021-02-02 16:47:31 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
2021-02-02 16:48:33 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 16:49:30 +0100vicfred(vicfred@gateway/vpn/mullvad/vicfred)
2021-02-02 16:52:30 +0100 <nshepperd> i feel like i have a rough understanding of what "skolem" means, in approximately direct proportion to how much i understand ghc's type checking algorithm
2021-02-02 16:53:26 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 264 seconds)
2021-02-02 16:55:23 +0100BrianZ(c0f3da07@gateway/web/cgi-irc/kiwiirc.com/ip.192.243.218.7)
2021-02-02 16:55:36 +0100 <dolio> When does GHC use 'skolem'? I tried a couple things and it always said, 'rigid'.
2021-02-02 16:55:43 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 16:55:47 +0100lortabac(587d06e3@88.125.6.227)
2021-02-02 16:55:58 +0100 <dolio> It even said rigid for the example I found on a blog post that was supposed to mention 'skolem'.
2021-02-02 16:56:35 +0100 <boxscape> dolio I guess ski was right when he said "at some point, they mentioned 'skolems'", with emphasis on the past tense
2021-02-02 16:56:57 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-02 16:57:09 +0100 <boxscape> from what I can see it used to be `skolem`, then `(rigid, skolem)`, and now rigid
2021-02-02 16:57:23 +0100 <boxscape> but there might be differences depending on the exact kind of error
2021-02-02 16:57:24 +0100 <dolio> Okay.
2021-02-02 16:57:27 +0100 <ski> @quote skolem
2021-02-02 16:57:27 +0100 <lambdabot> byorgey says: Escaped skolem! Authorities mount massive search. News at 11.
2021-02-02 16:57:30 +0100pera(~pera@unaffiliated/pera)
2021-02-02 16:57:31 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 16:57:51 +0100 <dolio> Yeah, the vague idea I had was that it might use "skolem" when talking about the scope escape check.
2021-02-02 16:57:56 +0100 <dolio> But I couldn't get it to do that.
2021-02-02 16:57:59 +0100 <int-e> @ghc
2021-02-02 16:57:59 +0100 <lambdabot> absApply: Duff function
2021-02-02 16:58:06 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-02-02 16:58:21 +0100conal(~conal@64.71.133.70)
2021-02-02 16:58:28 +0100 <boxscape> https://gitlab.haskell.org/ghc/ghc/-/issues/4499
2021-02-02 16:58:35 +0100 <boxscape> ^ it was changed once here
2021-02-02 16:58:47 +0100 <dolio> Because there are basically two different checks that are both attributed to skolem variables sometimes, and "rigid" better describes one of them.
2021-02-02 16:58:48 +0100toorevitimirp(~tooreviti@117.182.181.145)
2021-02-02 16:58:53 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 16:59:53 +0100 <dolio> I guess they just use rigid for both, though.
2021-02-02 16:59:56 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com)
2021-02-02 17:00:47 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer)
2021-02-02 17:00:55 +0100Narinas(~Narinas@189.223.62.254.dsl.dyn.telnor.net)
2021-02-02 17:01:08 +0100ubert(~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de)
2021-02-02 17:02:28 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com) (Client Quit)
2021-02-02 17:02:34 +0100 <ski> "\"skolem\" is a hindrance to usability because \"skolem\" is not a well known term" -- that can atguably be a good thing
2021-02-02 17:02:44 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 17:02:44 +0100 <boxscape> I agree
2021-02-02 17:02:47 +0100 <ski> s/atguably/arguably/
2021-02-02 17:02:51 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com)
2021-02-02 17:03:15 +0100 <ski> (and how could a term become well known, if not by using it ?)
2021-02-02 17:03:42 +0100 <boxscape> oh actually I missed a step, apparently is was also rigid *before* is was skolem, judging by that comment thread
2021-02-02 17:03:54 +0100mananamenos(~mananamen@84.122.202.215.dyn.user.ono.com) (Client Quit)
2021-02-02 17:04:01 +0100Widget_(~widget@213.55.241.69) ()
2021-02-02 17:04:10 +0100honigkuchen(~honigkuch@ip5b429953.dynamic.kabel-deutschland.de)
2021-02-02 17:04:13 +0100pgib(~textual@lmms/pgib)
2021-02-02 17:04:28 +0100 <dolio> Yeah. That probably changed during some large scale algorithm change in the type checker.
2021-02-02 17:04:38 +0100 <honigkuchen> are everything that is inside of predicates states? (as in functional languages you have also some sort of predicates )
2021-02-02 17:04:54 +0100 <dolio> Where the paper introducing the new algorithm used the term "skolem".
2021-02-02 17:05:01 +0100 <boxscape> makes sense
2021-02-02 17:05:03 +0100 <ski> i guess i'm not too fond of "rigid (type) variable", because of the presence of the word "variable"
2021-02-02 17:05:40 +0100 <ski> (people talk about "skolem constants" (and "skolem functions"))
2021-02-02 17:06:40 +0100 <boxscape> honigkuchen for what it's worth, to me it's unclear what you mean by predicate here
2021-02-02 17:07:06 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection)
2021-02-02 17:07:27 +0100 <ski> (btw, to clarify, the arguably good thing would not be the hindrance, but it not previously being a well known term. the argument being that that could be a boon to usability, rather than a hindrance)
2021-02-02 17:07:41 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl)
2021-02-02 17:07:56 +0100 <ski> (because it would be less likely to be mixed up with preexisting connotation baggage of the term)
2021-02-02 17:08:05 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 240 seconds)
2021-02-02 17:08:18 +0100berberman(~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in)
2021-02-02 17:08:24 +0100 <honigkuchen> boxscape, well okay yes, I know that prolog is used for ai and sometimes functional languages are used for ai too, for the same type of ai, so haskell should have also ways to make these ai's, prolog has predicates, and functions do a similar job as predicates
2021-02-02 17:08:27 +0100 <ski> (the question then would be whether said baggage would be more a hindrance, or more of a help)
2021-02-02 17:08:41 +0100polyphem(~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889)
2021-02-02 17:08:42 +0100darjeeling_(~darjeelin@115.215.41.65) (Ping timeout: 246 seconds)
2021-02-02 17:08:44 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 17:09:21 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-02-02 17:10:01 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 17:10:35 +0100 <boxscape> honigkuchen generally speaking I don't think Prolog predicates are seen as being stateful, and neither are haskell functions (in general). Though maybe that's not what you meant by states.
2021-02-02 17:10:35 +0100Tario(~Tario@201.192.165.173)
2021-02-02 17:10:40 +0100thefybe(~thefybe@249-147-161-N2.customer.vsm.sh)
2021-02-02 17:10:44 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-02-02 17:11:29 +0100 <honigkuchen> boxscape, what is stateful
2021-02-02 17:11:35 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 17:11:51 +0100LKoen(~LKoen@252.248.88.92.rev.sfr.net) (Remote host closed the connection)
2021-02-02 17:11:51 +0100niekvandepas(~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 246 seconds)
2021-02-02 17:12:14 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-02-02 17:12:59 +0100 <boxscape> honigkuchen I'd say a stateful function is one that does not just depend on its inputs, but also on some state that can be read or modified.
2021-02-02 17:13:01 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 17:13:07 +0100shiraeeshi(~shiraeesh@77.94.25.42)
2021-02-02 17:13:27 +0100 <boxscape> for example, in object oriented programming, most object methods depend on the state of the object rather than just their inputs
2021-02-02 17:13:44 +0100 <boxscape> s/inputs/arguments
2021-02-02 17:13:57 +0100 <honigkuchen> I get it
2021-02-02 17:14:05 +0100lortabac(587d06e3@88.125.6.227) (Quit: Connection closed)
2021-02-02 17:14:18 +0100metreo(~Thunderbi@unaffiliated/metreo)
2021-02-02 17:14:19 +0100toorevitimirp(~tooreviti@117.182.181.145) (Remote host closed the connection)
2021-02-02 17:14:24 +0100berberman(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-02-02 17:14:34 +0100 <dolio> Variables being rigid is the normal case in mathematics, though. Unification variables are the odd ball.
2021-02-02 17:15:09 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 17:15:38 +0100 <honigkuchen> dolio, this is what I mean
2021-02-02 17:15:46 +0100 <ski> unification variables are arguably used, when making an Ansatz
2021-02-02 17:15:48 +0100ADG1089__(~aditya@223.236.190.35) (Remote host closed the connection)
2021-02-02 17:15:54 +0100 <honigkuchen> in programming languages they change
2021-02-02 17:16:09 +0100 <ski> honigkuchen : not in all languages
2021-02-02 17:16:21 +0100 <honigkuchen> yes
2021-02-02 17:16:21 +0100 <ski> (neither in Haskell nor in Prolog, e.g.)
2021-02-02 17:16:49 +0100 <honigkuchen> but afaik then they are not called variabels
2021-02-02 17:17:34 +0100 <ski> (and solving an equation can fit into the framework of making an Ansatz, although usually for an Ansatz one wants a unique solution, i think)
2021-02-02 17:17:43 +0100 <ski> honigkuchen : yes, they are
2021-02-02 17:18:03 +0100 <honigkuchen> what is an ansatz
2021-02-02 17:18:25 +0100 <honigkuchen> ski aren't they called constants then instead?
2021-02-02 17:18:54 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 17:19:01 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
2021-02-02 17:19:15 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 17:20:38 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
2021-02-02 17:20:55 +0100LKoen(~LKoen@252.248.88.92.rev.sfr.net)
2021-02-02 17:21:25 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 17:21:45 +0100jespada(~jespada@90.254.242.138) (Ping timeout: 240 seconds)
2021-02-02 17:21:49 +0100 <honigkuchen> educated guess
2021-02-02 17:21:56 +0100 <honigkuchen> that is an ansatz
2021-02-02 17:23:20 +0100darjeeling_(~darjeelin@122.245.120.134)
2021-02-02 17:23:26 +0100 <JordiGH> I always think of ansatzes in the context of PDEs.
2021-02-02 17:23:51 +0100 <ski> it's an "educated guess". e.g. when doing partial fraction decomposition, we may have say ⌜1 βˆ• (x⁴ βˆ’ 1)⌝, and may want to write this as a sum of fractions with denominators ⌜xΒ² + 1⌝,⌜x + 1⌝,⌜x βˆ’ 1⌝. so, we make an Ansatz, introducing new variables ⌜A⌝,⌜B⌝,⌜C⌝,⌜D⌝, and solve the equation ⌜1 βˆ• (x⁴ βˆ’ 1) = (Aβ‹…x + B) βˆ• (xΒ² + 1) + B βˆ• (x + 1) + C βˆ• (x βˆ’
2021-02-02 17:23:54 +0100 <JordiGH> Like how in separation of variables your ansatz is f(x,y) = X(x)T(t) or something.
2021-02-02 17:23:57 +0100 <ski> 1)⌝ for them
2021-02-02 17:24:05 +0100 <JordiGH> Right, or that.
2021-02-02 17:24:27 +0100 <JordiGH> It's when you say a priori without real good reason, suppose the solution looks like this, and you plug it in, and wow, it actually worked.
2021-02-02 17:24:36 +0100 <ski> so, ⌜A⌝,⌜B⌝,⌜C⌝,⌜D⌝ here act like unification/logic variables
2021-02-02 17:24:53 +0100jespada(~jespada@90.254.242.138)
2021-02-02 17:25:21 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-02 17:25:53 +0100KeyJoo(~KeyJoo@46.249.12.62) (Quit: KeyJoo)
2021-02-02 17:26:11 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz)
2021-02-02 17:26:19 +0100Wuzzy(~Wuzzy@p5b0df175.dip0.t-ipconnect.de)
2021-02-02 17:26:26 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 264 seconds)
2021-02-02 17:26:54 +0100 <ski> honigkuchen : no, e.g. ⌜x⌝ in ⌜f(x) = xΒ² βˆ’ x βˆ’ 1⌝, or `x' in `allEqual xs = all (\x -> x == head xs) xs' are both called variables, even though neither changes (in the sense of imperative programming languages)
2021-02-02 17:27:13 +0100 <JordiGH> Okay where are you getting the fancy ceil characters
2021-02-02 17:27:22 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8)
2021-02-02 17:27:53 +0100 <ski> Quine quotes, not ceiling. ceiling is βŒœβŒˆβ‹―βŒ‰βŒ
2021-02-02 17:28:14 +0100emptyflask(~jon@136.49.71.178)
2021-02-02 17:28:51 +0100 <boxscape> huh weird, the right ceiling character has a longer descender than the left one in my font
2021-02-02 17:29:06 +0100frozenErebus(~frozenEre@37.231.239.43) (Ping timeout: 272 seconds)
2021-02-02 17:29:09 +0100 <ski> weird indeed
2021-02-02 17:29:57 +0100 <shiraeeshi> having immutable variables is handy in a lot of cases
2021-02-02 17:30:15 +0100frozenErebus(~frozenEre@37.231.239.43)
2021-02-02 17:30:27 +0100 <shiraeeshi> but from the runtime point of view it sounds like a waste of memory
2021-02-02 17:30:41 +0100 <ski> honigkuchen : btw, from a particular viewpoint, constants, parameters, variables, are all variables (just bound in wider or narrower scopes)
2021-02-02 17:30:42 +0100 <shiraeeshi> so what happens under the hood?
2021-02-02 17:30:45 +0100niekvandepas(~niekvande@89.205.129.95)
2021-02-02 17:30:54 +0100shapris caught when the hood closes on him
2021-02-02 17:31:50 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Ping timeout: 264 seconds)
2021-02-02 17:32:03 +0100 <shiraeeshi> I mean, it would make sense to have immutable constants in the language level, but represent them with mutable variables at runtime
2021-02-02 17:32:30 +0100 <shiraeeshi> for example, tail recursion
2021-02-02 17:32:42 +0100ski. o O ( <https://hackage.haskell.org/package/hood>,<https://hackage.haskell.org/package/GHood> )
2021-02-02 17:32:45 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 17:33:18 +0100 <shapr> shiraeeshi: yeah, that happens in a bunch of places
2021-02-02 17:33:30 +0100 <ski> tail recursion doesn't have anything directly to do with immutability
2021-02-02 17:33:37 +0100 <shapr> There's also ST where you get the best of both worlds.
2021-02-02 17:34:16 +0100knupfer(~Thunderbi@200116b82c1c270094caa69472e071be.dip.versatel-1u1.de) (Quit: knupfer)
2021-02-02 17:34:21 +0100 <ski> tail recursion would usually be implemented in a way that the generated machine code is close to, or identical, to that of updating mutable cells in a loop, though
2021-02-02 17:34:22 +0100 <shiraeeshi> I mean you can translate tail recursion to a loop with mutable variables
2021-02-02 17:34:31 +0100knupfer(~Thunderbi@200116b82c1c2700c12d39353ed78eec.dip.versatel-1u1.de)
2021-02-02 17:34:37 +0100 <shapr> Or even further, to zero stack frame calls?
2021-02-02 17:34:49 +0100 <shapr> wait, that's the same thing isn't it?
2021-02-02 17:35:00 +0100 <shapr> I think so!
2021-02-02 17:35:10 +0100 <ski> function calls don't push stack
2021-02-02 17:36:02 +0100mmohammadi9812(~mmohammad@2.178.175.70) (Remote host closed the connection)
2021-02-02 17:36:13 +0100ski. o O ( "Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO" by Guy Lewis Steele Jr. in 1977-10-01 at <https://dspace.mit.edu/handle/1721.1/5753> )
2021-02-02 17:36:25 +0100mmohammadi9812(~mmohammad@2.178.175.70)
2021-02-02 17:36:58 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection)
2021-02-02 17:37:38 +0100 <shapr> ski: did you see the Haskell Foundation board announcement? Looks like it'll be a great bunch of people!
2021-02-02 17:37:47 +0100 <ski> i did not
2021-02-02 17:38:16 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 240 seconds)
2021-02-02 17:40:19 +0100 <ski> shiraeeshi : anyway, sharing of immutable structures can often be a win, over having to defensively (deep) copy (/clone), on the off-chance that someone else mutates it behind your back. of course, it's a matter of to which extent referring to previous or alternative versions may be useful. but if it's not cheap or convenient to refer to such, that may discourage one from exploring situations where doing
2021-02-02 17:40:22 +0100son0p(~son0p@181.136.122.143)
2021-02-02 17:40:26 +0100 <ski> that may be helpful
2021-02-02 17:40:32 +0100xff0x_(~xff0x@2001:1a81:5334:6300:b71d:b02d:8cc6:d6fd) (Ping timeout: 260 seconds)
2021-02-02 17:40:43 +0100 <ski> shapr : have any link handy ?
2021-02-02 17:40:45 +0100nbloomf(~nbloomf@2600:1700:ad14:3020:fc44:c2d6:2605:3850)
2021-02-02 17:41:07 +0100 <shiraeeshi> or, let's say I use two constants in a function: a and b, I use I first and then I use b, their scopes don't interlieve. It sounds like it makes sense to use a single slot of memory for them.
2021-02-02 17:41:12 +0100xff0x_(~xff0x@2001:1a81:5334:6300:2a2:5b2e:3d52:cffc)
2021-02-02 17:41:22 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8)
2021-02-02 17:41:33 +0100 <kuribas> ski: we have some java code that is immutable, and where we actually have to copy because the java standard library doesn't support immutable structures.
2021-02-02 17:41:38 +0100JordiGH(jordi@octave/developer/JordiGH) ("Leaving")
2021-02-02 17:41:43 +0100 <shapr> ski: https://discourse.haskell.org/t/announcing-the-haskell-foundation-board/1811
2021-02-02 17:41:52 +0100 <ski> shiraeeshi : yes. that's an implementation issue. let the implementation worry about that
2021-02-02 17:42:19 +0100 <ski> ty
2021-02-02 17:42:21 +0100 <shiraeeshi> my question is, does haskell optimise such cases?
2021-02-02 17:42:43 +0100 <merijn> "Yes, no, maybe"
2021-02-02 17:42:44 +0100 <merijn> Also
2021-02-02 17:42:47 +0100 <merijn> Pedantic sidenote
2021-02-02 17:42:59 +0100 <merijn> The correct question is: "does GHC optimise such cases?"
2021-02-02 17:43:17 +0100 <shapr> shiraeeshi: If you mean sharing between immutable data, then yes?
2021-02-02 17:43:28 +0100 <merijn> Haskell is just a specification, it doesn't do anything
2021-02-02 17:43:44 +0100 <shiraeeshi> I mean preventing memory waste introduced by immutability
2021-02-02 17:43:54 +0100 <merijn> Why does immutability waste memory?
2021-02-02 17:44:07 +0100 <kuribas> If you write a strict loop with strict accumulator, I think ghc will implement it as a register that's mutated.
2021-02-02 17:44:10 +0100 <c_wraith> what do functions have to do with immutability?
2021-02-02 17:44:17 +0100j2t(~user@84.122.202.215.dyn.user.ono.com)
2021-02-02 17:44:40 +0100 <kuribas> shiraeeshi: generating garbage is cheap in ghc, because of the copying garbage collector.
2021-02-02 17:44:42 +0100 <merijn> kuribas: Well, that depends on your accumulator :p
2021-02-02 17:44:52 +0100 <merijn> kuribas: Good luck fitting a Map in your registers :p
2021-02-02 17:45:10 +0100 <kuribas> merijn: I mean like an integer
2021-02-02 17:45:22 +0100 <c_wraith> yeah, that won't fit in your register either. :P
2021-02-02 17:45:26 +0100 <kuribas> Int, not Integer though
2021-02-02 17:45:31 +0100shaprbuys a bigger register
2021-02-02 17:45:32 +0100j2t(~user@84.122.202.215.dyn.user.ono.com) (Remote host closed the connection)
2021-02-02 17:45:47 +0100 <kuribas> if you want performance, don't use Integer.
2021-02-02 17:45:56 +0100j2t(~user@84.122.202.215.dyn.user.ono.com)
2021-02-02 17:45:59 +0100 <Uniaika> use Word8 like the rest of us
2021-02-02 17:45:59 +0100 <Uniaika> :P
2021-02-02 17:46:15 +0100 <merijn> Uniaika: Literally zero benefit to Word8 over Word64, though :p
2021-02-02 17:46:22 +0100 <shiraeeshi> :merjin, you can use single variable to represent two values if it is mutable, you have to create two immutable variables to represent two values. Sounds like a memory waste.
2021-02-02 17:46:24 +0100 <Uniaika> merijn: is that so?
2021-02-02 17:46:28 +0100 <merijn> Also, if you want speed you clearly want Int64#
2021-02-02 17:46:30 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2021-02-02 17:46:35 +0100 <Uniaika> ah, yes
2021-02-02 17:46:38 +0100 <merijn> Uniaika: Word8 is machine word siz
2021-02-02 17:46:51 +0100vnz(~vnz@unaffiliated/vnz) (Quit: ZNC - http://znc.in)
2021-02-02 17:46:55 +0100 <kuribas> Uniaika: less storage space
2021-02-02 17:46:56 +0100 <merijn> So, 8 bytes on 64bit machine and exactly as big as Word64 :p
2021-02-02 17:46:59 +0100 <int-e> > Seq.length $ iterate (\x -> x <> x) (Seq.singleton ()) !! 63
2021-02-02 17:47:00 +0100 <lambdabot> -9223372036854775808
2021-02-02 17:47:11 +0100 <shapr> shiraeeshi: if you change add some elements to a list, the common parts of the old and new list will share memory. Does that help?
2021-02-02 17:47:18 +0100 <merijn> shiraeeshi: Why does number of variables affect memory at all?
2021-02-02 17:47:33 +0100 <Uniaika> shiraeeshi: yeah but garbage is efficiently collected in GHC, and we have fusion for a bunch of datastructures, so we can avoid intermediate structures during a computation
2021-02-02 17:47:43 +0100 <merijn> I can have a million immutable variables and have the same space usage as having 1
2021-02-02 17:47:52 +0100 <kuribas> merijn: also possible better cache locality
2021-02-02 17:48:02 +0100 <merijn> kuribas: For what?
2021-02-02 17:48:16 +0100carlomagno(~cararell@148.87.23.4) (Ping timeout: 240 seconds)
2021-02-02 17:48:18 +0100 <kuribas> merijn: for having a lot of Word8 vs a lot of Word64
2021-02-02 17:48:33 +0100 <merijn> kuribas: Word8 is the same size as Word64...
2021-02-02 17:48:38 +0100 <merijn> kuribas: And both are boxed...
2021-02-02 17:48:48 +0100vnz(~vnz@2001:bc8:604:94f::1)
2021-02-02 17:48:48 +0100vnz(~vnz@2001:bc8:604:94f::1) (Changing host)
2021-02-02 17:48:48 +0100vnz(~vnz@unaffiliated/vnz)
2021-02-02 17:48:52 +0100 <c_wraith> shiraeeshi: it sounds like you're trying to ask about call stack allocation, which is the weirdest thing to be worried about - and GHC doesn't work like that anyway
2021-02-02 17:48:58 +0100 <shiraeeshi> :merjin, million immutable variables same as one?
2021-02-02 17:49:12 +0100 <kuribas> merijn: erm, I was thinking about a Vector with Word8...
2021-02-02 17:49:16 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 17:49:35 +0100 <merijn> kuribas: Only if you use, like, Storable
2021-02-02 17:49:43 +0100 <kuribas> right
2021-02-02 17:49:49 +0100 <c_wraith> Unbox should be sufficient
2021-02-02 17:49:50 +0100 <merijn> kuribas: And that's a property of the Storable instance, not of Word8 :p
2021-02-02 17:50:05 +0100 <merijn> shiraeeshi: If they all point to the same value, yes
2021-02-02 17:50:07 +0100gproto023(~gproto23@unaffiliated/gproto23)
2021-02-02 17:50:10 +0100 <kuribas> merijn: and if you use an "unpacked" Word8 ?
2021-02-02 17:50:19 +0100 <merijn> shiraeeshi: variables don't have size nor do they use memory
2021-02-02 17:50:26 +0100 <merijn> shiraeeshi: The values they refer to do
2021-02-02 17:50:34 +0100 <kuribas> merijn: I mean, like a product type with 4 of them?
2021-02-02 17:50:40 +0100 <merijn> If a million variables refer to 1 value, there's no extra space
2021-02-02 17:50:53 +0100gproto023(~gproto23@unaffiliated/gproto23) (Client Quit)
2021-02-02 17:50:54 +0100 <merijn> kuribas: If you unpack it'll be 8 bytes
2021-02-02 17:51:08 +0100 <int-e> shiraeeshi: immutability allows worry-free sharing... which is pretty essential for lazy evaluation
2021-02-02 17:51:17 +0100 <merijn> kuribas: https://hackage.haskell.org/package/base-4.14.1.0/docs/src/GHC.Word.html#Word8
2021-02-02 17:51:34 +0100 <merijn> kuribas: Note that Word# is just a machine word
2021-02-02 17:51:36 +0100 <shiraeeshi> :merjin, I was talking about a case when you have million values, but their scopes don't interlieve, so you can represent them with a single mutable variable.
2021-02-02 17:52:09 +0100 <merijn> shiraeeshi: What's stopping you from GCing the values when it's no longer needed?
2021-02-02 17:52:22 +0100 <int-e> shiraeeshi: in that case they probably won't be alive at the same time in a lazy language either
2021-02-02 17:52:44 +0100 <int-e> so yeah, GC will probably save the day
2021-02-02 17:52:57 +0100 <shapr> ski: have you read Algebra Driven Design, Thinking With Types, or Optics By Example?
2021-02-02 17:53:02 +0100 <shiraeeshi> :c_wraith, why do you say that call stack allocation is a weird thing to be worried about? What makes more sense to worry about in terms of memory? Data structures?
2021-02-02 17:53:57 +0100 <ph88> hey guys what is the best way to handle an import/include statement when writing a parser ? run the parser in IO and launch another parser for the source to be imported or what could i do ?
2021-02-02 17:54:14 +0100 <merijn> shiraeeshi: Well, GHC haskell doesn't *have* a call stack, for one
2021-02-02 17:54:37 +0100 <c_wraith> shiraeeshi: because the call stack is a stack. in languages that use it, when something returns, nothing that was on the stack exists anymore.
2021-02-02 17:55:12 +0100 <kuribas> shiraeeshi: ADTs are not very efficient in terms of memory storage. Most of the time that doesn't matter.
2021-02-02 17:56:24 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 17:56:41 +0100 <c_wraith> shiraeeshi: but yeah, GHC doesn't have a call stack, because call stacks and laziness don't mix. It uses the stack for nested evaluation instead.
2021-02-02 17:57:32 +0100 <int-e> maybe don't use Haskell if you can't afford a factor of 4 increase in memory usage over what's strictly necessary, not counting blobs that would be bytestrings which are often pinned bytearrays.
2021-02-02 17:58:02 +0100 <merijn> int-e: tbh, Haskell's pretty thrifty on a lot of my code
2021-02-02 17:58:09 +0100 <kuribas> int-e: you could always use storable to write to bytestrings...
2021-02-02 17:58:09 +0100mmohammadi9812(~mmohammad@2.178.175.70) (Ping timeout: 264 seconds)
2021-02-02 17:58:33 +0100 <merijn> kuribas: Storable Vector to ByteString, the pro's way to serialise :p
2021-02-02 17:58:36 +0100 <int-e> kuribas: that's tedious, so much marshalling
2021-02-02 17:58:51 +0100 <kuribas> int-e: high performance is tedious :-)
2021-02-02 17:59:27 +0100 <dolio> "Call stacks" are kind of a fundamentally sub-optimal idea anyway.
2021-02-02 17:59:57 +0100 <kuribas> or just store your data in a database like LMDB.
2021-02-02 18:00:24 +0100 <int-e> kuribas: also, I put "maybe" there for a reason. if you can afford the memory, doing things in Haskell should not cause you headaches on the memory usage side, apart from potential accumulating thunks
2021-02-02 18:00:24 +0100 <kuribas> Which also solves the problem of having large GC pauses because of a large live data size.
2021-02-02 18:00:29 +0100 <dolio> Calls don't need stacks. Continuations are implemented with stacks.
2021-02-02 18:00:42 +0100 <int-e> and you might save memory "for free" because of sharing
2021-02-02 18:00:56 +0100 <kuribas> int-e: GC pauses can be an issue
2021-02-02 18:01:08 +0100 <int-e> kuribas: sure
2021-02-02 18:01:17 +0100 <dolio> That's why non-tail calls grow the stack, because they involve adding to the continuations.
2021-02-02 18:01:26 +0100 <merijn> kuribas: Sure, but in far fewer cases than people think
2021-02-02 18:01:32 +0100 <int-e> you'll notice that I didn't mention time
2021-02-02 18:01:52 +0100 <int-e> which is its own can of worms
2021-02-02 18:02:19 +0100 <shapr> shiraeeshi: is there a small snippet of code / design / something that would help explain the tradeoffs of Haskell vs something else?
2021-02-02 18:02:24 +0100niekvandepas(~niekvande@89.205.129.95) ()
2021-02-02 18:02:30 +0100abhixec(~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
2021-02-02 18:02:51 +0100 <ski> shapr : i haven't
2021-02-02 18:03:12 +0100 <int-e> personally I use Haskell for things that are not performance critical... and if I misjudge, I'll still have a prototype for reimplementing things in another language.
2021-02-02 18:03:13 +0100 <ephemient> as an aside, GC on immutable data does let GHC RTS take shortcuts that GC on mutable data wouldn't allow
2021-02-02 18:03:24 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 18:03:40 +0100 <int-e> ymmv
2021-02-02 18:03:49 +0100 <ephemient> if old generations never point to new generations, scanning the nursery is super fast
2021-02-02 18:04:32 +0100ski. o O ( lazy cycles )
2021-02-02 18:04:49 +0100 <kuribas> merijn: because most backends are stateless, and have not much live data?
2021-02-02 18:05:06 +0100 <ephemient> well yeah, and thunks are kind of magically mutable at runtime
2021-02-02 18:05:10 +0100 <ski> shapr : are they good ?
2021-02-02 18:05:22 +0100conal(~conal@64.71.133.70)
2021-02-02 18:05:25 +0100 <shapr> ski: I don't know! Want me to buy you a copy?
2021-02-02 18:05:43 +0100 <shapr> I just bought Thinking With Types and Algebra Driven Design
2021-02-02 18:05:46 +0100 <maerwald> shapr: "something else"?
2021-02-02 18:05:51 +0100 <shapr> I haven't purchased the Optics book yet
2021-02-02 18:06:03 +0100 <shiraeeshi> ski: what do you mean when you say "but if it's not cheap or convenient to refer to such, that may discourage one from exploring situations where doing that may be helpful"?
2021-02-02 18:06:25 +0100 <shapr> maerwald: yeah, could be types with how they are allocated in memory or all sorts of things
2021-02-02 18:07:20 +0100 <merijn> kuribas: Well, mostly because most people don't have latency requirements that make it a problem
2021-02-02 18:07:33 +0100 <maerwald> there's one thesis (?) about security benefits of haskell due to functional programming style, but it's rather ridiculous (wrt security). However it gives an overview of some good arguments (e.g. defensive programming being easier due to pattern matching)
2021-02-02 18:07:45 +0100pgib(~textual@lmms/pgib) (Ping timeout: 240 seconds)
2021-02-02 18:08:10 +0100 <shiraeeshi> shapr: I was talking about call stack allocation, but turns out GHC doesn't have call stacks, I can't even imagine what mechanism it uses instead of call stacks.
2021-02-02 18:08:15 +0100 <kuribas> maerwald: haskell has the same security benifits as other GC language, java, etc... That you cannot have buffer overflows.
2021-02-02 18:08:16 +0100 <merijn> kuribas: For it to matter you need: 1) a problem with strict latency requirements, 2) code that amasses enough live state to exceed those requirements
2021-02-02 18:08:34 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-02 18:08:34 +0100 <kuribas> merijn: yeah, I was thinking about a service that caches all data.
2021-02-02 18:08:36 +0100 <maerwald> kuribas: that's a pretty low bar in security :)
2021-02-02 18:08:38 +0100mmohammadi9812(~mmohammad@188.210.118.243)
2021-02-02 18:08:53 +0100 <ski> shapr : heh, if you'd like to
2021-02-02 18:09:50 +0100 <kuribas> maerwald: well, the ghc runtime isn't verified, and there are often bugs...
2021-02-02 18:10:07 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-02 18:10:16 +0100 <maerwald> it's easier to argue to stay far away from haskell if software security is a real concern
2021-02-02 18:10:27 +0100 <maerwald> but that's a rather small domain that really cares about it
2021-02-02 18:10:33 +0100 <kuribas> maerwald: better write it in f*, then compile with a verified C compiler :)
2021-02-02 18:10:39 +0100 <maerwald> yes
2021-02-02 18:10:44 +0100 <maerwald> that's what the everest project does
2021-02-02 18:11:12 +0100 <maerwald> shapr: https://arxiv.org/abs/1201.5728
2021-02-02 18:11:17 +0100 <ski> shiraeeshi : oh, i meant that if it's not cheap or convenient to make copies-with-parts-changed, that may discourage people from experimenting with that, exploring solutions which make use or, or are expressed, in terms of that
2021-02-02 18:11:57 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 18:12:18 +0100 <maerwald> most of the arguments in that paper are good, just not applicable to security (so just ignore the security part)
2021-02-02 18:12:26 +0100 <kuribas> ski: I mentioned on reddit that the java ecosystem (vs .NET) is not so functional friendly, and I got a lot of angry scala programmers on my back :)
2021-02-02 18:12:37 +0100geekosaur(82650c7c@130.101.12.124)
2021-02-02 18:12:43 +0100 <kuribas> .NET has much better support for immutable structures.
2021-02-02 18:12:58 +0100 <merijn> scala fans are delusional anyway :p
2021-02-02 18:13:56 +0100 <shiraeeshi> what's wrong with scala's functional friendliness?
2021-02-02 18:14:11 +0100jonatan(~nate@h77-53-70-163.cust.a3fiber.se) (Remote host closed the connection)
2021-02-02 18:14:15 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2021-02-02 18:14:20 +0100 <ski> kuribas : because of the Java standard library ?
2021-02-02 18:14:35 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2021-02-02 18:14:41 +0100 <kuribas> ski: yes
2021-02-02 18:14:53 +0100 <kuribas> shiraeeshi: not scala, java
2021-02-02 18:15:11 +0100 <maerwald> last I used Scala (long time ago) it had 5 or so ways to express sum types and all were a little different
2021-02-02 18:15:38 +0100 <kuribas> yeah, and it involves sealed classes or something...
2021-02-02 18:15:50 +0100 <aldum> good news, scala 3 has proper sum types on a language level
2021-02-02 18:16:04 +0100 <aldum> (afaik, haven't got around to try it yet)
2021-02-02 18:16:22 +0100 <ski> "Java Precisely" by Peter Sestoft (of MosML fame) in 2016 (3rd ed.) at <https://www.itu.dk/people/sestoft/javaprecisely/> does mention functional stuff
2021-02-02 18:16:35 +0100skigot a signed copy
2021-02-02 18:16:50 +0100 <shiraeeshi> ski: I think I got it now. You mean mutability makes using copies-with-parts-changed costly and inconvenient?
2021-02-02 18:17:00 +0100 <ph88> how can i handle the potential errors here ? https://hackage.haskell.org/package/base-4.14.1.0/docs/System-IO.html#v:openFile
2021-02-02 18:17:16 +0100 <maerwald> aldum: oh, I was expecting Go would get proper sum types before Scala :p
2021-02-02 18:17:21 +0100 <merijn> ph88: Control.Exception.catch
2021-02-02 18:17:32 +0100 <merijn> (and friends)
2021-02-02 18:17:38 +0100 <glguy> ph88: https://hackage.haskell.org/package/base-4.14.1.0/docs/System-IO-Error.html#v:tryIOError
2021-02-02 18:17:40 +0100 <aldum> lol
2021-02-02 18:17:51 +0100 <ski> kuribas : well, .NET at least has tail calls
2021-02-02 18:17:55 +0100 <aldum> go still doesn't have generics
2021-02-02 18:17:56 +0100 <dolio> maerwald: Not sure why you'd expect that.
2021-02-02 18:18:10 +0100 <aldum> which can be a good thing, if "generics" means what Java did :P
2021-02-02 18:18:38 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 264 seconds)
2021-02-02 18:18:50 +0100 <maerwald> dolio: because the upstream thread is pure joy https://github.com/golang/go/issues/19412
2021-02-02 18:18:52 +0100 <shiraeeshi> so in go you can only have a list of unknown stuff?
2021-02-02 18:19:01 +0100xff0x_(~xff0x@2001:1a81:5334:6300:2a2:5b2e:3d52:cffc) (Ping timeout: 272 seconds)
2021-02-02 18:19:08 +0100 <shiraeeshi> how can you program in such a language?
2021-02-02 18:19:12 +0100howdoi(uid224@gateway/web/irccloud.com/x-dcvsnpkbnllmgstf)
2021-02-02 18:19:15 +0100 <kuribas> shiraeeshi: not inconvenient, sharing is impissble. How would you share on a doubly linked list, or a mutable searchtree?
2021-02-02 18:19:24 +0100xff0x_(~xff0x@2001:1a81:5334:6300:8f10:9c9a:fe89:fa33)
2021-02-02 18:20:10 +0100avdb(~avdb@gateway/tor-sasl/avdb)
2021-02-02 18:20:13 +0100carlomagno(~cararell@148.87.23.7)
2021-02-02 18:20:51 +0100 <kuribas> shiraeeshi: immutability is also easy for concurrency, you can update a mutable pointer, and the other threads can still use the old data.
2021-02-02 18:21:26 +0100 <kuribas> shiraeeshi: lock-free mutable structures are very hard to implement, and make bugfree.
2021-02-02 18:21:58 +0100 <shiraeeshi> kuribas: right. Are there immutable variations of such data structures that don't lose in terms of efficiency?
2021-02-02 18:22:04 +0100Lycurgus(~niemand@cpe-45-46-139-165.buffalo.res.rr.com)
2021-02-02 18:22:23 +0100zebrag(~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
2021-02-02 18:22:41 +0100 <kuribas> shiraeeshi: who said you were losing efficiency?
2021-02-02 18:23:06 +0100 <kuribas> efficiency depends on so many factors...
2021-02-02 18:23:18 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243) (Ping timeout: 256 seconds)
2021-02-02 18:23:30 +0100 <ski> maerwald : the first more concrete proposal there suggests branching on the type, rather than on label/position .. :(
2021-02-02 18:24:10 +0100 <shiraeeshi> idk, but I got the impression that people whose task it is to write super efficient code prefer mutable data structures and imperative languages.
2021-02-02 18:24:11 +0100 <kuribas> shiraeeshi: besides, the idea of haskell is not "ultimate efficiency", but correct and bug free programs with very good performance.
2021-02-02 18:24:37 +0100chele(~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-02-02 18:24:39 +0100 <dexterfoo> what's the best unit testing library that will scale up for large projects?
2021-02-02 18:24:55 +0100 <dolio> maerwald: Yeah, I'm like 1/3 through and this just makes it look less likely that they'd ever get real sum types. :)
2021-02-02 18:25:17 +0100 <kuribas> shiraeeshi: probably, yes. If you want "ultimate performance", then write in C++, and use hand optimized routines in SIMD for bottlenecks.
2021-02-02 18:25:18 +0100 <maerwald> they're still debating if sum types actually add anything to the language...
2021-02-02 18:25:22 +0100 <maerwald> I mean, really?
2021-02-02 18:25:31 +0100Major_Biscuit(~Major_Bis@x065156.citg-m.tudelft.nl) (Ping timeout: 256 seconds)
2021-02-02 18:25:46 +0100 <dolio> Have they figured out what they actually are yet?
2021-02-02 18:25:53 +0100 <maerwald> :D
2021-02-02 18:26:38 +0100 <dolio> E.G. the first proposal looks more like union types, I think.
2021-02-02 18:26:43 +0100 <ski> yes
2021-02-02 18:27:05 +0100 <kuribas> shiraeeshi: the trade off is losing a bit of performance over better understandability. But there aren't many problems where your CPU usage isn't going to be swamped by IO.
2021-02-02 18:27:35 +0100Major_Biscuit(~Major_Bis@82-169-100-198.biz.kpn.net)
2021-02-02 18:27:47 +0100conal(~conal@64.71.133.70) (Ping timeout: 256 seconds)
2021-02-02 18:29:46 +0100 <dolio> Oh geeze, I wasn't 1/3 through because there are 300 hidden messages.
2021-02-02 18:30:21 +0100 <maralorn> Does go have null?
2021-02-02 18:30:23 +0100 <maerwald[m]> dolio: They are not worth it
2021-02-02 18:31:49 +0100 <kuribas> shiraeeshi: being fixated on "ultimate performance" isn't productive. Your assumption that immutable structures will be a bottleneck is very premature.
2021-02-02 18:32:08 +0100ski. o O ( ".., but since the sum type must record somewhere the type of the value that it currently holds, .." )
2021-02-02 18:32:14 +0100conal(~conal@209.58.139.46)
2021-02-02 18:33:15 +0100acarrico(~acarrico@dhcp-68-142-39-249.greenmountainaccess.net)
2021-02-02 18:33:20 +0100 <ph88> thx glguy :)
2021-02-02 18:33:42 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362) (Read error: Connection reset by peer)
2021-02-02 18:34:40 +0100Lord_of_Life(~Lord@unaffiliated/lord-of-life/x-0885362)
2021-02-02 18:35:14 +0100kuribas(~user@ptr-25vy0i8t5wed114xdik.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2021-02-02 18:35:17 +0100sm[m](simonmicma@gateway/shell/matrix.org/x-kiopfrbrvnzymric)
2021-02-02 18:35:18 +0100 <sm[m]> tomsmeding: ping
2021-02-02 18:35:23 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 18:35:35 +0100 <ski> "That is, when you assign something to a type (I1 | I2) where both I1 and I2 are interface types, it's not possible to tell later whether the value you put into was known to implement I1 or I2 at the time."
2021-02-02 18:36:14 +0100olligobber(olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 272 seconds)
2021-02-02 18:37:52 +0100Major_Biscuit(~Major_Bis@82-169-100-198.biz.kpn.net) (Quit: WeeChat 2.9)
2021-02-02 18:38:45 +0100frozenErebus(~frozenEre@37.231.239.43) (Ping timeout: 240 seconds)
2021-02-02 18:39:00 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net)
2021-02-02 18:39:00 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net) (Changing host)
2021-02-02 18:39:00 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2021-02-02 18:39:25 +0100frozenErebus(~frozenEre@37.231.239.43)
2021-02-02 18:40:16 +0100 <shiraeeshi> :kuribas, you're probably right about "ultimate performance". I think the problem is that mutable data structures and imperative code is the first thing that comes to mind. It's hard for people to adopt fp because they simply can't imagine how it would work.
2021-02-02 18:41:03 +0100dnlkrgr(~dnlkrgr@2a02:8070:a193:c900:499e:985f:a4ed:16ef)
2021-02-02 18:41:59 +0100 <shiraeeshi> like, what would immutable doubly-linked list look like? or immutable search tree.
2021-02-02 18:43:29 +0100 <ski> "It's hard for people to adopt fp because they simply can't imagine how it would work." -- that's a matter of familiarity. before you knew how to program imperatively, you had little idea of how it works
2021-02-02 18:43:45 +0100 <monochrom> Immutable binary search tree is an easier sell. Immutable doubly-linked list though has significantly less utility.
2021-02-02 18:43:49 +0100 <frozenErebus> +1, I am trying to learn
2021-02-02 18:43:51 +0100 <geekosaur> https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf
2021-02-02 18:44:00 +0100 <ski> immutable search-tree is usually taught in intro courses/books
2021-02-02 18:44:00 +0100 <frozenErebus> @ski is absolutely right...
2021-02-02 18:44:01 +0100 <lambdabot> Maybe you meant: wiki src ask
2021-02-02 18:44:14 +0100 <frozenErebus> i wish learning is like it is in the matrix
2021-02-02 18:44:18 +0100 <shiraeeshi> :ski, you said "before you knew how to program imperatively, you had little idea of how it works"
2021-02-02 18:44:25 +0100 <shiraeeshi> I think it is more intuitive
2021-02-02 18:45:00 +0100 <monochrom> I testify that 3rd-year students still have little idea of how imperative computing works.
2021-02-02 18:45:02 +0100skiidly wonders what's with the weird sigil-prefixing ..
2021-02-02 18:45:11 +0100 <geekosaur> not very. lists are kinda obvious, trees give lots of beginners problems
2021-02-02 18:45:29 +0100 <monochrom> The difference though between 3rd-year students and highschool student is that the 3rd-year students are so sure they know.
2021-02-02 18:45:50 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 18:45:59 +0100ph88(~ph88@2a02:8109:9e00:7e5c:47d:dbba:6c77:ca6f) (Read error: Connection reset by peer)
2021-02-02 18:46:11 +0100 <monochrom> Right? There is a famous academia joke "when you think you know everything, you can get a Bachelor's"
2021-02-02 18:46:20 +0100 <shiraeeshi> it's intuitive: you got boxes, you put stuff in them, you can empty the box and put other stuff in it.
2021-02-02 18:46:26 +0100 <monochrom> (Do you want to know the 2 sentences that follow?)
2021-02-02 18:46:30 +0100 <frozenErebus> monochrom: 3rd year undergraduate?
2021-02-02 18:46:35 +0100 <monochrom> Yeah
2021-02-02 18:46:44 +0100 <frozenErebus> damn...im one of em
2021-02-02 18:46:54 +0100 <frozenErebus> im struggling with functional
2021-02-02 18:47:21 +0100 <ski> shiraeeshi : learning a different programming paradigm is bound to be a bit like learning to program from scratch all over again. of course, there are things that *do* carry over, but it's a better state of mind, when learning (and especially unlearning) to not assume that you "know the basics" (like when you're learning yet another imperative language), to defer comparision until you've got the fundamentals
2021-02-02 18:47:27 +0100 <ski> under your belt
2021-02-02 18:47:48 +0100 <monochrom> You cannot empty the box.
2021-02-02 18:48:25 +0100 <shiraeeshi> :monochrom, what was 2 sentences that follow?
2021-02-02 18:48:48 +0100 <frozenErebus> but you can empty your mind?
2021-02-02 18:49:16 +0100 <monochrom> when you realize that you don't know anything, you can get a Master's. when you finally realize that your supervisor doesn't know anything either, you can get a PhD.
2021-02-02 18:49:31 +0100 <monochrom> (Totally true for me actually.)
2021-02-02 18:50:00 +0100 <aldum> and after that, you stand there with 10 years of your life wasted :P
2021-02-02 18:50:22 +0100 <monochrom> I can empty my mind. (Or, I can set up virtual machines in my mind.) That's how I learn so quickly. I was a bit surprised when I found out that other people can't.
2021-02-02 18:50:32 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 260 seconds)
2021-02-02 18:50:34 +0100 <monochrom> That is also true, aldum :)
2021-02-02 18:51:05 +0100 <ski> most people who're only familiar with imperative programming seem to have forgotten the extended period of time in which they struggled to learn it, and seem to think that just because they can easily pick up the basics in other imperative languages, and often then seem to think that if that isn't the case for another paradigm (like functional, or logic, programming), that must be because the paradigm, or
2021-02-02 18:51:11 +0100 <ski> language, is somehow harder to learn
2021-02-02 18:51:12 +0100 <aldum> >I can set up virtual machines in my mind
2021-02-02 18:51:19 +0100 <aldum> sounds like a nice feat
2021-02-02 18:51:34 +0100 <ski> (perhaps it is, perhaps it isn't. i'm just saying that they aren't really in a great position to be able to tell)
2021-02-02 18:51:44 +0100 <monochrom> Maybe more like docker or even simply chroot jail.
2021-02-02 18:52:16 +0100hnOsmium0001(uid453710@gateway/web/irccloud.com/x-xrwggmicrnaussaz)
2021-02-02 18:53:03 +0100 <monochrom> I can learn a new system without constantly re-expressing it in terms of what I previously learned. I can learn the new system on its own terms, from scratch, without ever wondering about "why should I".
2021-02-02 18:53:25 +0100Noldorin(~noldorin@unaffiliated/noldorin)
2021-02-02 18:54:16 +0100 <monochrom> Apparently other people can't resist the temptation or mental habit. They must re-express in familiar terms. They must know motivation. So they have a harder time.
2021-02-02 18:54:58 +0100 <shiraeeshi> monochrom: you do things you're not motivated to do?
2021-02-02 18:55:36 +0100 <monochrom> s/do/learn/
2021-02-02 18:55:44 +0100 <monochrom> And I still need a meta-motivation.
2021-02-02 18:56:50 +0100 <monochrom> I mean this: Suppose someone says "here is an axiomatic system, I won't tell you about applications, I only tell you about its rules". I can learn that. I just treat it as a game. Everyone can learn new games.
2021-02-02 18:57:29 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 18:57:36 +0100 <maerwald[m]> You can't truly understand anything without understanding the motivation
2021-02-02 18:57:45 +0100knupfer(~Thunderbi@200116b82c1c2700c12d39353ed78eec.dip.versatel-1u1.de) (Quit: knupfer)
2021-02-02 18:57:59 +0100 <int-e> "true understanding" is not an objective concept
2021-02-02 18:58:01 +0100knupfer(~Thunderbi@200116b82c1c2700194aa0356f059b98.dip.versatel-1u1.de)
2021-02-02 18:58:16 +0100cole-h(~cole-h@c-73-48-197-220.hsd1.ca.comcast.net)
2021-02-02 18:58:18 +0100 <monochrom> So I don't need a motivation in terms of "what are its applications? why is it useful?". But I still need a meta-motivation, such as sheer curiosity, or even shallower, the person is a great friend and I just like to learn anything from a great friend.
2021-02-02 18:58:32 +0100 <maerwald[m]> int-e: i have no ides what that means
2021-02-02 18:59:07 +0100 <monochrom> Oh yea, I very much like to challenge you to define "understand". >:)
2021-02-02 18:59:54 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
2021-02-02 19:00:28 +0100 <monochrom> But I have a PhD. I have long accepted that I know nothing, and neither does my supervisor.
2021-02-02 19:00:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 19:01:11 +0100 <maerwald[m]> Was that supposed to be an argument?
2021-02-02 19:01:12 +0100 <monochrom> So, bringing it back to learning Haskell, or even Prolog, but let's say Haskell.
2021-02-02 19:01:34 +0100 <int-e> maerwald[m]: I mean it's subjective. If you know the mechanics of something in and out... and that's all you wanted... you really don't need motivation. But most people want to understand why that something was conceived in the first place and whether other people care, and whether other people should care... so all these may or may not be part of "true understanding"
2021-02-02 19:02:07 +0100 <monochrom> You tell me a rule "if you code up 'f x = x+1', then when you use it like 'f 5', you get '5+1'.". I can accept that as a rule and move on, e.g., try to use it, try to learn further rules with that in mind.
2021-02-02 19:02:08 +0100 <int-e> if you're a manager type you may not even worry about the mechanics to feel you've reached that level
2021-02-02 19:02:23 +0100 <maerwald[m]> int-e: understanding the motivation gives you insights about the domain, which allows you to reason more holistically about it
2021-02-02 19:02:45 +0100 <int-e> holistic, shmolistic
2021-02-02 19:02:57 +0100 <monochrom> Other people must take time to wonder "so what happens in the mutable memory?" Well tough, although there is a story for that, it is too long and too distracting at the beginner stage.
2021-02-02 19:03:13 +0100rajivr(uid269651@gateway/web/irccloud.com/x-cydbvtlxdfyoajld) (Quit: Connection closed for inactivity)
2021-02-02 19:04:18 +0100 <hololeap> i think that particular definition of "true" is the same as an arrow "flying true" e.g. being able to hit it's target, so yeah it's subjective as far as the target can be different
2021-02-02 19:06:12 +0100 <shiraeeshi> > I can learn a new system without constantly re-expressing it in terms of what I previously learned. I can learn the new system on its own terms, from scratch, without ever wondering about "why should I".
2021-02-02 19:06:14 +0100 <lambdabot> <hint>:1:62: error: <hint>:1:62: error: parse error on input β€˜in’
2021-02-02 19:06:38 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-02-02 19:06:39 +0100 <shiraeeshi> it means whoever is teaching you made a good job by introducing axioms first
2021-02-02 19:06:46 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 19:07:09 +0100 <maerwald[m]> If you don't care about motivation (and history), all you will see is games, not the domain and why it's hard. A good example is the internet and it's protocols. It's a long weird story. You can just accept all and move on (as i did, because i find it pesky and uninteresting), but you won't really understand the domain of problems behind it.
2021-02-02 19:07:47 +0100 <monochrom> shiraeeshi, that is also a bad teacher in most people's eyes. However, I took pure math courses, so meh.
2021-02-02 19:08:08 +0100 <shiraeeshi> :monochrom, you're talking about the need to re-express new knowledge in terms of old knowledge. But if you have garbage data, you don't have an option of expressing it in a new language, because there is no new language.
2021-02-02 19:09:03 +0100 <shiraeeshi> (idk why I keep putting a colon before a nickname)
2021-02-02 19:09:06 +0100 <int-e> monochrom: I agree that it is very useful to be able to let the motivation be and just move on with the rules of the game, even when you care... you can find out about the motivation at another time
2021-02-02 19:09:13 +0100metro(~Thunderbi@unaffiliated/metreo)
2021-02-02 19:09:17 +0100ph88(~ph88@2a02:8109:9e00:7e5c:7043:c8b:15ab:5d6e)
2021-02-02 19:09:39 +0100 <maerwald> yes, you don't need to truly understand everything
2021-02-02 19:09:43 +0100 <maerwald> or anything
2021-02-02 19:10:25 +0100metreo(~Thunderbi@unaffiliated/metreo) (Ping timeout: 240 seconds)
2021-02-02 19:10:25 +0100metrometreo
2021-02-02 19:10:31 +0100 <ph88> can i use Writer to update a hashmap ?
2021-02-02 19:10:34 +0100 <texasmynsted> Aside from Hackage, what would be a good resource for learning interaction with files and directories? Really anything practical?
2021-02-02 19:10:42 +0100 <koz_> ph88: Yes.
2021-02-02 19:10:54 +0100 <ph88> what function can i use to update the hashmap ?
2021-02-02 19:10:59 +0100 <koz_> You'd need 'tell . HM.singleton k $ v'
2021-02-02 19:11:04 +0100 <koz_> That'll insert a new value.
2021-02-02 19:11:16 +0100 <koz_> If you need other kinds of update, you want State, not Writer.
2021-02-02 19:11:33 +0100 <koz_> texasmynsted: What are you trying to learn in a more specific sense?
2021-02-02 19:11:43 +0100 <ph88> a new value into the existing writer ?
2021-02-02 19:11:54 +0100 <ph88> existing hashmap
2021-02-02 19:12:01 +0100 <koz_> ph88: You are talking about Writer (HashMap k v) right?
2021-02-02 19:12:18 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
2021-02-02 19:12:27 +0100 <ph88> i just want to parse some stuff and then as i go write some stuff to a hashmap
2021-02-02 19:12:36 +0100 <koz_> Then sure, that works.
2021-02-02 19:12:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 19:13:38 +0100 <ph88> why singleton ?
2021-02-02 19:13:47 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl)
2021-02-02 19:14:03 +0100 <koz_> Because of the type of tell.
2021-02-02 19:14:05 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 19:14:06 +0100 <koz_> :t tell
2021-02-02 19:14:08 +0100 <lambdabot> MonadWriter w m => w -> m ()
2021-02-02 19:14:11 +0100dyeplexer(~lol@unaffiliated/terpin) (Remote host closed the connection)
2021-02-02 19:14:15 +0100 <koz_> In your case, w ~ HashMap k v
2021-02-02 19:14:28 +0100 <ph88> how does it combine with existing hashmap ?
2021-02-02 19:14:34 +0100 <ph88> i want to write not only one time
2021-02-02 19:14:37 +0100 <koz_> ph88: Using hm.union.
2021-02-02 19:14:43 +0100 <koz_> HM.union*
2021-02-02 19:14:47 +0100 <ph88> it's already implemented this way ?
2021-02-02 19:15:00 +0100 <ph88> instance Writer HashMap
2021-02-02 19:15:16 +0100 <koz_> ph88: It's more general than this.
2021-02-02 19:15:23 +0100 <koz_> (also, what you wrote is not well-kinded)
2021-02-02 19:15:34 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 19:15:35 +0100 <koz_> We actually have something like
2021-02-02 19:15:42 +0100 <koz_> (Monoid w) => Applicative (Writer w)
2021-02-02 19:15:47 +0100 <koz_> (and same for Monad)
2021-02-02 19:16:04 +0100 <ph88> oh ok
2021-02-02 19:16:11 +0100 <texasmynsted> An example would be that I have a number of files I need to create, move, process etc. I need to create temp directories, etc.
2021-02-02 19:16:24 +0100ski. o O ( s/\(Monoid w\)/Monoid w/ )
2021-02-02 19:16:31 +0100 <koz_> texasmynsted: Then 'directory' is probably the package you wanna read up on.
2021-02-02 19:16:39 +0100 <texasmynsted> I see a number of packages with ability to create and use temporary directories. System.IO.Temp, being one example.
2021-02-02 19:16:40 +0100 <koz_> ski: I always bracket constraints like that.
2021-02-02 19:16:56 +0100 <ski> pet peeve
2021-02-02 19:17:45 +0100 <koz_> ski: Never read any package I maintain then.
2021-02-02 19:18:04 +0100 <ph88> koz_, what about if i want a list or a vector ?
2021-02-02 19:18:13 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-02 19:18:17 +0100 <texasmynsted> Directory should work. I can create a temp directory, use it and free it. System.IO.Temp has "withTempDirectory" that seems like a useful abstraction.
2021-02-02 19:18:26 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 258 seconds)
2021-02-02 19:18:47 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 19:19:37 +0100 <ski> koz_, hehe :)
2021-02-02 19:19:40 +0100 <koz_> ph88: Lists and Vectors are also Monoids.
2021-02-02 19:19:47 +0100 <ph88> oki
2021-02-02 19:20:47 +0100 <koz_> However, I wouldn't recommend using those in a Writer, since appends are linear time.
2021-02-02 19:20:58 +0100 <koz_> So you'll get overall quadratic behaviour.
2021-02-02 19:21:04 +0100 <texasmynsted> Is there a nice opinionated book, link, resource, whatever to use as a kind of reference? Like "Okay, doing system file things... Lets see what the expert says."
2021-02-02 19:21:49 +0100 <koz_> texasmynsted: Not to my knowledge.
2021-02-02 19:21:50 +0100ski. o O ( `Endo' )
2021-02-02 19:22:01 +0100 <koz_> My advice is generally, as with anything IO, 'bracket liberally'.
2021-02-02 19:22:52 +0100 <shiraeeshi> int-e: > I agree that it is very useful to be able to let the motivation be and just move on with the rules of the game, even when you care... you can find out about the motivation at another time
2021-02-02 19:23:10 +0100 <shiraeeshi> but you may end up realizing that you wasted a bunch of your time
2021-02-02 19:23:30 +0100 <texasmynsted> I also plan to use typed-process
2021-02-02 19:23:47 +0100Yumasi(~guillaume@2a01:e0a:5cb:4430:530d:5016:5501:1cca) (Ping timeout: 260 seconds)
2021-02-02 19:23:53 +0100metreo(~Thunderbi@unaffiliated/metreo) (Ping timeout: 256 seconds)
2021-02-02 19:24:18 +0100 <sm[m]> you may know about https://www.fpcomplete.com/haskell/learn/ which has some docs like that.. nothing for files though
2021-02-02 19:24:27 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-02 19:24:37 +0100 <shiraeeshi> koz_: isn't Vector a mutable List? if that is the case, then append should be constant time.
2021-02-02 19:24:39 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 19:24:44 +0100 <koz_> shiraeeshi: No.
2021-02-02 19:24:53 +0100 <koz_> Unless you're referring to mutable Vectors specifically.
2021-02-02 19:24:54 +0100 <sm[m]> but https://www.google.com/search?q=haskell+working+with+files finds some things
2021-02-02 19:24:58 +0100 <koz_> But those aren't Monoids.
2021-02-02 19:25:13 +0100 <koz_> And even then it's not gonna work because this isn't Python.
2021-02-02 19:25:41 +0100 <koz_> (even on the face of it, equating mutable lists with vectors is one of the most irritating category errors I tend to see)
2021-02-02 19:26:01 +0100 <texasmynsted> Google is useful but not curated like a single book, site, reference.
2021-02-02 19:26:04 +0100 <koz_> I blame Python for it.
2021-02-02 19:26:15 +0100 <monochrom> I do too.
2021-02-02 19:26:36 +0100 <monochrom> #1 cause of confusion among my 3rd-year students.
2021-02-02 19:26:36 +0100 <dolio> Does python call things vectors?
2021-02-02 19:26:47 +0100 <koz_> dolio: In Python, lists are dynamic arrays.
2021-02-02 19:26:51 +0100 <ski> who do we blame for confusing sum types with union types ?
2021-02-02 19:26:59 +0100 <monochrom> They dare to say "array" for Haskell clearly linked lists.
2021-02-02 19:27:10 +0100 <koz_> So as a result, people take 'list, vector, array, dynamic array' and anything similar to mean 'hurr, they all do same things'.
2021-02-02 19:27:12 +0100 <ph88> anyone know how i can pattern match on stuff from compdata ?
2021-02-02 19:27:16 +0100mmohammadi9812(~mmohammad@188.210.118.243) (Ping timeout: 240 seconds)
2021-02-02 19:27:23 +0100metreo(~Thunderbi@unaffiliated/metreo)
2021-02-02 19:27:25 +0100 <monochrom> And they are 3rd-year students.
2021-02-02 19:27:32 +0100 <koz_> In particular, they insist that you can both have size extension and random access in O(1).
2021-02-02 19:27:41 +0100 <koz_> And call the resulting structure a 'list' every damn where.
2021-02-02 19:27:50 +0100mmohammadi9812(~mmohammad@2.178.211.91)
2021-02-02 19:27:53 +0100 <monochrom> A reason why I say that they still don't have any idea on even imperative computing.
2021-02-02 19:28:02 +0100 <koz_> Argumentum ad serpentum yo.
2021-02-02 19:28:08 +0100 <ski> ph88 : pattern synonyms, perhaps ?
2021-02-02 19:28:17 +0100 <ph88> ill check it th
2021-02-02 19:28:18 +0100 <ph88> thx
2021-02-02 19:28:18 +0100 <koz_> What's 'compdata'?
2021-02-02 19:28:26 +0100 <ski> @hackage compdata
2021-02-02 19:28:26 +0100 <lambdabot> https://hackage.haskell.org/package/compdata
2021-02-02 19:28:27 +0100 <ski> presumably
2021-02-02 19:28:34 +0100 <ammar2> I wouldn't use list or vector to mean anything specific without elaboration
2021-02-02 19:28:39 +0100 <ammar2> it's just how they're used nowadays
2021-02-02 19:29:09 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Remote host closed the connection)
2021-02-02 19:30:04 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-02-02 19:30:11 +0100 <dolio> "Vector" is probably a bad name for arrays, too, but programmers messed that up a long time ago.
2021-02-02 19:30:33 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 19:30:37 +0100 <monochrom> That one we can blame C++ STL :)
2021-02-02 19:31:15 +0100 <ski> at least we aren't calling any random two-dimensional arrays "matrices"
2021-02-02 19:31:19 +0100 <shiraeeshi> in Java, Vector is very similar to another data structure, ArrayList, if I remember correctly. The difference is about concurrent behavior. Every method in Vector is synchronized. That's why I thought that Vector is just an ArrayList with synchronized methods. So what is a Vector?
2021-02-02 19:31:21 +0100 <dolio> Just like "variable".
2021-02-02 19:31:24 +0100 <monochrom> Or make it personal, it's Alexander Stepanov
2021-02-02 19:32:06 +0100 <ammar2> Vector doesn't imply any synchronization, that's just a dumb Java thing
2021-02-02 19:32:20 +0100 <koz_> shiraeeshi: A Vector is an immutable array.
2021-02-02 19:32:26 +0100 <ammar2> much like their Hashtable nonsense
2021-02-02 19:32:29 +0100 <koz_> (you can also get mutable versions)
2021-02-02 19:32:36 +0100skiidly glances at `Array'
2021-02-02 19:32:52 +0100 <monochrom> A vector is an element of a vector space. A vector space has 3 operations and satisfies these 10 axioms: ...
2021-02-02 19:32:58 +0100 <koz_> There are also several varieties of Vector depending on what they store.
2021-02-02 19:33:15 +0100absence(IfjEGObaTi@hildring.pvv.ntnu.no) (Quit: Lost terminal)
2021-02-02 19:33:18 +0100 <koz_> monochrom: This is why I capitalize. I've had that throw folks here when I said 'category' instead of 'Category'.
2021-02-02 19:33:53 +0100 <monochrom> I was joking :)
2021-02-02 19:35:00 +0100 <ski> terminology is hard
2021-02-02 19:35:05 +0100 <dolio> Java's Vector is just a holdover from before they realized that a systematic collections library was necessary. It's kind of surprising that it still exists.
2021-02-02 19:35:07 +0100 <koz_> ski: Terminology is domain-specific.
2021-02-02 19:35:14 +0100 <ski> that too
2021-02-02 19:35:18 +0100 <koz_> dolio: Because Java can't ditch legacy behaviour to save itself.
2021-02-02 19:35:32 +0100 <koz_> Which is one reason its 'Optional' is pretty useless.
2021-02-02 19:35:38 +0100 <monochrom> No no, this one I insist to be personal. Terminology is community-specific.
2021-02-02 19:35:40 +0100 <koz_> (since Optional can, itself, be null, of course)
2021-02-02 19:36:12 +0100 <koz_> Gotta keep pretending to both be C and not C simultaneously...
2021-02-02 19:36:16 +0100 <dolio> I mean, they can deprecate and remove things.
2021-02-02 19:36:26 +0100 <koz_> dolio: Deprecate, yes. Remove? Hardly ever.
2021-02-02 19:36:30 +0100 <dolio> I think they have done that. I'm just surprised it hasn't happened to Vector.
2021-02-02 19:36:50 +0100ubert(~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 258 seconds)
2021-02-02 19:36:55 +0100asheshambasta(~user@ptr-e1lysax2ic2wl7mrg8y.18120a2.ip6.access.telenet.be) (Ping timeout: 272 seconds)
2021-02-02 19:37:01 +0100 <dolio> I think it's be obselete since Java 2.
2021-02-02 19:37:28 +0100conal(~conal@209.58.139.46) (Quit: Computer has gone to sleep.)
2021-02-02 19:40:45 +0100metreo(~Thunderbi@unaffiliated/metreo) (Ping timeout: 240 seconds)
2021-02-02 19:41:15 +0100Ariakenom(~Ariakenom@2001:9b1:efb:fc00:41bc:5f34:8ff6:3878)
2021-02-02 19:41:28 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
2021-02-02 19:41:28 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-02 19:41:53 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 19:41:58 +0100livvy(~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection)
2021-02-02 19:42:40 +0100fearless_man(~fearless_@152.32.100.101)
2021-02-02 19:42:58 +0100 <fearless_man> hello, I've been trying to learn functional but for python(sorry about that) can anyone take a look at my code if it can be called functional. And did I do the right thing using functional than OOP? thanks -> https://paste.ubuntu.com/p/C6R8Bj8MCM/
2021-02-02 19:43:17 +0100frdg(~nick@pool-96-233-64-53.bstnma.fios.verizon.net)
2021-02-02 19:43:30 +0100boxscape(4ff0baf3@gateway/web/cgi-irc/kiwiirc.com/ip.79.240.186.243)
2021-02-02 19:43:43 +0100 <shapr> shiraeeshi: are you convinced to dive in and try some Haskell? What's your field? web dev?
2021-02-02 19:43:44 +0100 <glguy> fearless_man: this channel's for Haskell, but there might be some Python programmers in #python who could share some expertise
2021-02-02 19:44:37 +0100chrisdotcode(~chrisdotc@unaffiliated/chrisdotcode)
2021-02-02 19:44:57 +0100metreo(~Thunderbi@unaffiliated/metreo)
2021-02-02 19:45:06 +0100nuncanada(~dude@179.235.160.168)
2021-02-02 19:45:28 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-02 19:45:50 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 19:46:02 +0100 <frdg> what is the way you would say something like `skipUntil` with parser combinators? For example I have this string: `foo bar 123 baz` and I wanted to parse out `123` by saying `skip everything until I can parse an integer`
2021-02-02 19:47:07 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-02 19:47:15 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313)
2021-02-02 19:47:33 +0100 <monochrom> I would start with manyTill
2021-02-02 19:47:44 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 19:47:47 +0100 <texasmynsted> I suppose using the simplest, most direct abstraction like Directory, with Bracket pattern is the best approach
2021-02-02 19:47:55 +0100 <texasmynsted> at least for now
2021-02-02 19:47:58 +0100 <texasmynsted> Thank you
2021-02-02 19:48:04 +0100 <shiraeeshi> shapr: I play with Haskell occasionally, I used to work as a backend developer, first Java, then Scala, now I don't work, so I guess I can consider myself a hobbyist. The problem is I don't know what to write in Haskell. I wrote tetris in Haskell once. In the meantime I resort to reading a book about monads.
2021-02-02 19:48:08 +0100 <frdg> ill look at manyTill
2021-02-02 19:50:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds)
2021-02-02 19:52:26 +0100 <shapr> shiraeeshi: write something useful for yourself or those around you? I write small useful things like https://github.com/shapr/sandwatch
2021-02-02 19:52:45 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
2021-02-02 19:53:12 +0100geekosaur(82650c7c@130.101.12.124) (Ping timeout: 248 seconds)
2021-02-02 19:53:29 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 19:53:50 +0100haskell-noob(2ea162a3@46.161.98.163)
2021-02-02 19:54:13 +0100 <shiraeeshi> shapr: I wrote some desktop app for myself, but I chose python + js, because it makes more sense rather than haskell
2021-02-02 19:54:19 +0100nineonin_(~nineonine@50.216.62.2)
2021-02-02 19:54:28 +0100nineonine(~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 258 seconds)
2021-02-02 19:55:14 +0100 <shiraeeshi> I think I can rewrite it in haskell just for fun, if haskell plays well with gtk
2021-02-02 19:55:39 +0100livvy(~livvy@gateway/tor-sasl/livvy)
2021-02-02 19:56:08 +0100haskell-noob(2ea162a3@46.161.98.163) (Client Quit)
2021-02-02 19:57:05 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net) (Ping timeout: 240 seconds)
2021-02-02 19:57:19 +0100 <shiraeeshi> python is pre-installed in linux so that's another point in favor of python. If I decide to market my app, it would be a bad decision to force people to install Haskell, right?
2021-02-02 19:57:30 +0100 <merijn> shiraeeshi: eh...
2021-02-02 19:57:44 +0100 <merijn> shiraeeshi: Why would they install GHC to install your app?
2021-02-02 19:57:46 +0100honigkuchen(~honigkuch@ip5b429953.dynamic.kabel-deutschland.de) (Remote host closed the connection)
2021-02-02 19:57:47 +0100unlink2(~unlink2@p200300ebcf12ea00013250d6b4625a26.dip0.t-ipconnect.de)
2021-02-02 19:57:51 +0100tsrt^(tsrt@ip98-184-89-2.mc.at.cox.net)
2021-02-02 19:58:00 +0100 <merijn> shiraeeshi: People don't install C++ compilers to run programs written in C++...
2021-02-02 19:59:00 +0100 <shiraeeshi> merjin: that's what I'm talking about, but that's just a thought. I guess you can compile a Haskell app to an executable that doesn't need Haskell installed, but that's just a guess.
2021-02-02 19:59:27 +0100 <boxscape> (I've also used mainly linux distributions that don't have python pre-installed. But yes, if you distribute compiled binaries, it doesn't matter what is or isn't preinstalled)
2021-02-02 20:01:17 +0100 <shiraeeshi> I don't know how app distribution works in linux, frankly. If I write some python code and then want to make it available to other users as an app, do I create a standalone executable?
2021-02-02 20:01:34 +0100 <shiraeeshi> or do I just ship it as a code?
2021-02-02 20:02:17 +0100jpds_(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-02 20:02:24 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection)
2021-02-02 20:02:46 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-02-02 20:02:47 +0100sord937(~sord937@gateway/tor-sasl/sord937)
2021-02-02 20:02:49 +0100 <merijn> You generally ship the code *and* python interpreter together
2021-02-02 20:03:04 +0100 <merijn> Because you can't assume the python interpreter on the user's system will run your code
2021-02-02 20:03:17 +0100 <shiraeeshi> I think I'm talking about a case when you say "hey people, here is a github link to some code that I wrote, you can clone and run it if you're interested"
2021-02-02 20:03:22 +0100 <shiraeeshi> something like that
2021-02-02 20:03:33 +0100berberman_(~berberman@unaffiliated/berberman)
2021-02-02 20:04:27 +0100conal(~conal@64.71.133.70)
2021-02-02 20:04:29 +0100shadowdaemon(~user@unaffiliated/shadowdaemon) (Remote host closed the connection)
2021-02-02 20:04:38 +0100berberman(~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds)
2021-02-02 20:05:00 +0100berberman_(~berberman@unaffiliated/berberman) (Max SendQ exceeded)
2021-02-02 20:05:19 +0100 <shiraeeshi> I think that's the easiest and most primitive way to distribute an app
2021-02-02 20:05:44 +0100berberman(~berberman@unaffiliated/berberman)
2021-02-02 20:05:55 +0100shadowdaemon(~user@unaffiliated/shadowdaemon)
2021-02-02 20:06:13 +0100 <aveltras> depends if you mean distributing for end users or potential developers who would want to modify the code
2021-02-02 20:06:30 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar) (Ping timeout: 268 seconds)
2021-02-02 20:06:35 +0100 <shiraeeshi> but it would be more convenient if you wrote it in a popular language with an interpreter that is often pre-installed in a lot of systems, rather than on some rarely used language.
2021-02-02 20:06:49 +0100dhouthoo(~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0)
2021-02-02 20:07:02 +0100 <boxscape> write in bash :)
2021-02-02 20:07:27 +0100 <aldum> >how app distribution works in linux
2021-02-02 20:07:31 +0100xelxebar(~xelxebar@gateway/tor-sasl/xelxebar)
2021-02-02 20:07:36 +0100fresheyeball(~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds)
2021-02-02 20:07:36 +0100 <aldum> you leave it to the packagers of distros
2021-02-02 20:08:07 +0100 <aveltras> at this point you could also rely on docker and ship your app as a container
2021-02-02 20:08:17 +0100 <boxscape> but what if your app is not relevant enough to be picked up by packagers
2021-02-02 20:08:22 +0100 <aveltras> be it compiled or interpreted
2021-02-02 20:09:09 +0100jpds_(~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
2021-02-02 20:09:14 +0100 <shapr> shiraeeshi: pre-installed interpreter causes problems, you never know which version or what libs are installed
2021-02-02 20:09:30 +0100 <shapr> if you ask for the user to upgrade a lib, that could break the system interpreter
2021-02-02 20:09:34 +0100jpds_(~jpds@gateway/tor-sasl/jpds)
2021-02-02 20:09:53 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net)
2021-02-02 20:10:08 +0100 <aveltras> yes, that's why you've seen things like snap and flatpak rising in the recent times
2021-02-02 20:10:26 +0100 <shapr> and why I've started using nix for everything
2021-02-02 20:10:33 +0100 <merijn> aldum: Docker is the packaging equivalent of giving up
2021-02-02 20:10:36 +0100Rudd0(~Rudd0@185.189.115.103) (Ping timeout: 240 seconds)
2021-02-02 20:10:50 +0100 <merijn> Which is understandable, since "giving up" is the only reasonable way to package python/JS
2021-02-02 20:11:37 +0100 <aveltras> how would you package something reliably without it or nix for example ?
2021-02-02 20:12:39 +0100 <merijn> aveltras: The hard part of packaging is "figure out which files should be packaged"
2021-02-02 20:12:59 +0100 <merijn> aveltras: python and co make that nearly impossible
2021-02-02 20:13:04 +0100 <maerwald> python packaging works ok
2021-02-02 20:13:13 +0100 <merijn> aveltras: I don't see why you'd need nix for that
2021-02-02 20:13:13 +0100jollygood2(~bc8134e3@217.29.117.252)
2021-02-02 20:13:14 +0100 <maerwald> haskell is far harder
2021-02-02 20:13:32 +0100 <aldum> well, python has venvs and JS has the node_modules thing
2021-02-02 20:13:50 +0100 <merijn> maerwald: I disagree, python just has more of the hard stuff already done for you by others
2021-02-02 20:14:08 +0100 <maerwald> merijn: python is easy to package in linux distro package managers
2021-02-02 20:14:11 +0100 <maerwald> JS and haskell aren't
2021-02-02 20:14:42 +0100 <merijn> maerwald: Is that the fault of Haskell or the fault of linux distro package managers? :p
2021-02-02 20:14:43 +0100 <maerwald> distutils/setuptools do a reasonable job
2021-02-02 20:14:57 +0100 <maerwald> merijn: partly haskells fault
2021-02-02 20:15:14 +0100 <maerwald> and that distro PMs are optimized for C
2021-02-02 20:15:40 +0100 <merijn> aveltras: Anyway, when it comes to packaging the correct answer is always "statically link all the things"
2021-02-02 20:16:21 +0100 <maerwald> what "packaging" are we even talking about
2021-02-02 20:16:24 +0100 <maerwald> upstream?
2021-02-02 20:17:05 +0100metreo(~Thunderbi@unaffiliated/metreo) (Ping timeout: 258 seconds)
2021-02-02 20:17:21 +0100 <maerwald> (there I would indeed only bother about static binaries)
2021-02-02 20:17:34 +0100 <merijn> maerwald: When I say packaging I just mean any form of "making an executable to run on target machine X"
2021-02-02 20:18:03 +0100 <merijn> Intended for someone with no plans to hack on said executable
2021-02-02 20:18:05 +0100 <maerwald> but static binaries have this nice property that no one will remember if it ships with a vulnerable zlib version...
2021-02-02 20:18:36 +0100 <merijn> maerwald: That sounds like poor deployment management
2021-02-02 20:18:49 +0100 <maerwald> yeah, that's what's reality
2021-02-02 20:19:11 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 20:19:15 +0100 <aveltras> statically linking everything is the easiest way to guarantee that it will run i guess but then it takes more space because if you got 2 statically linked packages which need the exact same version of a dependency then you have it bundled twice
2021-02-02 20:19:30 +0100 <merijn> maerwald: I mean, in reality it doesn't really matter, because the code *using* zlib will be much more insecure still :p
2021-02-02 20:19:36 +0100 <maerwald> aveltras: space is a user problem, not yours :p
2021-02-02 20:19:42 +0100 <merijn> aveltras: So? Who gives a shit
2021-02-02 20:19:55 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 20:19:59 +0100 <aveltras> that's why i find nix fine in this case since you'd only get the dependency in the store once
2021-02-02 20:20:00 +0100 <maerwald> merijn: I see your optimism...
2021-02-02 20:20:04 +0100 <merijn> We live in the era of 4 TB consumder SSDs... "oh no, my binary is 10 MB instead of 5"
2021-02-02 20:20:51 +0100kritzefitz(~kritzefit@212.86.56.80)
2021-02-02 20:20:57 +0100kritzefitz(~kritzefit@212.86.56.80) (Client Quit)
2021-02-02 20:21:05 +0100 <shapr> merijn: hey be nice
2021-02-02 20:21:06 +0100 <aveltras> i found that series of posts quite interesting https://jpetazzo.github.io/2020/02/01/quest-minimal-docker-images-part-1/
2021-02-02 20:21:11 +0100 <merijn> "but what if a user has 200 programs?!" oh no, now that use has 200 * 5 MB is 1GB of overhead on their entire system
2021-02-02 20:21:12 +0100 <maerwald> yeah ok, but nix is worse when it comes to security, because it isn't particularly rolling when you pin the store to a commit (which is common practice)
2021-02-02 20:21:31 +0100 <merijn> maerwald: I see a *huge* usecase for Nix at my job
2021-02-02 20:21:43 +0100 <merijn> maerwald: But I can't in good conscience recommend we actually use it :\
2021-02-02 20:21:49 +0100 <aveltras> the culprit can also be the network size when you need to upload your app
2021-02-02 20:22:05 +0100 <aveltras> but then we are not talking about static linking but more about dependency stripping
2021-02-02 20:22:09 +0100 <shapr> don't make me put on my kick hat
2021-02-02 20:22:13 +0100 <shapr> gotta be nice here
2021-02-02 20:22:29 +0100 <maerwald> There are some interesting use cases of nix in embedded, where the customer requires a reproducible build
2021-02-02 20:22:54 +0100 <maerwald> and the thing is unlikely to be connected to the internet anyway
2021-02-02 20:22:55 +0100 <merijn> aveltras: We live in a world where people don't blink at Call of Duty patches redownloading 80 GB of binary data. I'm sure people can deal with a few MB overhead :p
2021-02-02 20:23:43 +0100 <merijn> maerwald: My work is basically all scientific code, so the ability to be able to succesfully build and run something 10 years old would be a huge win
2021-02-02 20:23:53 +0100 <aveltras> im still living on tethering network from my phone with a 100GB / month limit so im all for saving bandwith :)
2021-02-02 20:23:54 +0100 <merijn> maerwald: Security be damned
2021-02-02 20:23:57 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 264 seconds)
2021-02-02 20:24:05 +0100 <shapr> maerwald: NixOS did get me a patched sudo ~24 hours after the CVE
2021-02-02 20:24:31 +0100metreo(~Thunderbi@unaffiliated/metreo)
2021-02-02 20:24:38 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
2021-02-02 20:24:50 +0100 <maerwald> shapr: yeah, my point was that ppl usually pin nixpkg to a commit
2021-02-02 20:25:00 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 20:25:05 +0100 <shapr> Yeah, I do for my haskell projects
2021-02-02 20:25:09 +0100 <shiraeeshi> how does shipping work in gentoo world? I heard that their ideology is only download sources and then compile them on your machine, right? I'm gonna guess that they use some kind of sandboxing solution.
2021-02-02 20:25:17 +0100 <aveltras> maerwald: you mean it's a security issue to pin to a commit because you wouldn't get security update right ?
2021-02-02 20:25:27 +0100 <shapr> but I also regularly test with updated pins and commit the changes if it all works.
2021-02-02 20:25:27 +0100 <maerwald> and then you don't really get security updates until you realize "oh, hls doesn't work with this commit"
2021-02-02 20:25:29 +0100 <merijn> aveltras: Well, nobody's stopping you from compressing said 10 MB binary :)
2021-02-02 20:25:52 +0100 <maerwald> aveltras: yes, those are conflicting goals
2021-02-02 20:26:15 +0100 <aveltras> ye i guess that's an issue
2021-02-02 20:26:35 +0100 <aveltras> coming from a developer perspective, that's not my primary thing to keep in mind
2021-02-02 20:26:57 +0100 <maerwald> I see very little concern about this in the nix devops community
2021-02-02 20:27:23 +0100 <shiraeeshi> shapr: > Yeah, I do for my haskell projects
2021-02-02 20:27:28 +0100 <shiraeeshi> what do you do?
2021-02-02 20:27:55 +0100Guest_76(25e4f694@37.228.246.148)
2021-02-02 20:27:57 +0100 <shapr> shiraeeshi: for work, Haskell web dev
2021-02-02 20:28:07 +0100 <shapr> for fun? mostly Haskell web dev :-)
2021-02-02 20:28:19 +0100 <shapr> (though I'm doing electronics projects for fun at the moment)
2021-02-02 20:28:26 +0100 <merijn> shapr: I though fun was unicycling? ;)
2021-02-02 20:28:37 +0100 <shapr> haven't done that lately, but hopefully again soon
2021-02-02 20:28:49 +0100 <ph88> is there a function to resolve a relative path when given some base dir ?
2021-02-02 20:28:53 +0100 <maerwald> shapr: nice, I want to build my first keyboard from scratch and I have no electronics skills
2021-02-02 20:28:56 +0100 <shapr> I did buy a thousand nixie tubes this weekend. They'll turn into jewelry when they arrive.
2021-02-02 20:29:11 +0100 <merijn> ph88: You probably want the directory package
2021-02-02 20:29:16 +0100 <ph88> oki
2021-02-02 20:29:32 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8)
2021-02-02 20:29:33 +0100 <maerwald> only upside is... I can probably hack on ImplicitCAD if I have to :p
2021-02-02 20:29:36 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds)
2021-02-02 20:29:40 +0100 <shapr> maerwald: I assembled my ergodoxen from kits, but that wasn't from scratch
2021-02-02 20:30:02 +0100 <shapr> I'd love to build an unreasonable keyboard with clash-lang
2021-02-02 20:30:05 +0100 <merijn> ph88: makeAbsolute and/or canonicalisePath
2021-02-02 20:30:09 +0100 <shiraeeshi> shapr: you write rest-services in haskell? what library or framework do you use for that?
2021-02-02 20:30:13 +0100 <ph88> thanks merijn
2021-02-02 20:30:14 +0100 <shapr> Like, one FPGA GPIO pin for each key
2021-02-02 20:30:51 +0100 <maerwald> shapr: I'm planning to build this: https://github.com/dpapavas/lagrange-keyboard
2021-02-02 20:31:13 +0100 <shapr> maerwald: looks great, very dactyl / manuform
2021-02-02 20:31:25 +0100 <maerwald> yeah, the creator says it was inspired by those
2021-02-02 20:31:26 +0100 <koz_> shapr: I have an ErgoDox EZ, though not self-assembled.
2021-02-02 20:31:36 +0100 <koz_> (in fact, I'm typing on it right now)
2021-02-02 20:31:38 +0100 <maerwald> I like the feet, so I can adjust the tilt to my likig
2021-02-02 20:31:47 +0100 <ph88> merijn, what is the base directory for these functions ?
2021-02-02 20:31:48 +0100 <shapr> shiraeeshi: I've been using scotty for fun code, servant for work code
2021-02-02 20:31:49 +0100 <maerwald> without having to have multiple full builds
2021-02-02 20:31:49 +0100avdb(~avdb@gateway/tor-sasl/avdb) (Remote host closed the connection)
2021-02-02 20:31:57 +0100 <shapr> but my fun code will probably become servant soon
2021-02-02 20:32:03 +0100 <merijn> ph88: The working directory of the application
2021-02-02 20:32:20 +0100 <ph88> is there a function that i can provide the base directory ?
2021-02-02 20:32:24 +0100 <shapr> koz_: this one is my favorite, but I switched to a moonlander recently https://imgur.com/gallery/69stJ6K
2021-02-02 20:32:33 +0100avdb(~avdb@gateway/tor-sasl/avdb)
2021-02-02 20:32:36 +0100 <merijn> ph88: eh, you can just prepend the base to a relative path
2021-02-02 20:32:38 +0100 <koz_> shapr: Ah yes, the 'even-more-1%er' keyboard. :P
2021-02-02 20:32:40 +0100 <ph88> ok
2021-02-02 20:32:43 +0100 <merijn> ph88: That's why it's relative :p
2021-02-02 20:32:53 +0100 <ph88> :D
2021-02-02 20:33:01 +0100geekosaur(82650c7c@130.101.12.124)
2021-02-02 20:33:01 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 20:33:08 +0100 <aveltras> how much time did it take you to adapt to a keyboard like ErgoDox EZ ?
2021-02-02 20:33:18 +0100 <shapr> koz_: I blew out my left arm for ~15 months while using an IBM Model M, so I'm okay spending more money if it prevents that happening again.
2021-02-02 20:33:29 +0100 <koz_> aveltras: About a week for basics, a month for fluency.
2021-02-02 20:33:34 +0100 <merijn> shapr: Seems like a good computer security mechanism xD
2021-02-02 20:33:37 +0100 <koz_> Definitely quite a change at first.
2021-02-02 20:33:47 +0100 <aveltras> must be so strange at the beginning to have the keyboard in two parts
2021-02-02 20:34:00 +0100 <shapr> aveltras: I have extremely wide shoulders, it's less strain for me
2021-02-02 20:34:14 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Ping timeout: 264 seconds)
2021-02-02 20:34:23 +0100 <merijn> koz_: What do they cost? I don't see a clear price range quickly
2021-02-02 20:34:39 +0100 <maerwald> 300+
2021-02-02 20:34:41 +0100 <koz_> merijn: I don't recall what mine amounted to in USD. It was about 300 NZD after conversion.
2021-02-02 20:34:56 +0100Guest_76(25e4f694@37.228.246.148) (Quit: Connection closed)
2021-02-02 20:35:01 +0100 <aveltras> do you also use ergonomic mouse ?
2021-02-02 20:35:01 +0100 <merijn> Currently I'm still on my MS Natural Ergonomic 4000
2021-02-02 20:35:14 +0100 <koz_> aveltras: I'm on i3. What mouse lol.
2021-02-02 20:35:22 +0100 <merijn> Which I do really like for its price
2021-02-02 20:35:39 +0100 <aveltras> just wondering :) im on sway
2021-02-02 20:35:42 +0100 <merijn> aveltras: I use one of the Logitech gaming mice
2021-02-02 20:35:52 +0100 <merijn> They're pretty decent ergonomically
2021-02-02 20:36:04 +0100 <maerwald> when my RSI started, I switched from ergodox ez to kinesis advantage 2, which helped a little bit, but now I'm looking for a properly tilted keyboard (probably 90 degrees)
2021-02-02 20:36:18 +0100 <aveltras> would you say that it was already "too late" when you took the decision to invest in an ergonomic keyboard ? as if it was post injury or something or this was just by curiosity ?
2021-02-02 20:36:19 +0100 <koz_> I have RSI and the ErgoDox EZ helps me a bunch.
2021-02-02 20:36:20 +0100 <maerwald> keeping your hands flat on a table tilts your forearm unnaturally
2021-02-02 20:36:34 +0100 <koz_> I use a standing desk though, which also helps.
2021-02-02 20:36:40 +0100 <monochrom> I have found wristrest to be more important than "the right keyboard".
2021-02-02 20:36:57 +0100 <merijn> aveltras: tbh, if your pre-RSI I'd also invest in proper exercise in addition to better hardware
2021-02-02 20:37:12 +0100 <merijn> monochrom: Well, my keyboard has the wristrest integrated, so that's part of it :p
2021-02-02 20:37:18 +0100 <maerwald> monochrom: lots of RSI ppl say "never use wrist rest"... instead, never put your wrist down at all... you have to use your fingers like on a piano, floating
2021-02-02 20:37:32 +0100 <monochrom> In fact, I don't even have a notion for "the right keyboard". I only have a notion for "the right wristrest".
2021-02-02 20:37:49 +0100 <maerwald> and I can confirm... my RSI is so bad I can't rest my wrist at all... floating typing works for 1-2 hours
2021-02-02 20:38:09 +0100 <merijn> maerwald: I imagine that depends on the type of RSI too
2021-02-02 20:38:14 +0100 <maerwald> probably
2021-02-02 20:38:22 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 20:38:27 +0100 <merijn> maerwald: If it's you wrists, probably carpal tunnel?
2021-02-02 20:38:37 +0100 <maerwald> merijn: I'll know next week
2021-02-02 20:39:01 +0100 <maerwald> it's also common to have multiple
2021-02-02 20:39:16 +0100 <maerwald> starting with tendonitis and then inflammation slowly causes carapl
2021-02-02 20:39:31 +0100 <monochrom> I disagree with them. I play the piano too. Piano is like the opposite of typing.
2021-02-02 20:39:36 +0100 <koz_> I believe what this all amounts to is 'everyone is different and one-size-fits-all solutions vis a vis human bodies won't work for at least some folks'.
2021-02-02 20:39:53 +0100 <merijn> koz_: Pfft!
2021-02-02 20:39:54 +0100 <maerwald> koz_: hm, not sure... our bodies are not that different
2021-02-02 20:39:58 +0100 <merijn> koz_: You and your crazy logic!
2021-02-02 20:40:02 +0100 <maerwald> you have the same forearm bones as I do
2021-02-02 20:40:05 +0100 <koz_> merijn: Logic? Me? Never.
2021-02-02 20:40:18 +0100 <koz_> maerwald: Not really. For one thing, I'm pretty sure you're not the same height as I am.
2021-02-02 20:40:31 +0100 <maerwald> your natural forearm position is when your hands are 90 degrees tilted
2021-02-02 20:40:35 +0100 <koz_> Therefore our forearm bones differ in _length_ at least.
2021-02-02 20:40:36 +0100 <maerwald> for most ppl :p
2021-02-02 20:40:36 +0100 <merijn> maerwald: Depends on your posture, exercise, etc. too
2021-02-02 20:41:35 +0100 <aldum> koz_: i3? no love for xmonad?
2021-02-02 20:41:49 +0100 <koz_> aldum: i3 does what I need it to do.
2021-02-02 20:41:56 +0100 <koz_> I see no reason to switch for the sake of switching.
2021-02-02 20:42:08 +0100 <aldum> agreed
2021-02-02 20:42:27 +0100 <aldum> the only reason I looked into going back to xmonad is the lack of config include in i3
2021-02-02 20:42:43 +0100 <maerwald> koz_: except you already have to roll your own patches for i3, because upstream is stubborn
2021-02-02 20:42:43 +0100 <geekosaur> it's not like we're engaged in world domination over here
2021-02-02 20:42:55 +0100 <monochrom> Piano playing, most of the time you have nothing hanging, you whole arm-wrist-finger are supported by the keys before you are pressing hard on a chord.
2021-02-02 20:42:56 +0100 <koz_> maerwald: I guess my needs are limited enough that I haven't needed to do that?
2021-02-02 20:43:07 +0100knupfer(~Thunderbi@200116b82c1c2700194aa0356f059b98.dip.versatel-1u1.de) (Ping timeout: 260 seconds)
2021-02-02 20:43:21 +0100 <maerwald> koz_: window icons are a must for me :)
2021-02-02 20:43:23 +0100 <monochrom> Coding is the opposite of that. Most of the time you are not pressing anything.
2021-02-02 20:43:29 +0100rayyyy(~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds)
2021-02-02 20:43:37 +0100 <maerwald> monochrom: haha
2021-02-02 20:44:13 +0100 <maerwald> monochrom: totally disagree... I spent 80% of my time navigating in vim... and that's a lot of keypresses
2021-02-02 20:44:20 +0100 <koz_> I don't even need window _decorations_.
2021-02-02 20:44:31 +0100 <monochrom> In other words, piano: your duty cycle is pressing hard (and being supported) for longer, releasing for shorter. Coding: pressing for shorter, releasing for longer.
2021-02-02 20:44:31 +0100 <merijn> maerwald: get better at vim ;) *duck*
2021-02-02 20:44:34 +0100 <koz_> Like, basically, I tolerate GUIs only because of like, three applications.
2021-02-02 20:44:48 +0100 <koz_> If I could do my job 100% without GUIs, I'd drop them like they're hot.
2021-02-02 20:44:56 +0100 <maerwald> merijn: to navigate, you have to press keys :)
2021-02-02 20:44:57 +0100 <monochrom> No no maerwald, see my latest sentence.
2021-02-02 20:44:59 +0100 <koz_> (unfortunately I can't)
2021-02-02 20:45:07 +0100 <merijn> maerwald: Not so many if you navigate right ;)
2021-02-02 20:45:13 +0100 <merijn> koz_: browser and?
2021-02-02 20:45:15 +0100 <monochrom> Piano playing can have a lot of keypresses too.
2021-02-02 20:45:21 +0100 <maerwald> merijn: no, that depends on the codebase
2021-02-02 20:45:40 +0100 <koz_> merijn: PDF viewer, and like one other thing I can't recall right now?
2021-02-02 20:45:41 +0100 <merijn> koz_: Right now it's basically browser, teams, mail, and spotify that require gui for me :p
2021-02-02 20:45:45 +0100mmohammadi9812(~mmohammad@2.178.211.91) (Ping timeout: 240 seconds)
2021-02-02 20:45:46 +0100 <merijn> oh, right PDFs
2021-02-02 20:46:00 +0100 <aveltras> web browser ?
2021-02-02 20:46:06 +0100 <koz_> And you have all my sympathies that you have to use Teams for anything.
2021-02-02 20:46:15 +0100 <merijn> koz_: Teams is great!
2021-02-02 20:46:21 +0100 <koz_> merijn: I beg to differ.
2021-02-02 20:46:26 +0100 <merijn> Sometimes the latency for typing a letter is only 5 seconds in a busy chat!
2021-02-02 20:46:32 +0100 <koz_> Lol.
2021-02-02 20:46:36 +0100 <koz_> Microsoft quality right there.
2021-02-02 20:46:40 +0100 <aveltras> spotifyd + spotify-tui works nicely (when it works)
2021-02-02 20:46:46 +0100 <aldum> mail doesn't need gui for most emails
2021-02-02 20:46:58 +0100 <koz_> aldum: You never receive HTML email?
2021-02-02 20:47:01 +0100 <koz_> Wow, how lucky.
2021-02-02 20:47:20 +0100geekosaurgave up on that battle a decade ago
2021-02-02 20:47:26 +0100 <aldum> that's why I said most :S
2021-02-02 20:47:30 +0100 <merijn> aldum: I haven't found any convenient terminal email client in the past and I reasonably like macOS mail
2021-02-02 20:47:41 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
2021-02-02 20:48:18 +0100 <merijn> aveltras: "when it works" is not an option for me and Spotify. My Spotify use is probably about 16/7 :p
2021-02-02 20:48:21 +0100 <maerwald> koz_: you know vim vixen ff extension?
2021-02-02 20:48:33 +0100 <monochrom> I use Thunderbird. But my terminal email client before that was emacs gnus.
2021-02-02 20:48:51 +0100 <maerwald> it didn't make me drop mouse use, but you can do without it (at a slightly slower pace)
2021-02-02 20:49:04 +0100 <koz_> maerwald: No, I didn't know about that.
2021-02-02 20:49:15 +0100 <maerwald> I can even use it well with speech recognition
2021-02-02 20:49:27 +0100 <monochrom> The fundamental limitation of terminal email clients (that actually exist) is this: What if I want to have two emails open side by side, huh?
2021-02-02 20:49:42 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-02 20:49:49 +0100 <monochrom> (And composing my reply on the side, too.)
2021-02-02 20:49:58 +0100 <aldum> tmux?
2021-02-02 20:50:07 +0100 <koz_> monochrom: <suckless>multiple terminals like god and i3 intended, noob</suckless>
2021-02-02 20:50:30 +0100 <maerwald> never understood the use of tmux on a local machine when you have a tiling wm :p
2021-02-02 20:50:36 +0100 <merijn> koz_: I just run 1 terminal and tmux, like god intended :p
2021-02-02 20:50:36 +0100 <aveltras> you first memorize the first email by heart then write your reply, problem solved
2021-02-02 20:50:45 +0100 <monochrom> Well yeah you think running 3 pine instances in parallel doesn't cause race conditions?
2021-02-02 20:50:51 +0100 <merijn> maerwald: Because it means the workflow for remote and local is the same
2021-02-02 20:50:52 +0100 <dolio> Running multiple copies of your e-mail client because it can't do panes doesn't sound like sucking less.
2021-02-02 20:51:06 +0100 <aldum> exactly, remotability
2021-02-02 20:51:11 +0100 <aldum> and logical grouping
2021-02-02 20:51:11 +0100 <maerwald> merijn: I try to minimize the time I do anything remote and don't accept devops jobs
2021-02-02 20:51:26 +0100mmohammadi9812(~mmohammad@2.178.211.91)
2021-02-02 20:51:36 +0100 <merijn> maerwald: Most of my phd was spent working on our cluster, so remote was the only option
2021-02-02 20:51:37 +0100 <aldum> it's a concern on a home network too :)
2021-02-02 20:51:39 +0100 <aldum> at least for me
2021-02-02 20:51:47 +0100 <koz_> dolio: A lot of suckless stuff indeed sucks more.
2021-02-02 20:52:00 +0100 <jollygood2> hi. can someone help me with this? https://pastebin.com/pTsfiM6y message box created by C windows api call, ran in a separate haskell thread, blocks main thread. according to documentation adding -threaded option when linking should be enough to prevent this from happening, but it wasn't in this particular case. https://hackage.haskell.org/package/base-4.14.1.0/docs/Control-Concurrent.html#v:forkOS
2021-02-02 20:52:45 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-02 20:53:06 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-02 20:53:15 +0100 <monochrom> At any rate, those of you who tell me to use tmux for multiple instances of terminal email clients, send me your screenshot of you turn doing that to terminal web browsers, then I'll believe you.
2021-02-02 20:53:28 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 20:53:30 +0100 <monochrom> s/you turn/your turn/
2021-02-02 20:53:42 +0100 <koz_> monochrom: For the record, I am not such a person.
2021-02-02 20:53:48 +0100 <glguy> jollygood2: Do you know if the Win32 stuff requires those calls to all be made from the main thread?
2021-02-02 20:53:48 +0100 <merijn> monochrom: Oh, I wasn't saying you should use tmux for that. I just use a GUI mail client like a pleb :p
2021-02-02 20:53:51 +0100 <monochrom> Darn typos, maybe I should type like playing piano.
2021-02-02 20:54:17 +0100 <maerwald> lol
2021-02-02 20:54:18 +0100 <koz_> merijn: I'm even more of a pleb - I do email in my browser.
2021-02-02 20:54:21 +0100 <monochrom> Yes this is why I ditched text mode and switched to Thunderbird too.
2021-02-02 20:54:56 +0100 <monochrom> And my definition of "pleb" is the opposite.
2021-02-02 20:54:57 +0100 <merijn> koz_: pfft
2021-02-02 20:55:15 +0100 <merijn> koz_: I want *less* browser in my life, not more :p
2021-02-02 20:55:23 +0100 <jollygood2> glguy, I wrote similar code in C version, and MessageBox doesn't block other threads, the print loop, or the GUI window that runs in the main thread, and MessageBox in a separate one
2021-02-02 20:55:30 +0100 <koz_> merijn: Ehh, I already have it running all the damn time anyway, what's one more tab.
2021-02-02 20:55:42 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-02-02 20:55:50 +0100 <monochrom> You're a pleb when you're so poor you can't even buy a 1024x768 display you're stuck with VT100 so that's why you run everything in tmux.
2021-02-02 20:55:54 +0100 <jollygood2> I tried forkOS as well, even though it shouldn't be necessary according to documentation
2021-02-02 20:55:58 +0100 <aveltras> firefox, emacs and a terminal is all you need
2021-02-02 20:56:07 +0100 <monochrom> I am rich I have a 1650x1050 display I'm going to actually use it.
2021-02-02 20:56:11 +0100 <merijn> aveltras: You forgot about a good editor
2021-02-02 20:56:12 +0100ixaxaar(~ixaxaar@49.207.210.215) (Ping timeout: 272 seconds)
2021-02-02 20:56:47 +0100 <aveltras> i have an editor in my operating system
2021-02-02 20:57:49 +0100 <maerwald> merijn: I had an idea of a "navigation mode" in vim, where you can't do any text changes and 1,2,3 etc would be modifiers for your home row keys (similarly, being able to page up/down without using Control key)
2021-02-02 20:57:57 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit)
2021-02-02 20:58:05 +0100 <jollygood2> glguy, hmm, did you mean that maybe haskell runs winapi calls from the main thread deliberately, even if I use fork* functions?
2021-02-02 20:58:19 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 20:58:30 +0100 <merijn> maerwald: I mean "page up/down" with control is just one keybind away?
2021-02-02 20:58:36 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-02-02 20:58:45 +0100 <maerwald> merijn: but the keys are all reserved already :)
2021-02-02 20:58:52 +0100 <glguy> jollygood2: I was wondering if you are intended to only run that call from the main thread
2021-02-02 20:58:53 +0100 <maerwald> at least on my right side
2021-02-02 20:59:07 +0100 <glguy> jollygood2: I don't konw how the Win32 API works, I think the GTK one works like that, howver
2021-02-02 20:59:43 +0100 <glguy> jollygood2: OH
2021-02-02 20:59:44 +0100 <glguy> foreign import WINDOWS_CCONV unsafe "windows.h Sleep"
2021-02-02 20:59:59 +0100 <geekosaur> X11 and probably Wayland has a thread limitation that I think win32 doesn't; each thread would need its own independent connection to the display server
2021-02-02 21:00:01 +0100 <glguy> jollygood2: don't use sleep
2021-02-02 21:00:05 +0100 <glguy> it's broken
2021-02-02 21:00:12 +0100 <merijn> glguy: oh no
2021-02-02 21:00:18 +0100 <merijn> glguy: What
2021-02-02 21:00:38 +0100 <glguy> stick with threadDelay http://hackage.haskell.org/package/base-4.14.1.0/docs/GHC-Conc.html#v:threadDelay
2021-02-02 21:00:58 +0100 <merijn> glguy: I have nightmare flashbacks of someone making a PR to my code that marked all foreign imports "unsafe" because "it's faster!"
2021-02-02 21:01:21 +0100 <monochrom> Yikes.
2021-02-02 21:01:42 +0100 <monochrom> You know what, it can also be caused by a simple opposite misunderstanding.
2021-02-02 21:02:00 +0100 <merijn> monochrom: In the Win32 you mean?
2021-02-02 21:02:02 +0100 <jollygood2> I removed sleep, messageBox is still blocking. maybe something similar is done with messageBox?
2021-02-02 21:02:19 +0100 <glguy> messageBox was imported as "safe"
2021-02-02 21:02:29 +0100 <monochrom> Right? Because a careless reading of the doc can get you to think "OK, my function is unsafe, I mark it 'unsafe' to warn the compiler"...
2021-02-02 21:02:45 +0100 <monochrom> I know because I thought that for a few minutes.
2021-02-02 21:02:50 +0100 <merijn> oh, wow
2021-02-02 21:02:57 +0100 <geekosaur> I did too, back when I first read it
2021-02-02 21:03:02 +0100 <merijn> there's at least 1 other issue on the win32 of code blocking indefinitely
2021-02-02 21:03:05 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 258 seconds)
2021-02-02 21:03:16 +0100 <merijn> brb, making a bunch of comments on how to fix this properly >.>
2021-02-02 21:04:25 +0100frozenErebus(~frozenEre@37.231.239.43) (Ping timeout: 240 seconds)
2021-02-02 21:05:06 +0100petersen(~petersen@redhat/juhp) (Ping timeout: 240 seconds)
2021-02-02 21:05:07 +0100 <monochrom> Just one of many straws that led me to conclude that "meaingful" names are a case of the road to hell is paved with well intention.
2021-02-02 21:06:09 +0100d3od(~nickmeno3@78-1-90-197.adsl.net.t-com.hr)
2021-02-02 21:07:45 +0100fresheyeball(~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Ping timeout: 264 seconds)
2021-02-02 21:08:04 +0100petersen(~petersen@redhat/juhp)
2021-02-02 21:08:18 +0100 <maerwald> merijn: https://www.vim.org/scripts/script.php?script_id=2467 nice
2021-02-02 21:09:06 +0100fresheyeball(~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com)
2021-02-02 21:10:02 +0100fendor(~fendor@77.119.131.134.wireless.dyn.drei.com) (Remote host closed the connection)
2021-02-02 21:10:55 +0100 <jollygood2> glguy, it looks like your intuition was right.. this is very old project, that is using old version of Win32. and messageBox was imported as unsafe. http://hackage.haskell.org/package/Win32-2.3.1.1/docs/src/Graphics.Win32.Misc.html#messageBox
2021-02-02 21:11:43 +0100 <merijn> I have commented on this issue with the problem/solution and also mentioned the problem with sleep: https://github.com/haskell/win32/issues/149#issuecomment-771945628
2021-02-02 21:12:00 +0100 <merijn> If someone wants to do something useful with their time, this should be a pretty easy and rote fix
2021-02-02 21:12:17 +0100 <merijn> Just grep for unsafe foreign imports and delete unsafe everywhere you're not 100% sure it's fine
2021-02-02 21:12:27 +0100fendor(~fendor@77.119.131.134.wireless.dyn.drei.com)
2021-02-02 21:13:58 +0100 <merijn> wow
2021-02-02 21:14:05 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer)
2021-02-02 21:14:07 +0100 <merijn> this bug is *at least* 17 years old
2021-02-02 21:14:13 +0100 <merijn> How did no one notice?!
2021-02-02 21:14:30 +0100 <maerwald> they were busy writing production code
2021-02-02 21:14:58 +0100 <merijn> maerwald: More like "not using windows" :p
2021-02-02 21:15:04 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl)
2021-02-02 21:15:14 +0100 <merijn> None of this has ever worked >.>
2021-02-02 21:15:15 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 21:15:29 +0100 <merijn> Except through sheer luck
2021-02-02 21:16:00 +0100 <merijn> jollygood2: Welp, easy way to score brownie points and fix some major ancient bugs for you right there ;)
2021-02-02 21:16:11 +0100 <monochrom> Or perhaps everyone noticed but everyone had their private workaround and kept quiet.
2021-02-02 21:16:16 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 21:16:20 +0100ubert(~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de)
2021-02-02 21:16:28 +0100 <jollygood2> merijn :)
2021-02-02 21:17:38 +0100 <jollygood2> is unsafe ever needed?
2021-02-02 21:18:05 +0100 <merijn> *needed*? no
2021-02-02 21:18:17 +0100 <merijn> jollygood2: It is slightly faster, though
2021-02-02 21:18:25 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 21:18:35 +0100 <merijn> jollygood2: At the risk of, you know, deadlocking your program if you don't know what you're doing
2021-02-02 21:18:36 +0100avdb(~avdb@gateway/tor-sasl/avdb) (Remote host closed the connection)
2021-02-02 21:19:09 +0100 <merijn> jollygood2: For functions that never block and don't run (like memset) it *might* be worth it *iff* you're going to call them in a tight loop, for example
2021-02-02 21:19:29 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds)
2021-02-02 21:19:35 +0100Sgeo(~Sgeo@ool-18b98aa4.dyn.optonline.net)
2021-02-02 21:19:53 +0100 <merijn> That said, I've experimented with making sqlite's row accessing functions unsafe to speed up some code looping over a few million rows and got...basically 0 speedup
2021-02-02 21:20:22 +0100 <merijn> So, just deleting all of them in Win32 is probably justifiable
2021-02-02 21:23:16 +0100nhs(~nhs@c-24-20-87-79.hsd1.or.comcast.net)
2021-02-02 21:24:01 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl)
2021-02-02 21:25:07 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8)
2021-02-02 21:26:25 +0100frdg(~nick@pool-96-233-64-53.bstnma.fios.verizon.net) (Ping timeout: 240 seconds)
2021-02-02 21:27:47 +0100 <jollygood2> merijn, yes I agree. I'll look into it. and yes, foreign importing MessageBox, without unsafe keyword, fixed the issue!
2021-02-02 21:28:12 +0100 <koz_> Does (<>) lift into (,) the way I expect?
2021-02-02 21:28:21 +0100 <koz_> (namely, along either side)
2021-02-02 21:28:45 +0100kav(~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) (Ping timeout: 264 seconds)
2021-02-02 21:28:52 +0100 <Uniaika> koz_: do you expect to have `a <> b == (a,b)` ?
2021-02-02 21:29:04 +0100mputz(~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de)
2021-02-02 21:29:06 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 246 seconds)
2021-02-02 21:29:07 +0100 <merijn> koz_: Yes
2021-02-02 21:29:24 +0100 <koz_> Uniaika: No, I am talking about (x1, y1) <> (x2, y2) = (x1 <> x2, y1 <> y2)
2021-02-02 21:29:27 +0100 <koz_> merijn: Thanks.
2021-02-02 21:29:41 +0100 <merijn> koz_: I mean, that's the only sensible thing it can do
2021-02-02 21:29:44 +0100 <Uniaika> koz_: ah!
2021-02-02 21:30:00 +0100 <koz_> merijn: Yeah, guess that makes sense.
2021-02-02 21:30:04 +0100 <merijn> koz_: I mean, I suppose it could do "Dual" on both or do one regularly and the other Dual, but that seems...dumb :p
2021-02-02 21:30:11 +0100 <koz_> LOL
2021-02-02 21:30:17 +0100urodna(~urodna@unaffiliated/urodna) (Read error: Connection reset by peer)
2021-02-02 21:30:22 +0100 <koz_> newtype Lopsided ...
2021-02-02 21:30:36 +0100 <merijn> You can just coerce :p
2021-02-02 21:30:55 +0100dnlkrgr(~dnlkrgr@2a02:8070:a193:c900:499e:985f:a4ed:16ef) (Ping timeout: 272 seconds)
2021-02-02 21:32:22 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-235.hsi8.kabel-badenwuerttemberg.de)
2021-02-02 21:35:19 +0100 <koz_> Yep, true that.
2021-02-02 21:37:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-02 21:37:51 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 21:38:58 +0100haskell-noob(2ea162a3@46.161.98.163)
2021-02-02 21:41:13 +0100Wuzzy(~Wuzzy@p5b0df175.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
2021-02-02 21:41:56 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
2021-02-02 21:45:23 +0100liyang(~liyang@90.253.54.54)
2021-02-02 21:48:34 +0100kav(~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi)
2021-02-02 21:49:05 +0100 <ph88> how can a hashmap be in unordered containers but have a fold function that goes through the values one-by-one (thus in an order) ?
2021-02-02 21:49:21 +0100 <glguy> It's a computer; there's an order
2021-02-02 21:49:28 +0100 <ph88> ok
2021-02-02 21:49:31 +0100 <glguy> You just don't get any guarantees which one it is
2021-02-02 21:49:52 +0100sord937(~sord937@gateway/tor-sasl/sord937) (Quit: sord937)
2021-02-02 21:50:09 +0100 <koz_> The order is 'lol, whatevs, dude'.
2021-02-02 21:50:16 +0100 <monochrom> I would say: someone more vocal than you, but less correct, demanded it and got their way.
2021-02-02 21:50:20 +0100 <koz_> It's the same as the one for 'toList'.
2021-02-02 21:50:28 +0100 <koz_> Yeah, it's ... not ideal.
2021-02-02 21:50:31 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-02 21:50:46 +0100kav(~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) (Client Quit)
2021-02-02 21:50:54 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 21:50:59 +0100 <koz_> For 'tyConModule', what does the String it produces end up looking like?
2021-02-02 21:51:07 +0100d3od(~nickmeno3@78-1-90-197.adsl.net.t-com.hr) (Remote host closed the connection)
2021-02-02 21:51:07 +0100 <koz_> Would it be "Foo.Bar.Baz" or something?
2021-02-02 21:51:15 +0100kav(~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi)
2021-02-02 21:54:31 +0100 <koz_> Seems so.
2021-02-02 21:55:36 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 258 seconds)
2021-02-02 21:56:28 +0100pruiz(~pruiz@2a01:4b00:8467:2300:c02f:54be:9b7:7ed3) (Quit: WeeChat 2.8)
2021-02-02 22:00:01 +0100_ht(~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
2021-02-02 22:00:44 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl)
2021-02-02 22:02:27 +0100 <hololeap> how do i convert a ByteString of ASCII digits into a Natural?
2021-02-02 22:03:09 +0100 <hololeap> do i have to convert it to Text with Data.Text.Encoding.decodeUtf8, then to String, then `read` it?
2021-02-02 22:03:37 +0100 <merijn> hololeap: Depends, do you want to be a sinner?
2021-02-02 22:03:41 +0100pera(~pera@unaffiliated/pera) (Ping timeout: 256 seconds)
2021-02-02 22:03:59 +0100 <monochrom> Do you accept Integer? Data.ByteString.Char8.readInteger exists.
2021-02-02 22:04:07 +0100 <merijn> If you're sure it's ascii you can just convert bytes to digits directly
2021-02-02 22:04:15 +0100 <merijn> > ord '0'
2021-02-02 22:04:17 +0100 <lambdabot> 48
2021-02-02 22:04:30 +0100 <merijn> just access the Word8 and subtract 48 for each digit!
2021-02-02 22:04:49 +0100son0p(~son0p@181.136.122.143) (Ping timeout: 256 seconds)
2021-02-02 22:04:58 +0100 <hololeap> the bytestring is already sanitized with megaparsec
2021-02-02 22:05:31 +0100 <hololeap> monochrom, sadly there doesn't seem to be a way to parse a char8 ByteString with megaparsec
2021-02-02 22:06:01 +0100 <hololeap> and i know about `decimal` in megaparsec. the problem is that the first digit isn't allowed to be '0'
2021-02-02 22:06:18 +0100cr3(~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving)
2021-02-02 22:06:21 +0100 <monochrom> Could you perform an experiment for me?
2021-02-02 22:06:30 +0100 <merijn> "optional (char '0') >> decimal"
2021-02-02 22:06:35 +0100 <merijn> boom
2021-02-02 22:06:39 +0100 <monochrom> In a fresh ghci session, import Data.ByteString.Char8 and :info ByteString
2021-02-02 22:06:44 +0100 <merijn> I'll collect my genius award now
2021-02-02 22:06:45 +0100son0p(~son0p@181.136.122.143)
2021-02-02 22:06:46 +0100 <monochrom> In another fresh ghci session, import Data.ByteString and :info ByteString
2021-02-02 22:07:02 +0100 <monochrom> Compare. Any difference between the "two different" types?
2021-02-02 22:07:32 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-02 22:07:33 +0100 <monochrom> In particular the "Defined in ???" clauses.
2021-02-02 22:08:24 +0100 <hololeap> monochrom: no i guess there isn't any difference.
2021-02-02 22:08:32 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Remote host closed the connection)
2021-02-02 22:09:14 +0100 <hololeap> hm, ok that's a pleasant surprise
2021-02-02 22:09:25 +0100nuncanada(~dude@179.235.160.168) (Ping timeout: 256 seconds)
2021-02-02 22:09:32 +0100 <merijn> hololeap: Char8 is the same datatype, just exporting horribly data corrupting functions instead of sane ones :p
2021-02-02 22:09:48 +0100conal(~conal@64.71.133.70)
2021-02-02 22:10:27 +0100 <monochrom> This is why Henning Thielemann's naming scheme works.
2021-02-02 22:10:34 +0100 <hololeap> oh, and before you get any prizes merijn, i want it to throw an error if there's a leading 0
2021-02-02 22:10:46 +0100 <monochrom> Since people already assume that module names are also type names, why not institutionalize it.
2021-02-02 22:13:43 +0100dnlkrgr(~dnlkrgr@HSI-KBW-046-005-005-235.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 265 seconds)
2021-02-02 22:16:31 +0100zebrag(~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!)
2021-02-02 22:16:50 +0100zebrag(~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr)
2021-02-02 22:17:01 +0100 <maerwald[m]> merijn: That's like saying head is data corrupting :p
2021-02-02 22:17:05 +0100 <merijn> hololeap: "optional (char '0' >> empty) >> decimal" :p
2021-02-02 22:17:14 +0100 <merijn> maerwald[m]: Not really
2021-02-02 22:17:36 +0100 <merijn> maerwald[m]: head has the decency to crash on unsupported input
2021-02-02 22:18:22 +0100 <maerwald[m]> merijn: If You truncate you get a truncated result
2021-02-02 22:18:53 +0100 <merijn> maerwald[m]: It doesn't truncate, though, it just drops data in the middle
2021-02-02 22:19:51 +0100 <maerwald[m]> Yeah well, at least takes less space, doesn't it?
2021-02-02 22:19:59 +0100 <hololeap> merijn: nice. here ya go: πŸŽοΈπŸŽοΈπŸŽοΈπŸŽοΈπŸ’ŠοΈπŸ’ŠοΈπŸ’ŠοΈπŸ‘ΊοΈπŸŽ–οΈπŸŽ–οΈπŸŽ–οΈ
2021-02-02 22:22:08 +0100pgib(~textual@lmms/pgib)
2021-02-02 22:24:00 +0100fendor_(~fendor@91.141.2.117.wireless.dyn.drei.com)
2021-02-02 22:24:02 +0100 <merijn> Anyhoo, bedtime!
2021-02-02 22:25:21 +0100geekosaur(82650c7c@130.101.12.124) (Quit: Connection closed)
2021-02-02 22:27:19 +0100 <Uniaika> nacht, merijn!
2021-02-02 22:27:29 +0100fendor(~fendor@77.119.131.134.wireless.dyn.drei.com) (Ping timeout: 256 seconds)
2021-02-02 22:29:07 +0100 <ph88> how can i inspect more specific information of the IOError i get from tryIOError ?
2021-02-02 22:29:11 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2021-02-02 22:29:51 +0100elfets(~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving)
2021-02-02 22:30:37 +0100DataComputist(~lumeng@50.43.26.251) (Quit: Leaving...)
2021-02-02 22:36:19 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr)
2021-02-02 22:37:00 +0100j2t(~user@84.122.202.215.dyn.user.ono.com) (Ping timeout: 246 seconds)
2021-02-02 22:37:45 +0100coot(~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot)
2021-02-02 22:42:25 +0100Foritus(~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Ping timeout: 240 seconds)
2021-02-02 22:44:07 +0100geekosaur(82650c7c@130.101.12.124)
2021-02-02 22:44:28 +0100frdg(~nick@pool-96-252-123-136.bstnma.fios.verizon.net)
2021-02-02 22:45:31 +0100knupfer(~Thunderbi@200116b82c1c27005d8bb76cf3d58ad1.dip.versatel-1u1.de)
2021-02-02 22:48:02 +0100hololeap(~hololeap@unaffiliated/hololeap) (Ping timeout: 265 seconds)
2021-02-02 22:48:19 +0100obihann(~jhann@142.177.168.17)
2021-02-02 22:49:35 +0100DataComputist(~lumeng@50.43.26.251)
2021-02-02 22:50:45 +0100Varis(~Tadas@unaffiliated/varis) (Remote host closed the connection)
2021-02-02 22:51:45 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
2021-02-02 22:54:03 +0100forgottenone(~forgotten@176.42.24.1) (Quit: Konversation terminated!)
2021-02-02 22:56:03 +0100geekosaur(82650c7c@130.101.12.124) (Quit: Connection closed)
2021-02-02 22:56:26 +0100xff0x_(~xff0x@2001:1a81:5334:6300:8f10:9c9a:fe89:fa33) (Ping timeout: 264 seconds)
2021-02-02 22:56:30 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-02 22:56:51 +0100xff0x_(~xff0x@2001:1a81:5334:6300:744e:2f9e:5495:d27d)
2021-02-02 22:57:16 +0100DataComputist(~lumeng@50.43.26.251) (Ping timeout: 240 seconds)
2021-02-02 22:58:00 +0100geowiesnot(~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds)
2021-02-02 22:58:16 +0100conal(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-02 22:59:38 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 23:01:49 +0100pavonia(~user@unaffiliated/siracusa)
2021-02-02 23:01:49 +0100conal_(~conal@64.71.133.70)
2021-02-02 23:01:55 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-02 23:02:50 +0100Tario(~Tario@201.192.165.173)
2021-02-02 23:03:30 +0100 <monochrom> ph88: System.IO.Error has a lot of "isXXX" functions etc
2021-02-02 23:03:57 +0100DataComputist(~lumeng@50.43.26.251)
2021-02-02 23:04:45 +0100jonatanb(~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 272 seconds)
2021-02-02 23:04:55 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2021-02-02 23:05:16 +0100Rudd0(~Rudd0@185.189.115.108)
2021-02-02 23:08:17 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-02-02 23:09:02 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8)
2021-02-02 23:09:38 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 23:10:09 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds)
2021-02-02 23:11:10 +0100 <ski> @type catchJust
2021-02-02 23:11:11 +0100 <lambdabot> Exception e => (e -> Maybe b) -> IO a -> (b -> IO a) -> IO a
2021-02-02 23:11:19 +0100 <ph88> oh thx
2021-02-02 23:11:34 +0100 <ski> @type tryJust
2021-02-02 23:11:36 +0100 <lambdabot> Exception e => (e -> Maybe b) -> IO a -> IO (Either b a)
2021-02-02 23:12:57 +0100 <ski> (note that `tryIOError' is just a type-restricted version of `try')
2021-02-02 23:13:48 +0100heatsink(~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Ping timeout: 258 seconds)
2021-02-02 23:14:31 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
2021-02-02 23:14:37 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2021-02-02 23:17:17 +0100fendor_(~fendor@91.141.2.117.wireless.dyn.drei.com) (Read error: Connection reset by peer)
2021-02-02 23:20:54 +0100joseph1(~joseph@cpe-65-31-18-174.insight.res.rr.com)
2021-02-02 23:20:59 +0100miguel_clean(~Miguel@89-72-187-203.dynamic.chello.pl) (Quit: Leaving.)
2021-02-02 23:22:45 +0100SwarmCollective(~joseph@cpe-65-31-18-174.insight.res.rr.com) (Ping timeout: 264 seconds)
2021-02-02 23:23:04 +0100superfly1(~superfly@185.163.110.108) (Remote host closed the connection)
2021-02-02 23:24:59 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 23:28:46 +0100Franciman(~francesco@host-95-235-155-82.retail.telecomitalia.it) (Quit: Leaving)
2021-02-02 23:28:56 +0100thefybe(~thefybe@249-147-161-N2.customer.vsm.sh) (Ping timeout: 240 seconds)
2021-02-02 23:29:18 +0100thefybe(~thefybe@249-147-161-N2.customer.vsm.sh)
2021-02-02 23:29:22 +0100danvet(~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 260 seconds)
2021-02-02 23:30:31 +0100mnrmnaugh(~mnrmnaugh@unaffiliated/mnrmnaugh)
2021-02-02 23:31:11 +0100renzhi(~renzhi@2607:fa49:6500:6f00::1e43)
2021-02-02 23:32:27 +0100__monty__(~toonn@unaffiliated/toonn)
2021-02-02 23:33:03 +0100__monty__(~toonn@unaffiliated/toonn) (Client Quit)
2021-02-02 23:33:05 +0100Tops21(~Tobias@dyndsl-095-033-022-141.ewe-ip-backbone.de) (Ping timeout: 240 seconds)
2021-02-02 23:33:47 +0100Tario(~Tario@201.192.165.173) (Read error: Connection reset by peer)
2021-02-02 23:34:19 +0100Tario(~Tario@201.192.165.173)
2021-02-02 23:34:35 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 23:36:38 +0100hololeap(~hololeap@unaffiliated/hololeap)
2021-02-02 23:37:17 +0100saurik(saurik@carrier.saurik.com)
2021-02-02 23:38:52 +0100aveltras(uid364989@gateway/web/irccloud.com/x-acxpamgdnfyygncw) (Quit: Connection closed for inactivity)
2021-02-02 23:38:55 +0100son0p(~son0p@181.136.122.143) (Quit: Lost terminal)
2021-02-02 23:38:57 +0100joseph1(~joseph@cpe-65-31-18-174.insight.res.rr.com) (Ping timeout: 272 seconds)
2021-02-02 23:39:09 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection)
2021-02-02 23:39:29 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
2021-02-02 23:39:31 +0100Guest62723(~ds@139.28.218.148)
2021-02-02 23:40:42 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds)
2021-02-02 23:41:24 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer)
2021-02-02 23:42:04 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 23:43:37 +0100Tario(~Tario@201.192.165.173) (Ping timeout: 265 seconds)
2021-02-02 23:44:31 +0100raehik1(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2021-02-02 23:44:54 +0100Tario(~Tario@200.119.184.36)
2021-02-02 23:45:25 +0100conal_(~conal@64.71.133.70) (Quit: Computer has gone to sleep.)
2021-02-02 23:45:54 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net)
2021-02-02 23:46:02 +0100ClaudiusMaximus(~claude@191.123.199.146.dyn.plus.net) (Changing host)
2021-02-02 23:46:02 +0100ClaudiusMaximus(~claude@unaffiliated/claudiusmaximus)
2021-02-02 23:46:31 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 265 seconds)
2021-02-02 23:46:58 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection)
2021-02-02 23:47:15 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)
2021-02-02 23:47:21 +0100hiroaki(~hiroaki@ip4d167562.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds)
2021-02-02 23:47:24 +0100conal(~conal@64.71.133.70)
2021-02-02 23:51:12 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed)
2021-02-02 23:51:33 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9)
2021-02-02 23:53:37 +0100hiroaki(~hiroaki@ip4d167562.dynamic.kabel-deutschland.de)
2021-02-02 23:54:09 +0100zhulikas_(~derp@hmm.wantstofly.org) (Read error: Connection reset by peer)
2021-02-02 23:55:26 +0100wroathe(~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
2021-02-02 23:55:27 +0100zhulikas(~derp@hmm.wantstofly.org)
2021-02-02 23:56:21 +0100royal_screwup21(52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds)
2021-02-02 23:57:03 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood)
2021-02-02 23:57:14 +0100nuncanada(~dude@179.235.160.168)
2021-02-02 23:58:13 +0100tromp(~tromp@dhcp-077-249-230-040.chello.nl)
2021-02-02 23:58:20 +0100star_cloud(~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com)