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