2021-02-02 00:00:28 +0100 | <ij> | ephemient, ill try that |
2021-02-02 00:01:30 +0100 | geowiesnot | (~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 +0100 | jamm_ | (~jamm@unaffiliated/jamm) |
2021-02-02 00:03:04 +0100 | irchaxwell | (~IRC@2a00:23a8:4382:a900:587b:b4e:634d:c1c8) |
2021-02-02 00:03:19 +0100 | forgottenone | (~forgotten@176.42.19.155) (Quit: Konversation terminated!) |
2021-02-02 00:03:52 +0100 | irchaxwell | (~IRC@2a00:23a8:4382:a900:587b:b4e:634d:c1c8) () |
2021-02-02 00:03:59 +0100 | deviantfero | (~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 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 240 seconds) |
2021-02-02 00:08:57 +0100 | fendor__ | (~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 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2021-02-02 00:11:11 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) |
2021-02-02 00:12:24 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 00:12:54 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) |
2021-02-02 00:12:57 +0100 | conal | (~conal@64.71.133.70) |
2021-02-02 00:14:08 +0100 | dhouthoo_ | (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0) |
2021-02-02 00:14:08 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 00:14:54 +0100 | conal | (~conal@64.71.133.70) (Client Quit) |
2021-02-02 00:15:04 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) |
2021-02-02 00:15:52 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 00:20:42 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 258 seconds) |
2021-02-02 00:23:19 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
2021-02-02 00:24:34 +0100 | son0p | (~son0p@181.136.122.143) (Quit: Lost terminal) |
2021-02-02 00:24:39 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) |
2021-02-02 00:26:03 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) (Max SendQ exceeded) |
2021-02-02 00:27:20 +0100 | lotuseat` | (~user@2a02:908:fbd1:b0a0:b483:a739:f5cf:4a41) |
2021-02-02 00:28:47 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:b8d2:7a79:927f:8886) |
2021-02-02 00:29:02 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
2021-02-02 00:29:24 +0100 | lotuseater | (~user@ip-176-198-181-127.hsi05.unitymediagroup.de) (Ping timeout: 265 seconds) |
2021-02-02 00:31:07 +0100 | ces | (~ces@fsf/member/ces) |
2021-02-02 00:33:50 +0100 | conal | (~conal@64.71.133.70) |
2021-02-02 00:36:06 +0100 | TommyC | (~TommyC@unaffiliated/sepulchralbloom) (Ping timeout: 246 seconds) |
2021-02-02 00:36:23 +0100 | nocm | (~chatzilla@178.141.160.197) |
2021-02-02 00:37:02 +0100 | __monty__ | (~toonn@unaffiliated/toonn) (Quit: leaving) |
2021-02-02 00:37:46 +0100 | TommyC | (~TommyC@unaffiliated/sepulchralbloom) |
2021-02-02 00:38:18 +0100 | jamm_ | (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
2021-02-02 00:39:24 +0100 | jamm_ | (~jamm@unaffiliated/jamm) |
2021-02-02 00:39:25 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving) |
2021-02-02 00:40:30 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 00:40:56 +0100 | gioyik | (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.0) |
2021-02-02 00:43:14 +0100 | usr25 | (~usr25@unaffiliated/usr25) (Quit: Leaving) |
2021-02-02 00:44:26 +0100 | jamm_ | (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
2021-02-02 00:44:45 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds) |
2021-02-02 00:46:29 +0100 | alx741 | (~alx741@181.196.69.29) (Quit: alx741) |
2021-02-02 00:46:44 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2021-02-02 00:47:22 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-02-02 00:47:42 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) |
2021-02-02 00:47:58 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) |
2021-02-02 00:50:05 +0100 | conal | (~conal@64.71.133.70) |
2021-02-02 00:57:53 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2021-02-02 00:58:30 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 00:59:05 +0100 | shiraeeshi | (~shiraeesh@109.166.57.33) (Ping timeout: 240 seconds) |
2021-02-02 01:00:51 +0100 | alx741 | (~alx741@181.196.69.29) |
2021-02-02 01:01:47 +0100 | Ranhir | (~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 +0100 | tromp | (~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 +0100 | Ranhir | (~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 +0100 | tromp | (~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 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds) |
2021-02-02 01:09:37 +0100 | mputz | (~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 +0100 | dnlkrgr | (~dnlkrgr@2a02:8070:a193:c900:245d:f92b:f644:1a9a) (Ping timeout: 258 seconds) |
2021-02-02 01:13:29 +0100 | bennofs__ | (~quassel@dslb-094-222-058-083.094.222.pools.vodafone-ip.de) |
2021-02-02 01:17:04 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 256 seconds) |
2021-02-02 01:17:21 +0100 | bennofs_ | (~quassel@dslb-094-222-050-219.094.222.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
2021-02-02 01:17:40 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 01:18:05 +0100 | fresheyeball | (~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) (Ping timeout: 240 seconds) |
2021-02-02 01:19:23 +0100 | rajivr | (uid269651@gateway/web/irccloud.com/x-cydbvtlxdfyoajld) |
2021-02-02 01:19:30 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
2021-02-02 01:20:20 +0100 | fresheyeball | (~isaac@c-71-237-105-37.hsd1.co.comcast.net) |
2021-02-02 01:21:34 +0100 | miguel_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 +0100 | conal | (~conal@64.71.133.70) |
2021-02-02 01:26:02 +0100 | alx741 | (~alx741@181.196.69.29) (Quit: alx741) |
2021-02-02 01:26:20 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 01:26:21 +0100 | alx741 | (~alx741@181.196.69.29) |
2021-02-02 01:26:36 +0100 | edwtjo | (~edwtjo@fsf/member/edwtjo) (Ping timeout: 240 seconds) |
2021-02-02 01:28:45 +0100 | deviantfero | (~deviantfe@190.150.27.58) (Ping timeout: 264 seconds) |
2021-02-02 01:29:49 +0100 | conal | (~conal@64.71.133.70) (Client Quit) |
2021-02-02 01:30:21 +0100 | deviantfero | (~deviantfe@190.150.27.58) |
2021-02-02 01:30:51 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 258 seconds) |
2021-02-02 01:33:27 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-02-02 01:34:03 +0100 | edwtjo | (~edwtjo@fsf/member/edwtjo) |
2021-02-02 01:39:45 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 01:44:16 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 258 seconds) |
2021-02-02 01:47:22 +0100 | zebrag | (~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 +0100 | zebrag | (~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 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2021-02-02 01:48:42 +0100 | jamm_ | (~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 +0100 | ph88 | (~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 +0100 | dnlkrgr | (~dnlkrgr@2a02:8070:a193:c900:7891:1ab1:ddee:eba1) |
2021-02-02 01:53:12 +0100 | jamm_ | (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
2021-02-02 01:53:18 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Ping timeout: 265 seconds) |
2021-02-02 01:53:33 +0100 | jespada | (~jespada@90.254.242.138) (Ping timeout: 272 seconds) |
2021-02-02 01:55:04 +0100 | jespada | (~jespada@90.254.242.138) |
2021-02-02 01:56:07 +0100 | conal | (~conal@64.71.133.70) |
2021-02-02 02:00:49 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
2021-02-02 02:02:05 +0100 | soft-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 +0100 | metreo | (~Thunderbi@unaffiliated/metreo) (Quit: metreo) |
2021-02-02 02:05:25 +0100 | alx741 | (~alx741@181.196.69.29) (Quit: alx741) |
2021-02-02 02:05:26 +0100 | renzhi | (~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 +0100 | alx741 | (~alx741@181.196.69.29) |
2021-02-02 02:07:07 +0100 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) (Read error: Connection reset by peer) |
2021-02-02 02:09:11 +0100 | dnlkrgr | (~dnlkrgr@2a02:8070:a193:c900:7891:1ab1:ddee:eba1) (Ping timeout: 258 seconds) |
2021-02-02 02:10:35 +0100 | pfurla | (~pfurla@ool-182ed2e2.dyn.optonline.net) |
2021-02-02 02:10:45 +0100 | nineonin_ | (~nineonine@50.216.62.2) (Ping timeout: 264 seconds) |
2021-02-02 02:10:45 +0100 | Rudd0 | (~Rudd0@185.189.115.103) (Read error: Connection reset by peer) |
2021-02-02 02:12:18 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2021-02-02 02:16:54 +0100 | cocytus | (~cocytus@cpe-76-95-48-109.socal.res.rr.com) (Ping timeout: 246 seconds) |
2021-02-02 02:17:48 +0100 | vgtw | (~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 +0100 | vgtw | (~vgtw@gateway/tor-sasl/vgtw) |
2021-02-02 02:19:00 +0100 | nineonine | (~nineonine@50.216.62.2) |
2021-02-02 02:23:36 +0100 | Lycurgus | (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) |
2021-02-02 02:30:38 +0100 | soft-warm | (4408f588@ip68-8-245-136.sd.sd.cox.net) (Quit: Ping timeout (120 seconds)) |
2021-02-02 02:31:29 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 265 seconds) |
2021-02-02 02:32:55 +0100 | Wuzzy | (~Wuzzy@p5b0df175.dip0.t-ipconnect.de) |
2021-02-02 02:33:36 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds) |
2021-02-02 02:33:55 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 02:34:13 +0100 | DirefulSalt | (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
2021-02-02 02:34:42 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
2021-02-02 02:36:25 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
2021-02-02 02:36:52 +0100 | alx741 | (~alx741@181.196.69.29) (Quit: alx741) |
2021-02-02 02:37:45 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds) |
2021-02-02 02:37:48 +0100 | alx741 | (~alx741@181.196.69.29) |
2021-02-02 02:38:37 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds) |
2021-02-02 02:45:28 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
2021-02-02 02:46:45 +0100 | nineonine | (~nineonine@50.216.62.2) (Ping timeout: 258 seconds) |
2021-02-02 02:50:30 +0100 | bgamari | (~bgamari@72.65.102.135) |
2021-02-02 02:51:33 +0100 | bgamari_ | (~bgamari@72.65.102.22) (Ping timeout: 264 seconds) |
2021-02-02 02:51:41 +0100 | bitmapper | (uid464869@gateway/web/irccloud.com/x-zkobjotekrfpnlhu) |
2021-02-02 02:51:49 +0100 | soft-warm | (4408f588@ip68-8-245-136.sd.sd.cox.net) |
2021-02-02 02:55:24 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection) |
2021-02-02 02:55:45 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) |
2021-02-02 03:03:36 +0100 | uwap | (~uwap@genja.uwap.name) (Ping timeout: 256 seconds) |
2021-02-02 03:04:03 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) (Ping timeout: 268 seconds) |
2021-02-02 03:04:04 +0100 | fiddlerwoaroof | (~fiddlerwo@unaffiliated/fiddlerwoaroof) (Ping timeout: 260 seconds) |
2021-02-02 03:04:46 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
2021-02-02 03:05:24 +0100 | alx741 | (~alx741@181.196.69.29) (Quit: alx741) |
2021-02-02 03:06:18 +0100 | alx741 | (~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 +0100 | ukari | (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
2021-02-02 03:08:30 +0100 | ukari | (~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 +0100 | garFF | (~garff@0x3e2c8761.mobile.telia.dk) (Read error: Connection reset by peer) |
2021-02-02 03:12:19 +0100 | toorevitimirp | (~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 +0100 | fiddlerwoaroof | (~fiddlerwo@unaffiliated/fiddlerwoaroof) |
2021-02-02 03:16:22 +0100 | uwap | (~uwap@mail.uwap.name) |
2021-02-02 03:16:39 +0100 | jb55 | (~jb55@gateway/tor-sasl/jb55) |
2021-02-02 03:24:16 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds) |
2021-02-02 03:24:36 +0100 | jonatanb | (~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds) |
2021-02-02 03:25:22 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2021-02-02 03:26:00 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Remote host closed the connection) |
2021-02-02 03:27:18 +0100 | TianGTY | (~textual@103.116.47.90) |
2021-02-02 03:27:57 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 03:28:32 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds) |
2021-02-02 03:29:08 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 03:29:44 +0100 | mcginleyr1_ | (uid475794@gateway/web/irccloud.com/x-wlcnxolzjahjktbd) |
2021-02-02 03:30:39 +0100 | haritz | (~hrtz@unaffiliated/haritz) (Ping timeout: 260 seconds) |
2021-02-02 03:31:50 +0100 | xff0x_ | (~xff0x@2001:1a81:52fa:6600:15f3:b1c2:7f2e:1231) (Ping timeout: 264 seconds) |
2021-02-02 03:32:16 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds) |
2021-02-02 03:33:05 +0100 | mmohammadi9812 | (~mmohammad@5.238.164.53) (Ping timeout: 240 seconds) |
2021-02-02 03:33:16 +0100 | mmohammadi9812 | (~mmohammad@5.115.226.197) |
2021-02-02 03:33:33 +0100 | xff0x_ | (~xff0x@2001:1a81:5334:6300:df2c:5529:9d1:9df2) |
2021-02-02 03:33:57 +0100 | charukiewicz | (~quassel@irouteince04.i.subnet.rcn.com) (Read error: Connection reset by peer) |
2021-02-02 03:34:05 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2021-02-02 03:37:03 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 03:40:10 +0100 | DataComputist | (~lumeng@50.43.26.251) |
2021-02-02 03:41:25 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds) |
2021-02-02 03:43:28 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Read error: Connection reset by peer) |
2021-02-02 03:44:04 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2021-02-02 03:45:15 +0100 | haritz | (~hrtz@62.3.70.206) |
2021-02-02 03:45:15 +0100 | haritz | (~hrtz@62.3.70.206) (Changing host) |
2021-02-02 03:45:15 +0100 | haritz | (~hrtz@unaffiliated/haritz) |
2021-02-02 03:45:55 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) (Ping timeout: 265 seconds) |
2021-02-02 03:48:45 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Ping timeout: 240 seconds) |
2021-02-02 03:50:16 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 265 seconds) |
2021-02-02 03:51:39 +0100 | alvinsj[m] | (alvinsjmat@gateway/shell/matrix.org/x-uchfnejtitviszqn) ("User left") |
2021-02-02 03:52:45 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 03:57:25 +0100 | hyperisco | (~hyperisco@104-195-141-253.cpe.teksavvy.com) (Ping timeout: 240 seconds) |
2021-02-02 03:59:37 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2021-02-02 04:01:07 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds) |
2021-02-02 04:03:19 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
2021-02-02 04:04:57 +0100 | urodna | (~urodna@unaffiliated/urodna) (Quit: urodna) |
2021-02-02 04:05:35 +0100 | raym | (~ray@45.64.220.55) (Quit: leaving) |
2021-02-02 04:05:53 +0100 | raym | (~ray@45.64.220.55) |
2021-02-02 04:07:08 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Remote host closed the connection) |
2021-02-02 04:09:33 +0100 | aveltras | (uid364989@gateway/web/irccloud.com/x-mxzuswfxnnumwsmo) (Quit: Connection closed for inactivity) |
2021-02-02 04:09:55 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 04:12:22 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2021-02-02 04:12:22 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) (Client Quit) |
2021-02-02 04:15:27 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 04:15:41 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds) |
2021-02-02 04:19:37 +0100 | TianGTY | (~textual@103.116.47.90) (Remote host closed the connection) |
2021-02-02 04:19:45 +0100 | jamm_ | (~jamm@unaffiliated/jamm) |
2021-02-02 04:20:03 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds) |
2021-02-02 04:22:47 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 04:22:54 +0100 | theDon | (~td@muedsl-82-207-238-102.citykom.de) (Ping timeout: 246 seconds) |
2021-02-02 04:24:17 +0100 | jamm_ | (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
2021-02-02 04:24:47 +0100 | theDon | (~td@94.134.91.201) |
2021-02-02 04:25:47 +0100 | elliott__ | (~elliott@pool-108-51-101-42.washdc.fios.verizon.net) |
2021-02-02 04:26:34 +0100 | plutoniix | (~q@184.82.194.190) |
2021-02-02 04:27:25 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds) |
2021-02-02 04:28:35 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 04:28:58 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 04:30:16 +0100 | catt | (~r@31.124.181.226) (Ping timeout: 240 seconds) |
2021-02-02 04:33:05 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds) |
2021-02-02 04:36:05 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 04:36:54 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds) |
2021-02-02 04:37:11 +0100 | erh^ | (erh@ip98-184-89-2.mc.at.cox.net) () |
2021-02-02 04:38:05 +0100 | DataComputist | (~lumeng@50.43.26.251) (Ping timeout: 240 seconds) |
2021-02-02 04:39:14 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 04:39:44 +0100 | FinnElija | (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
2021-02-02 04:39:44 +0100 | finn_elija | Guest61986 |
2021-02-02 04:39:44 +0100 | FinnElija | finn_elija |
2021-02-02 04:40:51 +0100 | DataComputist | (~lumeng@50.43.26.251) |
2021-02-02 04:43:40 +0100 | tsrt^ | (tsrt@ip98-184-89-2.mc.at.cox.net) |
2021-02-02 04:43:57 +0100 | Guest61986 | (~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 +0100 | berberman | (~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-02-02 04:45:40 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-02-02 04:45:55 +0100 | _xor | (~xor@74.215.46.133) |
2021-02-02 04:49:00 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 04:51:52 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 04:52:23 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) |
2021-02-02 04:53:00 +0100 | Saukk | (~Saukk@83-148-239-3.dynamic.lounea.fi) |
2021-02-02 04:54:09 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 272 seconds) |
2021-02-02 04:57:51 +0100 | doyougnu | (~user@2601:1c0:8801:9ca0:1c62:3a04:7ef8:8109) |
2021-02-02 05:00:29 +0100 | Rudd0 | (~Rudd0@185.189.115.103) |
2021-02-02 05:05:19 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 05:05:32 +0100 | alx741 | (~alx741@181.196.69.29) (Quit: alx741) |
2021-02-02 05:05:59 +0100 | frozenErebus | (~frozenEre@37.231.239.43) |
2021-02-02 05:09:48 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 246 seconds) |
2021-02-02 05:12:18 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-02-02 05:14:26 +0100 | conal | (~conal@64.71.133.70) |
2021-02-02 05:14:33 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 05:15:16 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection) |
2021-02-02 05:18:07 +0100 | doyougnu | (~user@2601:1c0:8801:9ca0:1c62:3a04:7ef8:8109) (Quit: ERC (IRC client for Emacs 27.1)) |
2021-02-02 05:19:05 +0100 | nhs | (~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 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 05:22:23 +0100 | jonatanb | (~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) |
2021-02-02 05:22:54 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Read error: Connection reset by peer) |
2021-02-02 05:23:28 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 05:24:02 +0100 | Lycurgus | (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt) |
2021-02-02 05:24:27 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 05:24:57 +0100 | nineonine | (~nineonine@50.216.62.2) |
2021-02-02 05:25:45 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:b8d2:7a79:927f:8886) (Remote host closed the connection) |
2021-02-02 05:26:58 +0100 | jonatanb | (~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds) |
2021-02-02 05:28:18 +0100 | sakirious | (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Read error: Connection reset by peer) |
2021-02-02 05:28:27 +0100 | sakirious | (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
2021-02-02 05:29:05 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 240 seconds) |
2021-02-02 05:29:14 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 256 seconds) |
2021-02-02 05:33:50 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 05:34:05 +0100 | conal | (~conal@64.71.133.70) (Ping timeout: 240 seconds) |
2021-02-02 05:34:53 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
2021-02-02 05:35:35 +0100 | conal | (~conal@64.71.133.70) |
2021-02-02 05:36:19 +0100 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-ocvvkbgfkbiznzsh) |
2021-02-02 05:38:52 +0100 | mcginleyr1_ | (uid475794@gateway/web/irccloud.com/x-wlcnxolzjahjktbd) (Quit: Connection closed for inactivity) |
2021-02-02 05:38:52 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 258 seconds) |
2021-02-02 05:39:49 +0100 | shadowdaemon | (~user@unaffiliated/shadowdaemon) (Remote host closed the connection) |
2021-02-02 05:41:03 +0100 | shadowdaemon | (~user@unaffiliated/shadowdaemon) |
2021-02-02 05:43:21 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2021-02-02 05:43:23 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 05:48:03 +0100 | soft-warm | (4408f588@ip68-8-245-136.sd.sd.cox.net) (Quit: Ping timeout (120 seconds)) |
2021-02-02 05:48:10 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 05:48:31 +0100 | soft-warm | (4408f588@ip68-8-245-136.sd.sd.cox.net) |
2021-02-02 05:52:44 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:b8d2:7a79:927f:8886) |
2021-02-02 05:52:45 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 240 seconds) |
2021-02-02 05:53:50 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 05:54:51 +0100 | JordiGH | (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 +0100 | conal | (~conal@64.71.133.70) (Ping timeout: 258 seconds) |
2021-02-02 05:56:05 +0100 | thunderrd | (~thunderrd@183.182.115.7) (Remote host closed the connection) |
2021-02-02 05:56:27 +0100 | jedws | (~jedws@121.209.199.128) |
2021-02-02 05:56:54 +0100 | <JordiGH> | Oh, crap, that's single? |
2021-02-02 05:56:56 +0100 | conal | (~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 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-02-02 05:58:27 +0100 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) (Quit: Ping timeout (120 seconds)) |
2021-02-02 05:58:46 +0100 | MidAutumnHotaru | (~MidAutumn@unaffiliated/midautumnhotaru) |
2021-02-02 05:59:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 06:01:29 +0100 | Wuzzy | (~Wuzzy@p5b0df175.dip0.t-ipconnect.de) (Quit: Wuzzy) |
2021-02-02 06:05:06 +0100 | TommyC | (~TommyC@unaffiliated/sepulchralbloom) (Ping timeout: 246 seconds) |
2021-02-02 06:05:49 +0100 | TommyC | (~TommyC@unaffiliated/sepulchralbloom) |
2021-02-02 06:10:41 +0100 | forgottenone | (~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 +0100 | thunderrd | (~thunderrd@183.182.115.7) |
2021-02-02 06:15:40 +0100 | conal | (~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 +0100 | bcoppens | (~bartcopp@kde/coppens) (Ping timeout: 260 seconds) |
2021-02-02 06:22:16 +0100 | bcoppens | (~bartcopp@vpn2.bartcoppens.be) |
2021-02-02 06:22:17 +0100 | bcoppens | (~bartcopp@vpn2.bartcoppens.be) (Changing host) |
2021-02-02 06:22:17 +0100 | bcoppens | (~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 +0100 | Saukk | (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection) |
2021-02-02 06:32:13 +0100 | darjeeling_ | (~darjeelin@115.215.41.65) (Ping timeout: 272 seconds) |
2021-02-02 06:33:25 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection) |
2021-02-02 06:33:41 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-02-02 06:34:08 +0100 | darjeeling_ | (~darjeelin@115.215.41.65) |
2021-02-02 06:34:15 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) |
2021-02-02 06:36:41 +0100 | Codaraxis__ | (Codaraxis@gateway/vpn/mullvad/codaraxis) (Remote host closed the connection) |
2021-02-02 06:37:13 +0100 | ixaxaar | (~ixaxaar@49.207.210.215) |
2021-02-02 06:42:31 +0100 | nineonin_ | (~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 +0100 | nineonine | (~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 +0100 | elliott__ | (~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 +0100 | Tops21 | (~Tobias@dyndsl-095-033-022-141.ewe-ip-backbone.de) |
2021-02-02 06:57:33 +0100 | Tops2 | (~Tobias@dyndsl-095-033-090-119.ewe-ip-backbone.de) (Ping timeout: 264 seconds) |
2021-02-02 06:57:54 +0100 | nineonin_ | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection) |
2021-02-02 07:00:28 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 07:01:13 +0100 | gridcommand | (~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 +0100 | TommyC | (~TommyC@unaffiliated/sepulchralbloom) (Ping timeout: 246 seconds) |
2021-02-02 07:04:41 +0100 | TommyC | (~TommyC@unaffiliated/sepulchralbloom) |
2021-02-02 07:04:59 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection) |
2021-02-02 07:05:11 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 07:05:13 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 07:06:00 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 07:06:42 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection) |
2021-02-02 07:07:40 +0100 | nineonine | (~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 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 264 seconds) |
2021-02-02 07:10:12 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 246 seconds) |
2021-02-02 07:10:50 +0100 | xff0x_ | (~xff0x@2001:1a81:5334:6300:df2c:5529:9d1:9df2) (Ping timeout: 264 seconds) |
2021-02-02 07:11:44 +0100 | xff0x_ | (~xff0x@2001:1a81:5334:6300:e5e1:e574:4b70:a67b) |
2021-02-02 07:11:46 +0100 | jamm_ | (~jamm@unaffiliated/jamm) |
2021-02-02 07:12:01 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 258 seconds) |
2021-02-02 07:15:33 +0100 | Jd007 | (~Jd007@162.156.11.151) (Quit: Jd007) |
2021-02-02 07:15:47 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 07:17:03 +0100 | eacameron | (uid256985@gateway/web/irccloud.com/x-gxofaafswzzfxmhg) |
2021-02-02 07:19:15 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 07:22:09 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
2021-02-02 07:23:54 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 258 seconds) |
2021-02-02 07:24:05 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 240 seconds) |
2021-02-02 07:24:15 +0100 | vicfred | (vicfred@gateway/vpn/mullvad/vicfred) |
2021-02-02 07:26:47 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 07:30:14 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 07:32:29 +0100 | shiraeeshi | (~shiraeesh@77.94.25.42) |
2021-02-02 07:33:08 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2021-02-02 07:35:21 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) (Ping timeout: 264 seconds) |
2021-02-02 07:38:42 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 07:38:51 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
2021-02-02 07:39:17 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-02-02 07:39:41 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) |
2021-02-02 07:39:58 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 07:41:25 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection) |
2021-02-02 07:41:27 +0100 | JordiGH | (jordi@octave/developer/JordiGH) (Ping timeout: 260 seconds) |
2021-02-02 07:42:11 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 07:49:25 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-02-02 07:49:46 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) |
2021-02-02 07:53:05 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 07:54:55 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2021-02-02 07:55:31 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 07:56:40 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 07:57:25 +0100 | abhixec | (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
2021-02-02 07:58:06 +0100 | knupfer | (~Thunderbi@200116b82c1c27008dc7f9fb3f442ce0.dip.versatel-1u1.de) |
2021-02-02 08:00:45 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 08:00:59 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
2021-02-02 08:02:06 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
2021-02-02 08:02:10 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 08:04:07 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 08:06:50 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 258 seconds) |
2021-02-02 08:07:13 +0100 | soft-warm | (4408f588@ip68-8-245-136.sd.sd.cox.net) (Ping timeout: 248 seconds) |
2021-02-02 08:08:37 +0100 | polyphem | (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) |
2021-02-02 08:08:54 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
2021-02-02 08:11:58 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2021-02-02 08:12:37 +0100 | gzj | (~gzj@unaffiliated/gzj) |
2021-02-02 08:13:38 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 08:14:03 +0100 | saitamaplus | (uid272474@gateway/web/irccloud.com/x-vscqvdfvmwotoltj) |
2021-02-02 08:14:04 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 08:14:33 +0100 | saitamaplus | (uid272474@gateway/web/irccloud.com/x-vscqvdfvmwotoltj) (Changing host) |
2021-02-02 08:14:33 +0100 | saitamaplus | (uid272474@unaffiliated/cheeky/x-5333603) |
2021-02-02 08:14:33 +0100 | saitamaplus | (uid272474@unaffiliated/cheeky/x-5333603) (Changing host) |
2021-02-02 08:14:33 +0100 | saitamaplus | (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 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 265 seconds) |
2021-02-02 08:19:09 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
2021-02-02 08:19:18 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-02-02 08:19:32 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 08:21:56 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 08:22:05 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 08:24:03 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
2021-02-02 08:25:08 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 08:25:09 +0100 | frozenErebus | (~frozenEre@37.231.239.43) (Ping timeout: 264 seconds) |
2021-02-02 08:25:20 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 08:25:57 +0100 | sMuNiX | (~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca) |
2021-02-02 08:26:05 +0100 | rdivyanshu | (uid322626@gateway/web/irccloud.com/x-ocvvkbgfkbiznzsh) (Quit: Connection closed for inactivity) |
2021-02-02 08:27:54 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
2021-02-02 08:28:10 +0100 | dhouthoo | (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) |
2021-02-02 08:28:36 +0100 | salumu | (~sMuNiX@vlnsm8-montreal02-142-122-8-233.internet.virginmobile.ca) (Ping timeout: 240 seconds) |
2021-02-02 08:30:22 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 08:31:22 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
2021-02-02 08:31:25 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) |
2021-02-02 08:33:45 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 08:36:05 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-02-02 08:37:04 +0100 | TianGTY | (~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 +0100 | jamm_ | (~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 +0100 | Sgeo | (~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 +0100 | mputz | (~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 +0100 | d3od | (~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 +0100 | jamm_ | (~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 +0100 | shiraeeshi | (~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 +0100 | jamm_ | (~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 +0100 | polyphem | (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 260 seconds) |
2021-02-02 08:58:05 +0100 | heatsink_ | (~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 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:b8d2:7a79:927f:8886) (Ping timeout: 264 seconds) |
2021-02-02 09:02:30 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 09:05:29 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds) |
2021-02-02 09:06:33 +0100 | raisen | (~raisen@cpe-108-185-219-72.socal.res.rr.com) |
2021-02-02 09:08:53 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 09:11:01 +0100 | jedws | (~jedws@121.209.199.128) (Quit: My MacBook has gone to sleep. ZZZzzzβ¦) |
2021-02-02 09:12:02 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 09:13:37 +0100 | berberman_ | (~berberman@unaffiliated/berberman) |
2021-02-02 09:14:14 +0100 | berberman_ | (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
2021-02-02 09:14:21 +0100 | berberman | (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds) |
2021-02-02 09:14:32 +0100 | shiraeeshi | (~shiraeesh@77.94.25.42) |
2021-02-02 09:15:01 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-02-02 09:15:48 +0100 | ubert | (~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de) |
2021-02-02 09:16:17 +0100 | unlink2 | (~unlink2@p57b8511e.dip0.t-ipconnect.de) (Remote host closed the connection) |
2021-02-02 09:16:39 +0100 | poscat | (~poscat@111.192.221.197) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-02-02 09:17:19 +0100 | Widget_ | (~widget@213.55.241.69) |
2021-02-02 09:17:31 +0100 | unlink2 | (~unlink2@p57b8511e.dip0.t-ipconnect.de) |
2021-02-02 09:18:04 +0100 | Yumasi | (~guillaume@2a01:e0a:5cb:4430:2fa0:b1fa:9b56:867f) |
2021-02-02 09:19:08 +0100 | Widget | (~widget@2a04:ee41:6:7207:2113:b8a0:61a4:72c7) (Ping timeout: 265 seconds) |
2021-02-02 09:19:30 +0100 | poscat | (~poscat@111.192.221.197) |
2021-02-02 09:21:54 +0100 | frozenErebus | (~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 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
2021-02-02 09:26:17 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 09:26:59 +0100 | Varis | (~Tadas@unaffiliated/varis) |
2021-02-02 09:27:33 +0100 | <hololeap> | yes |
2021-02-02 09:27:55 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 09:28:10 +0100 | merijn | (~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 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 264 seconds) |
2021-02-02 09:31:23 +0100 | raisen | (~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 +0100 | wroathe | (~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 +0100 | Neuromancer | (~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 +0100 | chele | (~chele@ip5b40237d.dynamic.kabel-deutschland.de) |
2021-02-02 09:38:54 +0100 | Major_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 +0100 | DirefulSalt | (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 +0100 | DirefulSalt | (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
2021-02-02 09:40:14 +0100 | howdoi | (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 +0100 | LKoen | (~LKoen@252.248.88.92.rev.sfr.net) |
2021-02-02 09:43:46 +0100 | miguel_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 +0100 | electrostat | (~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 +0100 | unlink2 | (~unlink2@p57b8511e.dip0.t-ipconnect.de) (Quit: Leaving) |
2021-02-02 09:47:33 +0100 | jhuizy | (~jhuizy@static.241.188.216.95.clients.your-server.de) (Quit: Ping timeout (120 seconds)) |
2021-02-02 09:47:52 +0100 | jhuizy | (~jhuizy@static.241.188.216.95.clients.your-server.de) |
2021-02-02 09:48:02 +0100 | deviantfero | (~deviantfe@190.150.27.58) (Ping timeout: 258 seconds) |
2021-02-02 09:48:26 +0100 | shapr | (~shapr@haskell/developer/shapr) (Ping timeout: 260 seconds) |
2021-02-02 09:48:42 +0100 | alp | (~alp@163.172.83.213) (Remote host closed the connection) |
2021-02-02 09:49:39 +0100 | shapr | (~shapr@162.243.9.169) |
2021-02-02 09:49:40 +0100 | shapr | Guest44411 |
2021-02-02 09:50:18 +0100 | M2tias | (m2@seri.fi) (Ping timeout: 260 seconds) |
2021-02-02 09:50:25 +0100 | M2tias | (m2@seri.fi) |
2021-02-02 09:50:59 +0100 | alp | (~alp@163.172.83.213) |
2021-02-02 09:55:25 +0100 | gzj | (~gzj@unaffiliated/gzj) (Ping timeout: 240 seconds) |
2021-02-02 09:56:03 +0100 | electrostat | (~dag@unaffiliated/electrostat) |
2021-02-02 09:59:45 +0100 | ph88 | (~ph88@2a02:8109:9e00:7e5c:47d:dbba:6c77:ca6f) |
2021-02-02 10:02:13 +0100 | ubert | (~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-02-02 10:03:45 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-02-02 10:04:58 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
2021-02-02 10:05:43 +0100 | Franciman | (~francesco@host-95-235-155-82.retail.telecomitalia.it) |
2021-02-02 10:06:06 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) |
2021-02-02 10:06:40 +0100 | energizer | (~energizer@unaffiliated/energizer) (Disconnected by services) |
2021-02-02 10:06:42 +0100 | fendor | (~fendor@77.119.131.134.wireless.dyn.drei.com) |
2021-02-02 10:09:05 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 10:09:20 +0100 | lotuseat` | lotuseater |
2021-02-02 10:14:06 +0100 | wroathe | (~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 +0100 | d3od | (~nickmeno3@78-1-90-197.adsl.net.t-com.hr) (Ping timeout: 240 seconds) |
2021-02-02 10:15:57 +0100 | d3od | (~nickmeno3@78-1-90-197.adsl.net.t-com.hr) |
2021-02-02 10:15:58 +0100 | energizer_ | (~energizer@unaffiliated/energizer) |
2021-02-02 10:16:04 +0100 | poljar1 | (~poljar@93-139-54-120.adsl.net.t-com.hr) (Ping timeout: 240 seconds) |
2021-02-02 10:16:56 +0100 | poljar1 | (~poljar@93-139-54-120.adsl.net.t-com.hr) |
2021-02-02 10:17:25 +0100 | shiraeeshi | (~shiraeesh@77.94.25.42) (Ping timeout: 265 seconds) |
2021-02-02 10:17:25 +0100 | RusAlex | (~Chel@unaffiliated/rusalex) (Ping timeout: 240 seconds) |
2021-02-02 10:17:29 +0100 | feliocrat | (~feliocrat@31.223.8.190) |
2021-02-02 10:18:41 +0100 | d3od | (~nickmeno3@78-1-90-197.adsl.net.t-com.hr) (Remote host closed the connection) |
2021-02-02 10:18:56 +0100 | Yumasi | (~guillaume@2a01:e0a:5cb:4430:2fa0:b1fa:9b56:867f) (Quit: WeeChat 2.8) |
2021-02-02 10:19:28 +0100 | RusAlex | (~Chel@unaffiliated/rusalex) |
2021-02-02 10:19:35 +0100 | Yumasi | (~guillaume@2a01:e0a:5cb:4430:2fa0:b1fa:9b56:867f) |
2021-02-02 10:21:39 +0100 | heatsink_ | (~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) (Remote host closed the connection) |
2021-02-02 10:21:43 +0100 | CrabMan | (phi-matrix@gateway/shell/matrix.org/x-avrunmqpnajwjhyb) |
2021-02-02 10:23:52 +0100 | ces | (~ces@fsf/member/ces) (Read error: Connection reset by peer) |
2021-02-02 10:25:14 +0100 | gzj | (~gzj@unaffiliated/gzj) |
2021-02-02 10:25:25 +0100 | CrabMan | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/zuqvtuXnuZRxlRhjFdNBRkcB/message.txt > |
2021-02-02 10:25:50 +0100 | CrabMan | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/MnKsjfVkVmQJvSqMJmSCRrva/message.txt > |
2021-02-02 10:26:54 +0100 | GZJ0X_ | (~gzj@unaffiliated/gzj) |
2021-02-02 10:28:18 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 10:29:58 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 10:30:25 +0100 | gzj | (~gzj@unaffiliated/gzj) (Ping timeout: 240 seconds) |
2021-02-02 10:30:33 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 10:30:55 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-02 10:31:24 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
2021-02-02 10:34:36 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
2021-02-02 10:35:52 +0100 | hnOsmium0001 | (uid453710@gateway/web/irccloud.com/x-lkgihyenvdkfexro) (Quit: Connection closed for inactivity) |
2021-02-02 10:36:42 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 246 seconds) |
2021-02-02 10:39:05 +0100 | LKoen | (~LKoen@252.248.88.92.rev.sfr.net) (Remote host closed the connection) |
2021-02-02 10:40:00 +0100 | bitmagie | (~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de) |
2021-02-02 10:42:13 +0100 | energizer_ | energizer |
2021-02-02 10:42:14 +0100 | sveit_ | (~sveit@45.77.0.246) (Quit: Bye) |
2021-02-02 10:42:32 +0100 | sveit | (~sveit@45.77.0.246) |
2021-02-02 10:44:58 +0100 | niekvand_ | (~niekvande@89.205.131.87) |
2021-02-02 10:45:42 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 10:46:03 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 10:46:11 +0100 | encod3 | (~encod3@45-154-157-94.ftth.glasoperator.nl) |
2021-02-02 10:46:18 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) |
2021-02-02 10:46:37 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 10:47:29 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) |
2021-02-02 10:48:36 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 246 seconds) |
2021-02-02 10:49:22 +0100 | nocm | (~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 +0100 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-02-02 10:50:32 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2021-02-02 10:52:42 +0100 | dandart | (~Thunderbi@home.dandart.co.uk) (Remote host closed the connection) |
2021-02-02 10:53:09 +0100 | bitmagie | (~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de) (Quit: bitmagie) |
2021-02-02 10:55:33 +0100 | bitmagie | (~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de) |
2021-02-02 10:56:19 +0100 | xff0x_ | (~xff0x@2001:1a81:5334:6300:e5e1:e574:4b70:a67b) (Ping timeout: 272 seconds) |
2021-02-02 10:56:59 +0100 | xff0x_ | (~xff0x@2001:1a81:5334:6300:b71d:b02d:8cc6:d6fd) |
2021-02-02 10:59:04 +0100 | GZJ0X_ | (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
2021-02-02 10:59:57 +0100 | cole-h | (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
2021-02-02 11:00:57 +0100 | a3f | (~a3f@chimeria.ext.pengutronix.de) (Ping timeout: 260 seconds) |
2021-02-02 11:01:28 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 11:01:48 +0100 | a3f | (~a3f@chimeria.ext.pengutronix.de) |
2021-02-02 11:03:46 +0100 | m0rphism1 | (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
2021-02-02 11:04:41 +0100 | thefybe | (~thefybe@249-147-161-N2.customer.vsm.sh) |
2021-02-02 11:05:24 +0100 | dragestil | (~quassel@fsf/member/dragestil) (Ping timeout: 246 seconds) |
2021-02-02 11:06:01 +0100 | ubert | (~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de) |
2021-02-02 11:06:05 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-02-02 11:07:31 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 268 seconds) |
2021-02-02 11:09:01 +0100 | sord937 | (~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 +0100 | wroathe | (~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 +0100 | kuribas | (~user@ptr-25vy0i8t5wed114xdik.18120a2.ip6.access.telenet.be) |
2021-02-02 11:18:00 +0100 | hekkaidekapus{ | (~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 +0100 | hekkaidekapus{ | (~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 +0100 | heatsink | (~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 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
2021-02-02 11:23:38 +0100 | dragestil | (~quassel@fsf/member/dragestil) |
2021-02-02 11:24:13 +0100 | asheshambasta | (~user@ptr-e1lysax2ic2wl7mrg8y.18120a2.ip6.access.telenet.be) |
2021-02-02 11:24:46 +0100 | oish | (~charlie@228.25.169.217.in-addr.arpa) |
2021-02-02 11:25:40 +0100 | Lord_of_Life_ | (~Lord@unaffiliated/lord-of-life/x-0885362) |
2021-02-02 11:27:01 +0100 | jonatanb | (~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) |
2021-02-02 11:27:02 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) (Ping timeout: 264 seconds) |
2021-02-02 11:28:45 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds) |
2021-02-02 11:28:45 +0100 | Lord_of_Life_ | Lord_of_Life |
2021-02-02 11:29:21 +0100 | proteusguy | (~proteusgu@cm-58-10-154-202.revip7.asianet.co.th) (Ping timeout: 264 seconds) |
2021-02-02 11:31:15 +0100 | encod3 | (~encod3@45-154-157-94.ftth.glasoperator.nl) (Remote host closed the connection) |
2021-02-02 11:31:16 +0100 | jonatanb | (~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 240 seconds) |
2021-02-02 11:31:32 +0100 | encod3 | (~encod3@45-154-157-94.ftth.glasoperator.nl) |
2021-02-02 11:33:03 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 11:33:21 +0100 | encod3 | (~encod3@45-154-157-94.ftth.glasoperator.nl) (Client Quit) |
2021-02-02 11:34:06 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
2021-02-02 11:34:36 +0100 | thc202 | (~thc202@unaffiliated/thc202) |
2021-02-02 11:35:01 +0100 | jespada | (~jespada@90.254.242.138) (Quit: Leaving) |
2021-02-02 11:35:32 +0100 | oish | (~charlie@228.25.169.217.in-addr.arpa) (Quit: leaving) |
2021-02-02 11:37:45 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-02-02 11:42:24 +0100 | proteusguy | (~proteusgu@cm-58-10-154-202.revip7.asianet.co.th) |
2021-02-02 11:42:28 +0100 | plutoniix | (~q@184.82.194.190) (Quit: Leaving) |
2021-02-02 11:44:21 +0100 | B-J | (~BenziJuni@dsl-149-65-135.hive.is) (Ping timeout: 264 seconds) |
2021-02-02 11:44:58 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 11:45:56 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) |
2021-02-02 11:47:52 +0100 | Benzi-Junior | (~BenziJuni@dsl-149-64-174.hive.is) |
2021-02-02 11:48:13 +0100 | lortabac | (~lortabac@51.158.65.124) (Ping timeout: 260 seconds) |
2021-02-02 11:48:14 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 11:48:24 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) |
2021-02-02 11:48:30 +0100 | TheScoop | (~TheScoop@unaffiliated/tryte) (Quit: _) |
2021-02-02 11:48:30 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 11:48:41 +0100 | Narinas | (~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 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 11:53:42 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
2021-02-02 11:55:18 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 11:55:45 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) |
2021-02-02 11:57:33 +0100 | Uma_ | (~uma@umazalakain.info) (Ping timeout: 264 seconds) |
2021-02-02 11:57:56 +0100 | Uma | (~uma@umazalakain.info) |
2021-02-02 11:58:05 +0100 | ukari | (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
2021-02-02 11:59:01 +0100 | ukari | (~ukari@unaffiliated/ukari) |
2021-02-02 12:00:25 +0100 | darjeeling_ | (~darjeelin@115.215.41.65) (Ping timeout: 240 seconds) |
2021-02-02 12:02:43 +0100 | darjeeling_ | (~darjeelin@115.215.41.65) |
2021-02-02 12:04:34 +0100 | LKoen | (~LKoen@252.248.88.92.rev.sfr.net) |
2021-02-02 12:12:33 +0100 | haritz | (~hrtz@unaffiliated/haritz) (Ping timeout: 264 seconds) |
2021-02-02 12:13:30 +0100 | haritz | (~hrtz@62.3.70.206) |
2021-02-02 12:13:30 +0100 | haritz | (~hrtz@62.3.70.206) (Changing host) |
2021-02-02 12:13:30 +0100 | haritz | (~hrtz@unaffiliated/haritz) |
2021-02-02 12:13:50 +0100 | __monty__ | (~toonn@unaffiliated/toonn) (Ping timeout: 256 seconds) |
2021-02-02 12:15:44 +0100 | TianGTY | (~textual@103.116.47.86) (Remote host closed the connection) |
2021-02-02 12:16:21 +0100 | knupfer | (~Thunderbi@200116b82c1c27008dc7f9fb3f442ce0.dip.versatel-1u1.de) (Remote host closed the connection) |
2021-02-02 12:16:35 +0100 | knupfer | (~Thunderbi@200116b82c1c270094caa69472e071be.dip.versatel-1u1.de) |
2021-02-02 12:18:54 +0100 | plutoniix | (~q@ppp-223-24-62-223.revip6.asianet.co.th) |
2021-02-02 12:19:09 +0100 | aveltras | (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 +0100 | TianGTY | (~textual@103.116.47.86) |
2021-02-02 12:21:21 +0100 | dyeplexer | (~lol@unaffiliated/terpin) |
2021-02-02 12:23:18 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 12:23:22 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) |
2021-02-02 12:23:23 +0100 | saitamaplus | (uid272474@gateway/web/irccloud.com/x-vscqvdfvmwotoltj) (Quit: Connection closed for inactivity) |
2021-02-02 12:23:26 +0100 | Narinas | (~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 +0100 | wroathe | (~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 +0100 | carbolymer | types ConstraintKinds again into ddg |
2021-02-02 12:28:05 +0100 | son0p | (~son0p@181.58.39.182) |
2021-02-02 12:28:14 +0100 | heatsink | (~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 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
2021-02-02 12:31:42 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-02-02 12:32:48 +0100 | niekvand_ | (~niekvande@89.205.131.87) (Remote host closed the connection) |
2021-02-02 12:33:20 +0100 | niekvandepas | (~niekvande@89.205.131.87) |
2021-02-02 12:33:55 +0100 | pera | (~pera@unaffiliated/pera) |
2021-02-02 12:34:35 +0100 | niekvand_ | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 12:35:53 +0100 | niekvandepas | (~niekvande@89.205.131.87) (Read error: Connection reset by peer) |
2021-02-02 12:38:18 +0100 | pavonia | (~user@unaffiliated/siracusa) (Quit: Bye!) |
2021-02-02 12:39:36 +0100 | forgottenone | (~forgotten@176.42.19.155) (Quit: Konversation terminated!) |
2021-02-02 12:40:02 +0100 | Stanley00 | (~stanley00@unaffiliated/stanley00) () |
2021-02-02 12:41:33 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 12:42:48 +0100 | jespada | (~jespada@90.254.242.138) |
2021-02-02 12:42:55 +0100 | berberman | (~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in) |
2021-02-02 12:43:22 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-02-02 12:44:21 +0100 | geowiesnot | (~user@87-89-181-157.abo.bbox.fr) |
2021-02-02 12:45:42 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-02-02 12:45:57 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 260 seconds) |
2021-02-02 12:46:05 +0100 | niekvand_ | (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 240 seconds) |
2021-02-02 12:46:20 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 12:46:41 +0100 | jerin[m]1 | (jerinmatri@gateway/shell/matrix.org/x-oqephxscfyounuwh) |
2021-02-02 12:49:02 +0100 | jerin[m]1 | (jerinmatri@gateway/shell/matrix.org/x-oqephxscfyounuwh) (Quit: authenticating) |
2021-02-02 12:49:12 +0100 | jerin[m]1 | (jerinmatri@gateway/shell/matrix.org/x-stcjgbkwbrmjmqpx) |
2021-02-02 12:51:16 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
2021-02-02 12:53:03 +0100 | bitmagie | (~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de) (Quit: bitmagie) |
2021-02-02 12:53:46 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 12:55:40 +0100 | finn_elija | (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection) |
2021-02-02 12:56:02 +0100 | finn_elija | (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
2021-02-02 12:57:03 +0100 | jerin[m]1 | jerin |
2021-02-02 12:59:01 +0100 | ukari | (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
2021-02-02 12:59:25 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 12:59:30 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
2021-02-02 13:00:03 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 13:00:21 +0100 | ukari | (~ukari@unaffiliated/ukari) |
2021-02-02 13:05:25 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 240 seconds) |
2021-02-02 13:07:13 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 13:09:18 +0100 | lotuseater | (~user@2a02:908:fbd1:b0a0:b483:a739:f5cf:4a41) (Remote host closed the connection) |
2021-02-02 13:10:00 +0100 | jedws | (~jedws@121.209.199.128) |
2021-02-02 13:12:33 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
2021-02-02 13:13:58 +0100 | lotuseater | (~user@ip-176-198-181-127.hsi05.unitymediagroup.de) |
2021-02-02 13:15:02 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 13:18:09 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-02 13:19:50 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 264 seconds) |
2021-02-02 13:24:09 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) |
2021-02-02 13:28:03 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 13:28:50 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) (Ping timeout: 264 seconds) |
2021-02-02 13:32:59 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 13:33:10 +0100 | wroathe | (~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 +0100 | Tario | (~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 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
2021-02-02 13:37:03 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 13:38:11 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) |
2021-02-02 13:38:17 +0100 | xiinotulp | (~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 +0100 | pera | (~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 +0100 | plutoniix | (~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 +0100 | coot | (~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 +0100 | wroathe | (~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 +0100 | xiinotulp | (~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 +0100 | p7lpa1ugixavugu | (~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 +0100 | frozenErebus | (~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 +0100 | wroathe | (~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 +0100 | miguel_clean | (~Miguel@89-72-187-203.dynamic.chello.pl) (Ping timeout: 256 seconds) |
2021-02-02 13:57:28 +0100 | carlomagno1 | (~cararell@148.87.23.5) |
2021-02-02 13:58:26 +0100 | miguel_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 +0100 | forgottenone | (~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 +0100 | machinedgod | (~machinedg@135-23-192-217.cpe.pppoe.ca) |
2021-02-02 14:00:38 +0100 | carlomagno | (~cararell@148.87.23.7) (Ping timeout: 264 seconds) |
2021-02-02 14:01:05 +0100 | pera | (~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 +0100 | geowiesnot | (~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 +0100 | hekkaidekapus} | (~tchouri@gateway/tor-sasl/hekkaidekapus) |
2021-02-02 14:07:35 +0100 | hekkaidekapus{ | (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
2021-02-02 14:09:37 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-02-02 14:09:46 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 14:10:52 +0100 | mmohammadi9812 | (~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 +0100 | mmohammadi9812 | (~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 +0100 | urodna | (~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 +0100 | wroathe | (~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 +0100 | geekosaur | (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 +0100 | usr25 | (~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 +0100 | ski | . 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 +0100 | ski | . 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 +0100 | kritzefitz | (~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 +0100 | viluon | (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 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:1d2e:1d29:544:2363) |
2021-02-02 14:26:07 +0100 | son0p | (~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 +0100 | toorevitimirp | (~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 +0100 | toorevitimirp | (~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 +0100 | heatsink | (~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 +0100 | wroathe | (~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 +0100 | alx741 | (~alx741@181.196.69.29) |
2021-02-02 14:31:45 +0100 | revprez_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 +0100 | revprez_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 +0100 | cfricke | (~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 +0100 | wroathe | (~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 +0100 | vicfred | (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 +0100 | ski | often uses `g',`h',`i' |
2021-02-02 14:37:46 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-02-02 14:38:02 +0100 | vicfred | (vicfred@gateway/vpn/mullvad/vicfred) |
2021-02-02 14:38:10 +0100 | gehmehgeh | (~ircuser1@gateway/tor-sasl/gehmehgeh) |
2021-02-02 14:38:14 +0100 | Nik05 | (~Nik05@85.150.134.175) |
2021-02-02 14:38:31 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection) |
2021-02-02 14:38:47 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) |
2021-02-02 14:39:03 +0100 | TianGTY | (~textual@103.116.47.86) (Quit: My MacBook has gone to sleep. ZZZzzzβ¦) |
2021-02-02 14:40:26 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) |
2021-02-02 14:41:12 +0100 | superfly1 | (~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 +0100 | JordiGH | (jordi@octave/developer/JordiGH) |
2021-02-02 14:42:44 +0100 | pera | (~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 +0100 | Yumasi | (~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 +0100 | elliott_ | (~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 +0100 | boxscape | (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 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
2021-02-02 14:49:12 +0100 | carlomagno1 | (~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 +0100 | bitmagie | (~Thunderbi@200116b806d5dd0020951cc29f15dcd7.dip.versatel-1u1.de) |
2021-02-02 14:50:48 +0100 | jamm_ | (~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 +0100 | mmohammadi9812 | (~mmohammad@198.12.95.170) (Read error: Connection reset by peer) |
2021-02-02 14:51:27 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 14:51:28 +0100 | mmohammadi9812 | (~mmohammad@2.178.175.70) |
2021-02-02 14:51:49 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-02 14:51:57 +0100 | coot | (~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 +0100 | zaquest | (~notzaques@5.128.210.178) (Quit: Leaving) |
2021-02-02 14:52:28 +0100 | Yumasi | (~guillaume@2a01:e0a:5cb:4430:530d:5016:5501:1cca) |
2021-02-02 14:52:40 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-02 14:52:58 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
2021-02-02 14:53:21 +0100 | zaquest | (~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 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Remote host closed the connection) |
2021-02-02 14:53:35 +0100 | coot | (~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 +0100 | bitmagie | (~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 +0100 | justsomeguy | (~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 2.9) |
2021-02-02 14:55:27 +0100 | jamm_ | (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
2021-02-02 14:55:57 +0100 | ski | . o O ( `newclass Frob a => Foo a' ) |
2021-02-02 14:56:28 +0100 | wroathe | (~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 +0100 | hyperisco | (~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 +0100 | Guest44411 | shapr |
2021-02-02 15:06:55 +0100 | shapr | Guest92861 |
2021-02-02 15:06:59 +0100 | Guest92861 | shapr` |
2021-02-02 15:07:29 +0100 | shapr` | (~shapr@162.243.9.169) (Changing host) |
2021-02-02 15:07:29 +0100 | shapr` | (~shapr@haskell/developer/shapr) |
2021-02-02 15:07:31 +0100 | jedws | (~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 +0100 | ski | likes 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 +0100 | jedws | (~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 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 15:12:21 +0100 | wroathe | (~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 +0100 | jedws | (~jedws@121.209.199.128) (Client Quit) |
2021-02-02 15:15:45 +0100 | Major_Biscuit | (~Major_Bis@82-169-100-198.biz.kpn.net) (Ping timeout: 240 seconds) |
2021-02-02 15:15:48 +0100 | mmmattyx | (uid17782@gateway/web/irccloud.com/x-fhsjdgdsmsucvkhr) |
2021-02-02 15:16:27 +0100 | carlomagno | (~cararell@148.87.23.4) |
2021-02-02 15:17:34 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
2021-02-02 15:18:11 +0100 | Major_Biscuit | (~Major_Bis@x065156.citg-m.tudelft.nl) |
2021-02-02 15:19:19 +0100 | deviantfero | (~deviantfe@190.150.27.58) |
2021-02-02 15:20:39 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-02-02 15:20:49 +0100 | frozenErebus | (~frozenEre@37.231.239.43) |
2021-02-02 15:21:05 +0100 | kritzefitz | (~kritzefit@212.86.56.80) (Client Quit) |
2021-02-02 15:21:36 +0100 | usr25 | (~usr25@unaffiliated/usr25) ("Leaving") |
2021-02-02 15:24:16 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-02-02 15:24:40 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) |
2021-02-02 15:25:35 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 272 seconds) |
2021-02-02 15:26:06 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) |
2021-02-02 15:26:33 +0100 | vicfred | (vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving) |
2021-02-02 15:28:53 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
2021-02-02 15:29:30 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 15:29:57 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
2021-02-02 15:30:13 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 15:30:14 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
2021-02-02 15:30:38 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Ping timeout: 264 seconds) |
2021-02-02 15:30:49 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 15:30:57 +0100 | geekosaur | (82650c7c@130.101.12.124) (Ping timeout: 248 seconds) |
2021-02-02 15:33:28 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 15:35:05 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 240 seconds) |
2021-02-02 15:38:24 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2021-02-02 15:39:18 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-02-02 15:40:08 +0100 | geekosaur | (82650c7c@130.101.12.124) |
2021-02-02 15:44:33 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 15:44:37 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
2021-02-02 15:45:10 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 15:48:52 +0100 | raym | (~ray@45.64.220.55) (Quit: leaving) |
2021-02-02 15:49:10 +0100 | raym | (~ray@45.64.220.55) |
2021-02-02 15:49:31 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 258 seconds) |
2021-02-02 15:52:12 +0100 | deviantfero | (~deviantfe@190.150.27.58) (Ping timeout: 272 seconds) |
2021-02-02 15:54:49 +0100 | dcoutts__ | (~duncan@85.186.125.91.dyn.plus.net) (Remote host closed the connection) |
2021-02-02 15:55:28 +0100 | dcoutts__ | (~duncan@85.186.125.91.dyn.plus.net) |
2021-02-02 15:56:25 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
2021-02-02 15:56:35 +0100 | geekosaur | (82650c7c@130.101.12.124) (Quit: Connection closed) |
2021-02-02 15:58:30 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-02-02 15:58:54 +0100 | KeyJoo | (~KeyJoo@46.249.12.62) |
2021-02-02 15:59:09 +0100 | Jd007 | (~Jd007@162.156.11.151) |
2021-02-02 16:08:24 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-02-02 16:09:58 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
2021-02-02 16:10:14 +0100 | cfricke | (~cfricke@unaffiliated/cfricke) (Ping timeout: 264 seconds) |
2021-02-02 16:10:29 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) |
2021-02-02 16:12:32 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-02 16:13:30 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
2021-02-02 16:14:05 +0100 | wei2912 | (~wei2912@unaffiliated/wei2912) (Quit: Lost terminal) |
2021-02-02 16:14:44 +0100 | Sgeo | (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
2021-02-02 16:14:54 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 16:15:33 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 264 seconds) |
2021-02-02 16:17:00 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 16:17:30 +0100 | toorevitimirp | (~tooreviti@117.182.181.145) (Remote host closed the connection) |
2021-02-02 16:17:42 +0100 | pgib | (~textual@lmms/pgib) (Ping timeout: 265 seconds) |
2021-02-02 16:18:23 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
2021-02-02 16:18:24 +0100 | mbomba | (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) |
2021-02-02 16:18:35 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 16:19:25 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-02-02 16:21:27 +0100 | fresheyeball | (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Ping timeout: 246 seconds) |
2021-02-02 16:23:33 +0100 | fresheyeball | (~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) |
2021-02-02 16:24:05 +0100 | son0p | (~son0p@181.136.122.143) |
2021-02-02 16:24:30 +0100 | hiroaki | (~hiroaki@ip4d167562.dynamic.kabel-deutschland.de) (Ping timeout: 272 seconds) |
2021-02-02 16:26:42 +0100 | lambda | (~xiretza@213-47-232-21.cable.dynamic.surfer.at) (Ping timeout: 246 seconds) |
2021-02-02 16:26:57 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) |
2021-02-02 16:27:09 +0100 | Guest_47 | (0597b1e0@5.151.177.224) |
2021-02-02 16:27:21 +0100 | Guest_47 | (0597b1e0@5.151.177.224) (Client Quit) |
2021-02-02 16:27:45 +0100 | thefybe | (~thefybe@249-147-161-N2.customer.vsm.sh) (Ping timeout: 246 seconds) |
2021-02-02 16:31:18 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Ping timeout: 258 seconds) |
2021-02-02 16:31:28 +0100 | cr3 | (~cr3@192-222-143-195.qc.cable.ebox.net) |
2021-02-02 16:33:19 +0100 | tdammers | (~tdammers@unaffiliated/tdammers) (Ping timeout: 256 seconds) |
2021-02-02 16:34:25 +0100 | hiroaki | (~hiroaki@ip4d167562.dynamic.kabel-deutschland.de) |
2021-02-02 16:36:00 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 16:36:15 +0100 | tdammers | (~tdammers@unaffiliated/tdammers) |
2021-02-02 16:37:22 +0100 | lambda | (~xiretza@mail.xiretza.xyz) |
2021-02-02 16:40:36 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-02-02 16:40:41 +0100 | deviantfero | (~deviantfe@190.150.27.58) |
2021-02-02 16:41:50 +0100 | shapr` | shapr |
2021-02-02 16:42:24 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
2021-02-02 16:42:59 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 16:44:25 +0100 | Guest93718 | mrd |
2021-02-02 16:44:36 +0100 | mrd | (~mrd@45.61.147.211) (Changing host) |
2021-02-02 16:44:36 +0100 | mrd | (~mrd@debian/developer/mrd) |
2021-02-02 16:46:18 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 16:46:45 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 16:47:03 +0100 | ADG1089__ | (~aditya@223.236.190.35) |
2021-02-02 16:47:08 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
2021-02-02 16:47:20 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) |
2021-02-02 16:47:28 +0100 | ubert | (~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
2021-02-02 16:47:31 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection) |
2021-02-02 16:48:33 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 16:49:30 +0100 | vicfred | (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 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Ping timeout: 264 seconds) |
2021-02-02 16:55:23 +0100 | BrianZ | (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 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 16:55:47 +0100 | lortabac | (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 +0100 | berberman | (~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 +0100 | pera | (~pera@unaffiliated/pera) |
2021-02-02 16:57:31 +0100 | berberman | (~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 +0100 | berberman | (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
2021-02-02 16:58:21 +0100 | conal | (~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 +0100 | toorevitimirp | (~tooreviti@117.182.181.145) |
2021-02-02 16:58:53 +0100 | berberman | (~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 +0100 | mananamenos | (~mananamen@84.122.202.215.dyn.user.ono.com) |
2021-02-02 17:00:47 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
2021-02-02 17:00:55 +0100 | Narinas | (~Narinas@189.223.62.254.dsl.dyn.telnor.net) |
2021-02-02 17:01:08 +0100 | ubert | (~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de) |
2021-02-02 17:02:28 +0100 | mananamenos | (~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 +0100 | nhs | (~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 +0100 | mananamenos | (~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 +0100 | mananamenos | (~mananamen@84.122.202.215.dyn.user.ono.com) (Client Quit) |
2021-02-02 17:04:01 +0100 | Widget_ | (~widget@213.55.241.69) () |
2021-02-02 17:04:10 +0100 | honigkuchen | (~honigkuch@ip5b429953.dynamic.kabel-deutschland.de) |
2021-02-02 17:04:13 +0100 | pgib | (~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 +0100 | niekvandepas | (~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 +0100 | niekvandepas | (~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 +0100 | Tario | (~Tario@201.192.165.173) (Ping timeout: 240 seconds) |
2021-02-02 17:08:18 +0100 | berberman | (~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 +0100 | polyphem | (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) |
2021-02-02 17:08:42 +0100 | darjeeling_ | (~darjeelin@115.215.41.65) (Ping timeout: 246 seconds) |
2021-02-02 17:08:44 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-02-02 17:09:21 +0100 | berberman | (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
2021-02-02 17:10:01 +0100 | berberman | (~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 +0100 | Tario | (~Tario@201.192.165.173) |
2021-02-02 17:10:40 +0100 | thefybe | (~thefybe@249-147-161-N2.customer.vsm.sh) |
2021-02-02 17:10:44 +0100 | berberman | (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
2021-02-02 17:11:29 +0100 | <honigkuchen> | boxscape, what is stateful |
2021-02-02 17:11:35 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-02-02 17:11:51 +0100 | LKoen | (~LKoen@252.248.88.92.rev.sfr.net) (Remote host closed the connection) |
2021-02-02 17:11:51 +0100 | niekvandepas | (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 246 seconds) |
2021-02-02 17:12:14 +0100 | berberman | (~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 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-02-02 17:13:07 +0100 | shiraeeshi | (~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 +0100 | lortabac | (587d06e3@88.125.6.227) (Quit: Connection closed) |
2021-02-02 17:14:18 +0100 | metreo | (~Thunderbi@unaffiliated/metreo) |
2021-02-02 17:14:19 +0100 | toorevitimirp | (~tooreviti@117.182.181.145) (Remote host closed the connection) |
2021-02-02 17:14:24 +0100 | berberman | (~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 +0100 | berberman | (~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 +0100 | ADG1089__ | (~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 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 17:19:01 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection) |
2021-02-02 17:19:15 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 17:20:38 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) (Remote host closed the connection) |
2021-02-02 17:20:55 +0100 | LKoen | (~LKoen@252.248.88.92.rev.sfr.net) |
2021-02-02 17:21:25 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 17:21:45 +0100 | jespada | (~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 +0100 | darjeeling_ | (~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 +0100 | jespada | (~jespada@90.254.242.138) |
2021-02-02 17:25:21 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2021-02-02 17:25:53 +0100 | KeyJoo | (~KeyJoo@46.249.12.62) (Quit: KeyJoo) |
2021-02-02 17:26:11 +0100 | rayyyy | (~nanoz@gateway/tor-sasl/nanoz) |
2021-02-02 17:26:19 +0100 | Wuzzy | (~Wuzzy@p5b0df175.dip0.t-ipconnect.de) |
2021-02-02 17:26:26 +0100 | nineonine | (~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 +0100 | heatsink | (~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 +0100 | emptyflask | (~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 +0100 | frozenErebus | (~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 +0100 | frozenErebus | (~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 +0100 | niekvandepas | (~niekvande@89.205.129.95) |
2021-02-02 17:30:54 +0100 | shapr | is caught when the hood closes on him |
2021-02-02 17:31:50 +0100 | heatsink | (~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 +0100 | ski | . o O ( <https://hackage.haskell.org/package/hood>,<https://hackage.haskell.org/package/GHood> ) |
2021-02-02 17:32:45 +0100 | nineonine | (~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 +0100 | knupfer | (~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 +0100 | knupfer | (~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 +0100 | mmohammadi9812 | (~mmohammad@2.178.175.70) (Remote host closed the connection) |
2021-02-02 17:36:13 +0100 | ski | . 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 +0100 | mmohammadi9812 | (~mmohammad@2.178.175.70) |
2021-02-02 17:36:58 +0100 | nineonine | (~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 +0100 | son0p | (~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 +0100 | son0p | (~son0p@181.136.122.143) |
2021-02-02 17:40:26 +0100 | <ski> | that may be helpful |
2021-02-02 17:40:32 +0100 | xff0x_ | (~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 +0100 | nbloomf | (~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 +0100 | xff0x_ | (~xff0x@2001:1a81:5334:6300:2a2:5b2e:3d52:cffc) |
2021-02-02 17:41:22 +0100 | heatsink | (~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 +0100 | JordiGH | (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 +0100 | j2t | (~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 +0100 | shapr | buys a bigger register |
2021-02-02 17:45:32 +0100 | j2t | (~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 +0100 | j2t | (~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 +0100 | tzh | (~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 +0100 | vnz | (~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 +0100 | carlomagno | (~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 +0100 | vnz | (~vnz@2001:bc8:604:94f::1) |
2021-02-02 17:48:48 +0100 | vnz | (~vnz@2001:bc8:604:94f::1) (Changing host) |
2021-02-02 17:48:48 +0100 | vnz | (~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 +0100 | wroathe | (~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 +0100 | gproto023 | (~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 +0100 | gproto023 | (~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 +0100 | nhs | (~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 +0100 | mmohammadi9812 | (~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 +0100 | niekvandepas | (~niekvande@89.205.129.95) () |
2021-02-02 18:02:30 +0100 | abhixec | (~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 +0100 | wroathe | (~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 +0100 | ski | . 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 +0100 | conal | (~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 +0100 | pgib | (~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 +0100 | coot | (~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 +0100 | mmohammadi9812 | (~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 +0100 | tromp | (~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 +0100 | nineonine | (~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 +0100 | geekosaur | (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 +0100 | jonatan | (~nate@h77-53-70-163.cust.a3fiber.se) (Remote host closed the connection) |
2021-02-02 18:14:15 +0100 | livvy | (~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 +0100 | livvy | (~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 +0100 | ski | got 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 +0100 | nineonine | (~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 +0100 | xff0x_ | (~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 +0100 | howdoi | (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 +0100 | xff0x_ | (~xff0x@2001:1a81:5334:6300:8f10:9c9a:fe89:fa33) |
2021-02-02 18:20:10 +0100 | avdb | (~avdb@gateway/tor-sasl/avdb) |
2021-02-02 18:20:13 +0100 | carlomagno | (~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 +0100 | Lycurgus | (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) |
2021-02-02 18:22:23 +0100 | zebrag | (~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 +0100 | boxscape | (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 +0100 | chele | (~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 +0100 | Major_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 +0100 | Major_Biscuit | (~Major_Bis@82-169-100-198.biz.kpn.net) |
2021-02-02 18:27:47 +0100 | conal | (~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 +0100 | ski | . 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 +0100 | conal | (~conal@209.58.139.46) |
2021-02-02 18:33:15 +0100 | acarrico | (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
2021-02-02 18:33:20 +0100 | <ph88> | thx glguy :) |
2021-02-02 18:33:42 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) (Read error: Connection reset by peer) |
2021-02-02 18:34:40 +0100 | Lord_of_Life | (~Lord@unaffiliated/lord-of-life/x-0885362) |
2021-02-02 18:35:14 +0100 | kuribas | (~user@ptr-25vy0i8t5wed114xdik.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
2021-02-02 18:35:17 +0100 | sm[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 +0100 | tromp | (~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 +0100 | olligobber | (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 272 seconds) |
2021-02-02 18:37:52 +0100 | Major_Biscuit | (~Major_Bis@82-169-100-198.biz.kpn.net) (Quit: WeeChat 2.9) |
2021-02-02 18:38:45 +0100 | frozenErebus | (~frozenEre@37.231.239.43) (Ping timeout: 240 seconds) |
2021-02-02 18:39:00 +0100 | ClaudiusMaximus | (~claude@191.123.199.146.dyn.plus.net) |
2021-02-02 18:39:00 +0100 | ClaudiusMaximus | (~claude@191.123.199.146.dyn.plus.net) (Changing host) |
2021-02-02 18:39:00 +0100 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) |
2021-02-02 18:39:25 +0100 | frozenErebus | (~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 +0100 | dnlkrgr | (~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 +0100 | ski | idly 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 +0100 | nineonine | (~nineonine@2604:3d08:7785:9600:acd4:a5be:3be2:2313) |
2021-02-02 18:45:59 +0100 | ph88 | (~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 +0100 | nineonine | (~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 +0100 | hnOsmium0001 | (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 +0100 | Noldorin | (~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 +0100 | royal_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 +0100 | knupfer | (~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 +0100 | knupfer | (~Thunderbi@200116b82c1c2700194aa0356f059b98.dip.versatel-1u1.de) |
2021-02-02 18:58:16 +0100 | cole-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 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | rajivr | (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 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | metro | (~Thunderbi@unaffiliated/metreo) |
2021-02-02 19:09:17 +0100 | ph88 | (~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 +0100 | metreo | (~Thunderbi@unaffiliated/metreo) (Ping timeout: 240 seconds) |
2021-02-02 19:10:25 +0100 | metro | metreo |
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 +0100 | merijn | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 19:13:38 +0100 | <ph88> | why singleton ? |
2021-02-02 19:13:47 +0100 | jonatanb | (~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 +0100 | nhs | (~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 +0100 | dyeplexer | (~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 +0100 | nhs | (~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 +0100 | ski | . 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 +0100 | merijn | (~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 +0100 | jonatanb | (~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 258 seconds) |
2021-02-02 19:18:47 +0100 | merijn | (~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 +0100 | ski | . 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 +0100 | Yumasi | (~guillaume@2a01:e0a:5cb:4430:530d:5016:5501:1cca) (Ping timeout: 260 seconds) |
2021-02-02 19:23:53 +0100 | metreo | (~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 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | mmohammadi9812 | (~mmohammad@188.210.118.243) (Ping timeout: 240 seconds) |
2021-02-02 19:27:23 +0100 | metreo | (~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 +0100 | mmohammadi9812 | (~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 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Remote host closed the connection) |
2021-02-02 19:30:04 +0100 | merijn | (~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 +0100 | merijn | (~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 +0100 | ski | idly 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 +0100 | absence | (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 +0100 | ubert | (~Thunderbi@p200300ecdf25d920e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
2021-02-02 19:36:55 +0100 | asheshambasta | (~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 +0100 | conal | (~conal@209.58.139.46) (Quit: Computer has gone to sleep.) |
2021-02-02 19:40:45 +0100 | metreo | (~Thunderbi@unaffiliated/metreo) (Ping timeout: 240 seconds) |
2021-02-02 19:41:15 +0100 | Ariakenom | (~Ariakenom@2001:9b1:efb:fc00:41bc:5f34:8ff6:3878) |
2021-02-02 19:41:28 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
2021-02-02 19:41:28 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
2021-02-02 19:41:53 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 19:41:58 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
2021-02-02 19:42:40 +0100 | fearless_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 +0100 | frdg | (~nick@pool-96-233-64-53.bstnma.fios.verizon.net) |
2021-02-02 19:43:30 +0100 | boxscape | (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 +0100 | chrisdotcode | (~chrisdotc@unaffiliated/chrisdotcode) |
2021-02-02 19:44:57 +0100 | metreo | (~Thunderbi@unaffiliated/metreo) |
2021-02-02 19:45:06 +0100 | nuncanada | (~dude@179.235.160.168) |
2021-02-02 19:45:28 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-02-02 19:45:50 +0100 | royal_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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-02-02 19:47:15 +0100 | nineonine | (~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 +0100 | merijn | (~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 +0100 | royal_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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
2021-02-02 19:53:12 +0100 | geekosaur | (82650c7c@130.101.12.124) (Ping timeout: 248 seconds) |
2021-02-02 19:53:29 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 19:53:50 +0100 | haskell-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 +0100 | nineonin_ | (~nineonine@50.216.62.2) |
2021-02-02 19:54:28 +0100 | nineonine | (~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 +0100 | livvy | (~livvy@gateway/tor-sasl/livvy) |
2021-02-02 19:56:08 +0100 | haskell-noob | (2ea162a3@46.161.98.163) (Client Quit) |
2021-02-02 19:57:05 +0100 | tsrt^ | (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 +0100 | honigkuchen | (~honigkuch@ip5b429953.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
2021-02-02 19:57:47 +0100 | unlink2 | (~unlink2@p200300ebcf12ea00013250d6b4625a26.dip0.t-ipconnect.de) |
2021-02-02 19:57:51 +0100 | tsrt^ | (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 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
2021-02-02 20:02:24 +0100 | sord937 | (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
2021-02-02 20:02:46 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) |
2021-02-02 20:02:47 +0100 | sord937 | (~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 +0100 | berberman_ | (~berberman@unaffiliated/berberman) |
2021-02-02 20:04:27 +0100 | conal | (~conal@64.71.133.70) |
2021-02-02 20:04:29 +0100 | shadowdaemon | (~user@unaffiliated/shadowdaemon) (Remote host closed the connection) |
2021-02-02 20:04:38 +0100 | berberman | (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds) |
2021-02-02 20:05:00 +0100 | berberman_ | (~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 +0100 | berberman | (~berberman@unaffiliated/berberman) |
2021-02-02 20:05:55 +0100 | shadowdaemon | (~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 +0100 | xelxebar | (~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 +0100 | dhouthoo | (~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 +0100 | xelxebar | (~xelxebar@gateway/tor-sasl/xelxebar) |
2021-02-02 20:07:36 +0100 | fresheyeball | (~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 +0100 | jpds_ | (~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 +0100 | jpds_ | (~jpds@gateway/tor-sasl/jpds) |
2021-02-02 20:09:53 +0100 | fresheyeball | (~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 +0100 | Rudd0 | (~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 +0100 | jollygood2 | (~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 +0100 | metreo | (~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 +0100 | tromp | (~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 +0100 | royal_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 +0100 | kritzefitz | (~kritzefit@212.86.56.80) |
2021-02-02 20:20:57 +0100 | kritzefitz | (~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 +0100 | tromp | (~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 +0100 | metreo | (~Thunderbi@unaffiliated/metreo) |
2021-02-02 20:24:38 +0100 | royal_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 +0100 | royal_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 +0100 | Guest_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 +0100 | heatsink | (~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 +0100 | royal_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 +0100 | avdb | (~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 +0100 | avdb | (~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 +0100 | geekosaur | (82650c7c@130.101.12.124) |
2021-02-02 20:33:01 +0100 | tromp | (~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 +0100 | heatsink | (~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 +0100 | Guest_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 +0100 | royal_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 +0100 | knupfer | (~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 +0100 | rayyyy | (~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 +0100 | mmohammadi9812 | (~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 +0100 | geekosaur | gave 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 +0100 | raehik1 | (~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 +0100 | raehik1 | (~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 +0100 | mmohammadi9812 | (~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 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
2021-02-02 20:53:06 +0100 | royal_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 +0100 | royal_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 +0100 | Sgeo | (~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 +0100 | ixaxaar | (~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 +0100 | royal_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 +0100 | royal_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 +0100 | Sgeo | (~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 +0100 | royal_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 +0100 | frozenErebus | (~frozenEre@37.231.239.43) (Ping timeout: 240 seconds) |
2021-02-02 21:05:06 +0100 | petersen | (~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 +0100 | d3od | (~nickmeno3@78-1-90-197.adsl.net.t-com.hr) |
2021-02-02 21:07:45 +0100 | fresheyeball | (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Ping timeout: 264 seconds) |
2021-02-02 21:08:04 +0100 | petersen | (~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 +0100 | fresheyeball | (~isaac@ec2-35-155-97-88.us-west-2.compute.amazonaws.com) |
2021-02-02 21:10:02 +0100 | fendor | (~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 +0100 | fendor | (~fendor@77.119.131.134.wireless.dyn.drei.com) |
2021-02-02 21:13:58 +0100 | <merijn> | wow |
2021-02-02 21:14:05 +0100 | Sgeo | (~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 +0100 | jonatanb | (~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 +0100 | tromp | (~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 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-02-02 21:16:20 +0100 | ubert | (~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 +0100 | nhs | (~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 +0100 | avdb | (~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 +0100 | jonatanb | (~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 256 seconds) |
2021-02-02 21:19:35 +0100 | Sgeo | (~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 +0100 | nhs | (~nhs@c-24-20-87-79.hsd1.or.comcast.net) |
2021-02-02 21:24:01 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
2021-02-02 21:25:07 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) |
2021-02-02 21:26:25 +0100 | frdg | (~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 +0100 | kav | (~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 +0100 | mputz | (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
2021-02-02 21:29:06 +0100 | mnrmnaugh | (~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 +0100 | urodna | (~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 +0100 | dnlkrgr | (~dnlkrgr@2a02:8070:a193:c900:499e:985f:a4ed:16ef) (Ping timeout: 272 seconds) |
2021-02-02 21:32:22 +0100 | dnlkrgr | (~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 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-02-02 21:37:51 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-02-02 21:38:58 +0100 | haskell-noob | (2ea162a3@46.161.98.163) |
2021-02-02 21:41:13 +0100 | Wuzzy | (~Wuzzy@p5b0df175.dip0.t-ipconnect.de) (Read error: Connection reset by peer) |
2021-02-02 21:41:56 +0100 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
2021-02-02 21:45:23 +0100 | liyang | (~liyang@90.253.54.54) |
2021-02-02 21:48:34 +0100 | kav | (~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 +0100 | sord937 | (~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 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-02-02 21:50:46 +0100 | kav | (~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) (Client Quit) |
2021-02-02 21:50:54 +0100 | royal_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 +0100 | d3od | (~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 +0100 | kav | (~kari@dsl-hkibng42-56733f-225.dhcp.inet.fi) |
2021-02-02 21:54:31 +0100 | <koz_> | Seems so. |
2021-02-02 21:55:36 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 258 seconds) |
2021-02-02 21:56:28 +0100 | pruiz | (~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 +0100 | jonatanb | (~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 +0100 | pera | (~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 +0100 | son0p | (~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 +0100 | cr3 | (~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 +0100 | son0p | (~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 +0100 | conal | (~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 +0100 | heatsink | (~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 +0100 | nuncanada | (~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 +0100 | conal | (~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 +0100 | dnlkrgr | (~dnlkrgr@HSI-KBW-046-005-005-235.hsi8.kabel-badenwuerttemberg.de) (Ping timeout: 265 seconds) |
2021-02-02 22:16:31 +0100 | zebrag | (~inkbottle@aaubervilliers-654-1-80-120.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
2021-02-02 22:16:50 +0100 | zebrag | (~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 +0100 | pgib | (~textual@lmms/pgib) |
2021-02-02 22:24:00 +0100 | fendor_ | (~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 +0100 | geekosaur | (82650c7c@130.101.12.124) (Quit: Connection closed) |
2021-02-02 22:27:19 +0100 | <Uniaika> | nacht, merijn! |
2021-02-02 22:27:29 +0100 | fendor | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2021-02-02 22:29:51 +0100 | elfets | (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving) |
2021-02-02 22:30:37 +0100 | DataComputist | (~lumeng@50.43.26.251) (Quit: Leaving...) |
2021-02-02 22:36:19 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
2021-02-02 22:37:00 +0100 | j2t | (~user@84.122.202.215.dyn.user.ono.com) (Ping timeout: 246 seconds) |
2021-02-02 22:37:45 +0100 | coot | (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
2021-02-02 22:42:25 +0100 | Foritus | (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Ping timeout: 240 seconds) |
2021-02-02 22:44:07 +0100 | geekosaur | (82650c7c@130.101.12.124) |
2021-02-02 22:44:28 +0100 | frdg | (~nick@pool-96-252-123-136.bstnma.fios.verizon.net) |
2021-02-02 22:45:31 +0100 | knupfer | (~Thunderbi@200116b82c1c27005d8bb76cf3d58ad1.dip.versatel-1u1.de) |
2021-02-02 22:48:02 +0100 | hololeap | (~hololeap@unaffiliated/hololeap) (Ping timeout: 265 seconds) |
2021-02-02 22:48:19 +0100 | obihann | (~jhann@142.177.168.17) |
2021-02-02 22:49:35 +0100 | DataComputist | (~lumeng@50.43.26.251) |
2021-02-02 22:50:45 +0100 | Varis | (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
2021-02-02 22:51:45 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
2021-02-02 22:54:03 +0100 | forgottenone | (~forgotten@176.42.24.1) (Quit: Konversation terminated!) |
2021-02-02 22:56:03 +0100 | geekosaur | (82650c7c@130.101.12.124) (Quit: Connection closed) |
2021-02-02 22:56:26 +0100 | xff0x_ | (~xff0x@2001:1a81:5334:6300:8f10:9c9a:fe89:fa33) (Ping timeout: 264 seconds) |
2021-02-02 22:56:30 +0100 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-02-02 22:56:51 +0100 | xff0x_ | (~xff0x@2001:1a81:5334:6300:744e:2f9e:5495:d27d) |
2021-02-02 22:57:16 +0100 | DataComputist | (~lumeng@50.43.26.251) (Ping timeout: 240 seconds) |
2021-02-02 22:58:00 +0100 | geowiesnot | (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 246 seconds) |
2021-02-02 22:58:16 +0100 | conal | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2021-02-02 22:59:38 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 23:01:49 +0100 | pavonia | (~user@unaffiliated/siracusa) |
2021-02-02 23:01:49 +0100 | conal_ | (~conal@64.71.133.70) |
2021-02-02 23:01:55 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-02-02 23:02:50 +0100 | Tario | (~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 +0100 | DataComputist | (~lumeng@50.43.26.251) |
2021-02-02 23:04:45 +0100 | jonatanb | (~jonatanb@83.24.13.14.ipv4.supernova.orange.pl) (Ping timeout: 272 seconds) |
2021-02-02 23:04:55 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2021-02-02 23:05:16 +0100 | Rudd0 | (~Rudd0@185.189.115.108) |
2021-02-02 23:08:17 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2021-02-02 23:09:02 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) |
2021-02-02 23:09:38 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 23:10:09 +0100 | merijn | (~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 +0100 | heatsink | (~heatsink@2600:1700:bef1:5e10:d018:6f9c:3910:36c8) (Ping timeout: 258 seconds) |
2021-02-02 23:14:31 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
2021-02-02 23:14:37 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2021-02-02 23:17:17 +0100 | fendor_ | (~fendor@91.141.2.117.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
2021-02-02 23:20:54 +0100 | joseph1 | (~joseph@cpe-65-31-18-174.insight.res.rr.com) |
2021-02-02 23:20:59 +0100 | miguel_clean | (~Miguel@89-72-187-203.dynamic.chello.pl) (Quit: Leaving.) |
2021-02-02 23:22:45 +0100 | SwarmCollective | (~joseph@cpe-65-31-18-174.insight.res.rr.com) (Ping timeout: 264 seconds) |
2021-02-02 23:23:04 +0100 | superfly1 | (~superfly@185.163.110.108) (Remote host closed the connection) |
2021-02-02 23:24:59 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-02-02 23:28:46 +0100 | Franciman | (~francesco@host-95-235-155-82.retail.telecomitalia.it) (Quit: Leaving) |
2021-02-02 23:28:56 +0100 | thefybe | (~thefybe@249-147-161-N2.customer.vsm.sh) (Ping timeout: 240 seconds) |
2021-02-02 23:29:18 +0100 | thefybe | (~thefybe@249-147-161-N2.customer.vsm.sh) |
2021-02-02 23:29:22 +0100 | danvet | (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 260 seconds) |
2021-02-02 23:30:31 +0100 | mnrmnaugh | (~mnrmnaugh@unaffiliated/mnrmnaugh) |
2021-02-02 23:31:11 +0100 | renzhi | (~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 +0100 | Tops21 | (~Tobias@dyndsl-095-033-022-141.ewe-ip-backbone.de) (Ping timeout: 240 seconds) |
2021-02-02 23:33:47 +0100 | Tario | (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
2021-02-02 23:34:19 +0100 | Tario | (~Tario@201.192.165.173) |
2021-02-02 23:34:35 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 23:36:38 +0100 | hololeap | (~hololeap@unaffiliated/hololeap) |
2021-02-02 23:37:17 +0100 | saurik | (saurik@carrier.saurik.com) |
2021-02-02 23:38:52 +0100 | aveltras | (uid364989@gateway/web/irccloud.com/x-acxpamgdnfyygncw) (Quit: Connection closed for inactivity) |
2021-02-02 23:38:55 +0100 | son0p | (~son0p@181.136.122.143) (Quit: Lost terminal) |
2021-02-02 23:38:57 +0100 | joseph1 | (~joseph@cpe-65-31-18-174.insight.res.rr.com) (Ping timeout: 272 seconds) |
2021-02-02 23:39:09 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
2021-02-02 23:39:29 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds) |
2021-02-02 23:39:31 +0100 | Guest62723 | (~ds@139.28.218.148) |
2021-02-02 23:40:42 +0100 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
2021-02-02 23:41:24 +0100 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer) |
2021-02-02 23:42:04 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 23:43:37 +0100 | Tario | (~Tario@201.192.165.173) (Ping timeout: 265 seconds) |
2021-02-02 23:44:31 +0100 | raehik1 | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2021-02-02 23:44:54 +0100 | Tario | (~Tario@200.119.184.36) |
2021-02-02 23:45:25 +0100 | conal_ | (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
2021-02-02 23:45:54 +0100 | ClaudiusMaximus | (~claude@191.123.199.146.dyn.plus.net) |
2021-02-02 23:46:02 +0100 | ClaudiusMaximus | (~claude@191.123.199.146.dyn.plus.net) (Changing host) |
2021-02-02 23:46:02 +0100 | ClaudiusMaximus | (~claude@unaffiliated/claudiusmaximus) |
2021-02-02 23:46:31 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 265 seconds) |
2021-02-02 23:46:58 +0100 | star_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 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
2021-02-02 23:47:21 +0100 | hiroaki | (~hiroaki@ip4d167562.dynamic.kabel-deutschland.de) (Ping timeout: 264 seconds) |
2021-02-02 23:47:24 +0100 | conal | (~conal@64.71.133.70) |
2021-02-02 23:51:12 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
2021-02-02 23:51:33 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
2021-02-02 23:53:37 +0100 | hiroaki | (~hiroaki@ip4d167562.dynamic.kabel-deutschland.de) |
2021-02-02 23:54:09 +0100 | zhulikas_ | (~derp@hmm.wantstofly.org) (Read error: Connection reset by peer) |
2021-02-02 23:55:26 +0100 | wroathe | (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
2021-02-02 23:55:27 +0100 | zhulikas | (~derp@hmm.wantstofly.org) |
2021-02-02 23:56:21 +0100 | royal_screwup21 | (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds) |
2021-02-02 23:57:03 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
2021-02-02 23:57:14 +0100 | nuncanada | (~dude@179.235.160.168) |
2021-02-02 23:58:13 +0100 | tromp | (~tromp@dhcp-077-249-230-040.chello.nl) |
2021-02-02 23:58:20 +0100 | star_cloud | (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |