Logs on 2021-01-12 (freenode/#haskell)
| 00:01:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 00:01:52 | × | acidjnk_new quits (~acidjnk@p200300d0c704e7934412496f05d02b0d.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 00:02:44 | <dolio> | Maybe the lesson is that smalltalk had nothing significant to teach you. |
| 00:05:01 | → | zaquest joins (~notzaques@5.128.210.178) |
| 00:05:08 | × | ep1ctetus quits (~luke@ip184-187-162-163.sb.sd.cox.net) (Quit: Leaving.) |
| 00:06:51 | <koz_> | I've done some profiling and discovered that one function does 24% of my allocations. This is a bit baffling, and I'd like to investigate why. What do? |
| 00:07:31 | <ij> | show the function |
| 00:07:44 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 260 seconds) |
| 00:08:08 | <koz_> | ij: It wouldn't make any sense on its own, and then I'd have to show you our entire web framework. :P |
| 00:08:21 | <koz_> | I'd like to investigate what thing that this function is calling that's allocating. |
| 00:09:14 | <dolio> | 24% inherited? |
| 00:09:20 | <dolio> | Or 24% itself? |
| 00:09:28 | × | Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
| 00:09:36 | <ij> | what does inherited mean? |
| 00:09:37 | <koz_> | I only have a -p profile. Do I need a -h profile for this? |
| 00:09:44 | → | ep1ctetus joins (~marcus_au@ip184-187-162-163.sb.sd.cox.net) |
| 00:09:50 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 00:10:03 | <koz_> | I'm going by its cost centre entry at the top. |
| 00:10:40 | × | maxsu quits (~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 246 seconds) |
| 00:11:00 | <mikevdg> | dolio: Smalltalk is all about tooling. The debugger is amazing. |
| 00:11:16 | × | ep1ctetus quits (~marcus_au@ip184-187-162-163.sb.sd.cox.net) (Client Quit) |
| 00:11:26 | → | ystael joins (~ystael@209.6.50.55) |
| 00:11:34 | <dolio> | Inherited means that 24% of allocations occur in any cost center transitively referenced from the given cost center. As opposed to attributable directly to the given cost center. |
| 00:11:49 | <koz_> | dolio: How do I establish which this is? |
| 00:12:15 | → | rajivr joins (uid269651@gateway/web/irccloud.com/x-gnedumgsvnojinhm) |
| 00:12:40 | → | ep1ctetus joins (~marcus_au@ip184-187-162-163.sb.sd.cox.net) |
| 00:13:10 | → | tbqdrn[m] joins (tbqdrnmatr@gateway/shell/matrix.org/x-uepjwqvijalwxvgx) |
| 00:13:24 | <dolio> | koz_: The profiles I'm familiar with have columns for inherited and direct cost. But I don't remember which profiles that is, because I haven't done it in a long time. |
| 00:13:42 | <koz_> | dolio: I'll try a -h profile and see if that helps. |
| 00:13:42 | <dolio> | If yours doesn't, you need to do something different. |
| 00:14:42 | <sm[m]> | koz_: profiterole makes profiles more readable |
| 00:14:58 | <sm[m]> | ie, more hierarchical |
| 00:15:33 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 00:15:40 | <koz_> | sm[m]: profiterole doesn't seem to do allocation - only time. |
| 00:17:01 | <dolio> | koz_: Another thing to consider is that if you don't have libraries built with relevant profiling, I think all costs from those calls will be attributed directly to whatever cost center is calling them. |
| 00:17:20 | <koz_> | dolio: I used 'stack build --profile', which I _guess_ handles this? |
| 00:17:28 | <dolio> | Hopefully. |
| 00:17:31 | <exarkun> | I think it does |
| 00:17:38 | <exarkun> | You may have noticed it spending an hour rebuilding all your deps? |
| 00:18:02 | <dolio> | I guess my point is, check if you actually see cost centers for libraries. |
| 00:18:03 | <koz_> | Lol. |
| 00:18:23 | <koz_> | dolio: My very first cost centre is from Network.Socket.Buffer. |
| 00:18:23 | <dolio> | At least, if they're relevant. |
| 00:19:02 | ← | tbqdrn[m] parts (tbqdrnmatr@gateway/shell/matrix.org/x-uepjwqvijalwxvgx) ("User left") |
| 00:19:58 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Quit: Goodbye) |
| 00:20:18 | <dolio> | But like, if you look at your expensive function, and you don't see any cost centers under it for potentially expensive library calls, that's suspicious. |
| 00:21:15 | <sm[m]> | koz_: I guess you're right, but the two often correlate |
| 00:21:28 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 00:22:01 | <sm[m]> | I usually flip between the original and profiterole's |
| 00:22:04 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 00:22:45 | × | inkbottle quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 00:23:06 | → | inkbottle joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 00:23:12 | <sm[m]> | but there are fancier graphical heap profiling tools, better for some things |
| 00:23:43 | × | hiroaki quits (~hiroaki@ip4d16b6b9.dynamic.kabel-deutschland.de) (Ping timeout: 256 seconds) |
| 00:23:53 | → | Tario joins (~Tario@201.192.165.173) |
| 00:24:34 | <koz_> | sm[m]: profiteur helped. dolio: What is the difference between an entry called 'foo', and one called 'foo (indiv)'? |
| 00:24:51 | → | tbqdrn[m] joins (tbqdrnmatr@gateway/shell/matrix.org/x-uepjwqvijalwxvgx) |
| 00:24:57 | <dolio> | I've never used profiterole. |
| 00:25:37 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 00:25:40 | <dolio> | indiv might be the direct cost, and the other one the inherited cost. |
| 00:26:03 | <koz_> | OK, found the guilty parties. |
| 00:26:10 | <koz_> | Still weird, but it's _definitely_ inherited. |
| 00:26:11 | <koz_> | Thanks all! |
| 00:26:17 | <sm[m]> | \o/ |
| 00:26:28 | <sm[m]> | https://mpickering.github.io/eventlog2html looks good too |
| 00:26:41 | <ij> | I wrote this code to put smallest elements in front of the list, but it seems to be slower than sortOn score and then taking the head http://sprunge.us/SIzMWU |
| 00:27:28 | ← | tbqdrn[m] parts (tbqdrnmatr@gateway/shell/matrix.org/x-uepjwqvijalwxvgx) ("User left") |
| 00:27:28 | × | slewis quits (~slewis@84.39.117.57) (Remote host closed the connection) |
| 00:27:45 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 00:28:19 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) |
| 00:28:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 00:28:44 | <dolio> | koz_: -h is not the one I was thinking of, although it might have helped. I think maybe -P is the one I was talking about. |
| 00:30:04 | <koz_> | That's the one I had, and it turned out to have what I needed. |
| 00:30:25 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Quit: leaving) |
| 00:30:27 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 256 seconds) |
| 00:33:40 | <ij> | here's a ghci runnable example http://sprunge.us/kKy7IE |
| 00:37:42 | <ij> | it would make sense if sort is some optimized C |
| 00:38:03 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 00:38:16 | × | aveltras quits (uid364989@gateway/web/irccloud.com/x-xykekrezuzwmeque) (Quit: Connection closed for inactivity) |
| 00:39:34 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 256 seconds) |
| 00:41:06 | → | threestrikes joins (~threestri@cpe-24-243-229-2.hot.res.rr.com) |
| 00:42:11 | × | usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 00:42:49 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 264 seconds) |
| 00:45:10 | × | plutoniix quits (~q@node-ufb.pool-125-24.dynamic.totinternet.net) (Quit: Leaving) |
| 00:45:16 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 00:46:16 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 00:46:30 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 00:46:35 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 00:49:31 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 246 seconds) |
| 00:54:06 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 00:55:00 | × | aerium quits (~aerium@51.194.80.91) (Ping timeout: 265 seconds) |
| 00:56:26 | × | zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection) |
| 00:56:54 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 00:57:37 | <glguy> | ij: why "minRest m [] t = (m, [], t)" instead of "minRest m [] t = (m, t)"? |
| 00:57:48 | → | zaquest joins (~notzaques@5.128.210.178) |
| 00:58:30 | <ij> | I (for no reason whatsoever) thought the arguments have to match the return type |
| 00:58:35 | <ij> | let's try it |
| 00:59:15 | <ij> | still slower than sortOn |
| 00:59:21 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
| 00:59:37 | <ij> | it looks like it is using less memory, though |
| 01:02:07 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Ping timeout: 246 seconds) |
| 01:02:44 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 01:05:29 | × | danso quits (~dan@23-233-104-25.cpe.pppoe.ca) (Ping timeout: 260 seconds) |
| 01:05:46 | × | Ariakenom quits (~Ariakenom@2001:9b1:efb:fc00:55e4:e64e:d0d2:62ce) (Read error: Connection reset by peer) |
| 01:07:28 | → | m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 01:11:12 | × | whataday quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:12:18 | → | whataday joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:15:17 | → | christo joins (~chris@81.96.113.213) |
| 01:16:58 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 01:19:25 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 01:19:34 | → | danso joins (~dan@23-233-104-25.cpe.pppoe.ca) |
| 01:19:40 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) |
| 01:21:26 | × | jmchael quits (~jmchael@87.112.235.234) (Ping timeout: 256 seconds) |
| 01:21:49 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 264 seconds) |
| 01:23:23 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 240 seconds) |
| 01:25:19 | × | columbarius1 quits (~columbari@87.123.198.160) (Ping timeout: 260 seconds) |
| 01:26:23 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Quit: Leaving) |
| 01:27:23 | → | columbarius1 joins (~columbari@muedsl-82-207-236-249.citykom.de) |
| 01:28:25 | × | Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 264 seconds) |
| 01:29:02 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 256 seconds) |
| 01:30:08 | × | thc202 quits (~thc202@unaffiliated/thc202) (Quit: thc202) |
| 01:31:56 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:32:18 | → | maxsu joins (~maxsu@ip-64-72-99-232.lasvegas.net) |
| 01:32:24 | → | argento joins (~argent0@168.227.97.34) |
| 01:33:31 | → | slack1256 joins (~slack1256@dvc-186-186-101-190.movil.vtr.net) |
| 01:34:25 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
| 01:34:48 | × | argento quits (~argent0@168.227.97.34) (Client Quit) |
| 01:36:15 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 01:37:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 01:39:11 | <slack1256> | I remember to have read a blogpost on r/haskell called "the greatest refactor technique you have never heard of" which was about defunctionalization on a DFS algorithm for a tree. I've tried the reddit search but I guess the name isn't correct. Does anyone have a link? |
| 01:41:31 | → | pmxb0t joins (~pmxb0t@185.204.1.185) |
| 01:43:23 | <texasmynsted> | I guess I have never heard of it. |
| 01:44:01 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 264 seconds) |
| 01:46:29 | <monochrom> | would it be https://www.reddit.com/r/programming/comments/6wt7w/defunctionalized_lists_reifying_continuations/ (view the archived discussion, not the blog) |
| 01:51:49 | <slack1256> | Mmm it is the same idea certainly. But no, this one was published like 2 months ago. |
| 01:52:09 | → | jedws joins (~jedws@121.209.139.157) |
| 01:54:48 | <texasmynsted> | hmm. can't find it but darn I am finding all kinds of cool refactoring articles |
| 01:57:30 | → | epicte7us joins (~marcus_au@ip184-187-162-163.sb.sd.cox.net) |
| 01:57:40 | × | thefybe quits (~thefybe@249-147-161-N2.customer.vsm.sh) (Remote host closed the connection) |
| 01:57:53 | → | thefybe joins (~thefybe@249-147-161-N2.customer.vsm.sh) |
| 01:59:03 | × | Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
| 01:59:10 | × | Entertainment quits (~entertain@104.246.132.210) (Ping timeout: 246 seconds) |
| 01:59:48 | × | jlamothe quits (~jlamothe@198.251.55.207) (Quit: leaving) |
| 02:00:18 | <DigitalKiwi> | haskells killer app is refactoring |
| 02:00:36 | × | ep1ctetus quits (~marcus_au@ip184-187-162-163.sb.sd.cox.net) (Ping timeout: 256 seconds) |
| 02:01:35 | → | abhixec_ joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 02:07:29 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:09:13 | × | epicte7us quits (~marcus_au@ip184-187-162-163.sb.sd.cox.net) (Quit: Leaving) |
| 02:09:17 | texasmynsted | shrug |
| 02:09:36 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 240 seconds) |
| 02:09:39 | <texasmynsted> | I have still never seen a more beautiful language than haskell |
| 02:10:24 | × | thefybe quits (~thefybe@249-147-161-N2.customer.vsm.sh) (Ping timeout: 256 seconds) |
| 02:10:56 | → | SoundLogic_ joins (~SoundLogi@075-134-016-017.res.spectrum.com) |
| 02:11:18 | SoundLogic_ | is now known as SoundLogic |
| 02:12:07 | × | SoundLogic quits (~SoundLogi@075-134-016-017.res.spectrum.com) (Client Quit) |
| 02:14:14 | × | Dark_Ethereal quits (~Drew@84.93.106.197) (Quit: Leaving.) |
| 02:15:09 | × | ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection) |
| 02:18:18 | → | sm2n joins (~sm2n@bras-base-hmtnon1497w-grc-43-64-231-95-247.dsl.bell.ca) |
| 02:19:39 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 02:20:22 | × | Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Client Quit) |
| 02:20:27 | → | dyeplexer joins (~lol@unaffiliated/terpin) |
| 02:21:27 | × | mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew) |
| 02:24:59 | × | xff0x quits (~xff0x@2001:1a81:53ed:d500:fb41:db64:748c:e168) (Ping timeout: 272 seconds) |
| 02:25:31 | → | xff0x joins (~xff0x@2001:1a81:53ed:d500:b20b:19e8:9626:e2df) |
| 02:25:49 | → | darjeeling_ joins (~darjeelin@115.215.40.96) |
| 02:26:45 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 240 seconds) |
| 02:28:04 | × | danso quits (~dan@23-233-104-25.cpe.pppoe.ca) (Quit: WeeChat 3.0) |
| 02:29:10 | × | conal_ quits (~conal@198.8.81.80) (Quit: Computer has gone to sleep.) |
| 02:29:16 | → | jespada joins (~jespada@90.254.245.49) |
| 02:29:52 | → | conal joins (~conal@198.8.81.80) |
| 02:29:52 | × | conal quits (~conal@198.8.81.80) (Client Quit) |
| 02:30:28 | → | conal joins (~conal@198.8.81.80) |
| 02:34:25 | × | maxsu quits (~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds) |
| 02:35:12 | → | justsomeguy joins (~Srain@unaffiliated/--/x-3805311) |
| 02:35:18 | × | xff0x quits (~xff0x@2001:1a81:53ed:d500:b20b:19e8:9626:e2df) (Ping timeout: 260 seconds) |
| 02:35:37 | × | conal quits (~conal@198.8.81.80) (Ping timeout: 264 seconds) |
| 02:36:50 | → | xff0x joins (~xff0x@2001:1a81:5220:500:dba:8115:2558:810b) |
| 02:39:25 | × | m0rphism quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds) |
| 02:41:25 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 02:41:37 | → | conal joins (~conal@198.8.81.80) |
| 02:45:18 | × | threestrikes quits (~threestri@cpe-24-243-229-2.hot.res.rr.com) (Quit: Leaving) |
| 02:45:29 | → | plutoniix joins (~q@184.82.192.193) |
| 02:51:12 | × | conal quits (~conal@198.8.81.80) (Quit: Computer has gone to sleep.) |
| 02:51:43 | × | mikevdg quits (a30781b2@163.7.129.178) (Quit: Connection closed) |
| 02:55:05 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 02:55:31 | × | bitmapper quits (uid464869@gateway/web/irccloud.com/x-upuqeneqybvqnswn) (Quit: Connection closed for inactivity) |
| 02:59:53 | → | conal joins (~conal@198.8.81.80) |
| 03:00:02 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds) |
| 03:01:50 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 03:05:20 | → | Sgeo_ joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 03:05:39 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 03:06:20 | × | Mzg quits (Mzg@s1.ct8.pl) (Ping timeout: 256 seconds) |
| 03:06:31 | → | Mzg joins (Mzg@s1.ct8.pl) |
| 03:07:11 | <nshepperd> | slack1256: https://www.joachim-breitner.de/blog/778-Don%E2%80%99t_think%2C_just_defunctionalize ? |
| 03:07:24 | × | darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 260 seconds) |
| 03:08:16 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Ping timeout: 240 seconds) |
| 03:08:47 | → | darjeeling_ joins (~darjeelin@115.215.40.96) |
| 03:10:01 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:10:37 | <nshepperd> | that's basically a blog post version of "the best refactoring you've never heard of" which is a video from a year ago |
| 03:13:14 | → | DTZUZU_ joins (~DTZUZU@207.81.119.43) |
| 03:13:34 | × | DTZUZU quits (~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer) |
| 03:15:13 | → | DTZUZU joins (~DTZUZU@205.ip-149-56-132.net) |
| 03:15:34 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 03:15:49 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 03:17:42 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 03:17:46 | × | conal quits (~conal@198.8.81.80) (Quit: Computer has gone to sleep.) |
| 03:17:54 | × | DTZUZU_ quits (~DTZUZU@207.81.119.43) (Ping timeout: 260 seconds) |
| 03:17:57 | → | ransom_ joins (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) |
| 03:23:24 | <ukari> | why this code cannot get the argument in template haskell? https://gist.github.com/ukari/11bc6327ff26fef3db31b4543a87ece6 |
| 03:23:50 | × | ransom_ quits (~c4264035@c-67-176-3-106.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 03:26:20 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds) |
| 03:26:59 | <glguy> | ukari, The name "input" would be match where you splice that in |
| 03:27:02 | <glguy> | matched |
| 03:27:09 | <glguy> | not when you define it |
| 03:27:13 | × | darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 264 seconds) |
| 03:27:23 | <ephemient> | test = $(id [| 1 |]) |
| 03:27:32 | <ephemient> | that would work, btw |
| 03:28:09 | → | drbean joins (~drbean@TC210-63-209-185.static.apol.com.tw) |
| 03:28:24 | <glguy> | *Help> let input = 5 in $(idTH ()) |
| 03:28:25 | <glguy> | 5 |
| 03:28:54 | <glguy> | <interactive>:6:20-26: Splicing expression |
| 03:28:54 | <glguy> | idTH () ======> (\ x -> x) input |
| 03:29:08 | <glguy> | so you get: let input = 5 in (\ x -> x) input |
| 03:32:08 | <justsomeguy> | What does it mean when someone says a type is "lifted" or "unlifted"? |
| 03:32:41 | <ukari> | is it possible to pass 5 at the positon test = $(idTH **here**)? with idTH signature idTH :: a -> Q Exp |
| 03:33:01 | → | plateau_ joins (~plateau@51.194.80.91) |
| 03:33:29 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:33:48 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 03:34:05 | → | sagax joins (~sagax_nb@213.138.71.146) |
| 03:35:00 | <glguy> | You could have: $(idTH [| 5 |]) |
| 03:35:32 | <ephemient> | not with forall a. a. if you picked a specific type, you could embed a literal, or you could use quasiquotes which always work |
| 03:35:52 | → | Welkin joins (~Welkin@216.243.35.47) |
| 03:36:49 | <ephemient> | justsomeguy: the specifics depend on what content you're talking about, but in general it means something like unlifted :: a, lifted :: f a |
| 03:37:30 | <glguy> | or, idTH :: Lift a => a -> Q Exp |
| 03:37:30 | <glguy> | idTH input = appE helper [| input |] |
| 03:38:32 | <ukari> | $(idTH [|5|]) makes idTH signature turns to be idTH:: Q Exp -> Q Exp |
| 03:40:04 | <glguy> | Yes, your choices are either: idTH :: Lift a => a -> ExpQ -- or the more useful idTH :: ExpQ -> ExpQ |
| 03:41:10 | <ephemient> | either way (mkName "input") doesn't work; it's just not in scope at the point of the splice |
| 03:42:07 | <ukari> | thanks, i get it why that not works |
| 03:42:24 | → | darjeeling_ joins (~darjeelin@115.215.40.96) |
| 03:43:06 | × | mirrorbird quits (~psutcliff@2a00:801:236:570e:b1f2:acf6:e570:218d) (Remote host closed the connection) |
| 03:44:52 | <glguy> | justsomeguy, "lifted" types can also mean "has bottom" |
| 03:45:03 | → | maxsu joins (~maxsu@ip-64-72-99-232.lasvegas.net) |
| 03:45:21 | <glguy> | Haskell ran out of words so lift gets overloaded |
| 03:46:25 | × | theDon quits (~td@94.134.91.199) (Ping timeout: 264 seconds) |
| 03:46:34 | <glguy> | http://hackage.haskell.org/package/base-4.14.1.0/docs/GHC-Exts.html#t:RuntimeRep |
| 03:46:44 | → | Stanley00 joins (~stanley00@unaffiliated/stanley00) |
| 03:47:18 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:47:39 | → | matryoshka joins (~matryoshk@184.75.223.227) |
| 03:47:48 | → | theDon joins (~td@muedsl-82-207-238-062.citykom.de) |
| 03:49:11 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:49:32 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 03:50:25 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 03:52:18 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 03:52:18 | → | Marissa joins (Marissa@33.anserq.com) |
| 03:52:57 | × | matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:53:15 | → | matryoshka joins (~matryoshk@184.75.223.227) |
| 03:53:29 | → | conal joins (~conal@107.181.166.211) |
| 03:54:46 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds) |
| 03:57:59 | → | xirhtogal joins (~lagothrix@unaffiliated/lagothrix) |
| 03:57:59 | × | lagothrix quits (~lagothrix@unaffiliated/lagothrix) (Killed (rothfuss.freenode.net (Nickname regained by services))) |
| 03:57:59 | xirhtogal | is now known as lagothrix |
| 03:58:27 | × | Raito_Bezarius quits (~Raito@unaffiliated/raito-bezarius/x-8764578) (Ping timeout: 260 seconds) |
| 03:58:34 | × | matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in) |
| 03:58:53 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 03:59:05 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Remote host closed the connection) |
| 03:59:08 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 03:59:28 | × | ystael quits (~ystael@209.6.50.55) (Ping timeout: 272 seconds) |
| 04:00:42 | → | Raito_Bezarius joins (~Raito@unaffiliated/raito-bezarius/x-8764578) |
| 04:01:14 | × | SupaYoshi quits (~supayoshi@213-10-140-13.fixed.kpn.net) (Quit: Goodbye!) |
| 04:01:24 | → | Rudd0 joins (~Rudd0@185.189.115.108) |
| 04:01:36 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds) |
| 04:02:15 | → | SupaYoshi joins (~supayoshi@213-10-140-13.fixed.kpn.net) |
| 04:04:09 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 04:07:42 | × | justsomeguy quits (~Srain@unaffiliated/--/x-3805311) (Remote host closed the connection) |
| 04:09:07 | → | danso joins (~dan@23-233-104-25.cpe.pppoe.ca) |
| 04:09:36 | × | stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Quit: Caught exception) |
| 04:09:54 | → | stree joins (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) |
| 04:11:39 | × | sagax quits (~sagax_nb@213.138.71.146) (Quit: Konversation terminated!) |
| 04:14:08 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 04:16:33 | × | cmcma20 quits (~cmcma20@l37-192-2-125.novotelecom.ru) (Quit: leaving) |
| 04:17:26 | → | matryoshka joins (~matryoshk@184.75.223.227) |
| 04:20:01 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds) |
| 04:20:25 | × | maxsu quits (~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 240 seconds) |
| 04:20:54 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 04:23:05 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 04:23:32 | × | matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in) |
| 04:23:56 | → | matryoshka joins (~matryoshk@184.75.223.227) |
| 04:26:53 | → | sagax joins (~sagax_nb@213.138.71.146) |
| 04:28:48 | → | mosq joins (b8b05cbe@ip184-176-92-190.ph.ph.cox.net) |
| 04:29:01 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 264 seconds) |
| 04:30:28 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
| 04:32:27 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
| 04:32:31 | × | mosq quits (b8b05cbe@ip184-176-92-190.ph.ph.cox.net) (Quit: Connection closed) |
| 04:36:00 | × | conal quits (~conal@107.181.166.211) (Quit: Computer has gone to sleep.) |
| 04:36:02 | × | sakirious quits (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Read error: Connection reset by peer) |
| 04:36:16 | → | sakirious joins (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
| 04:37:39 | → | conal joins (~conal@107.181.166.211) |
| 04:41:07 | × | conal quits (~conal@107.181.166.211) (Client Quit) |
| 04:41:48 | → | conal joins (~conal@107.181.166.211) |
| 04:41:50 | × | conal quits (~conal@107.181.166.211) (Client Quit) |
| 04:43:42 | × | vicfred quits (vicfred@gateway/vpn/mullvad/vicfred) (Quit: Leaving) |
| 04:43:51 | → | Tario joins (~Tario@201.192.165.173) |
| 04:46:25 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 04:47:26 | → | conal joins (~conal@107.181.166.211) |
| 04:48:37 | <slack1256> | nshepperd: This one is! Thank you! |
| 04:49:01 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 04:49:42 | × | slack1256 quits (~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection) |
| 04:51:13 | × | xff0x quits (~xff0x@2001:1a81:5220:500:dba:8115:2558:810b) (Ping timeout: 260 seconds) |
| 04:51:39 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 04:52:11 | → | xff0x joins (~xff0x@2001:1a81:5220:500:b2be:2371:a702:1834) |
| 04:52:20 | → | christo joins (~chris@81.96.113.213) |
| 04:54:19 | → | maxsu joins (~maxsu@ip-64-72-99-232.lasvegas.net) |
| 04:54:45 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 04:55:58 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 04:56:46 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 256 seconds) |
| 04:59:16 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:59:59 | × | inkbottle quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 05:01:09 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
| 05:04:04 | × | phaul quits (~phaul@ruby/staff/phaul) (Ping timeout: 260 seconds) |
| 05:05:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 05:05:49 | × | glguy quits (x@freenode/staff/haskell.developer.glguy) (Quit: Quit) |
| 05:06:49 | → | glguy joins (x@freenode/staff/haskell.developer.glguy) |
| 05:10:26 | × | matryoshka quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in) |
| 05:10:50 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 05:10:50 | <hyiltiz> | Not necessarily directly relevant to haskell, but I think I'd get answers I am looking for here. A tutoring company asked me to write them a website that allows studetns to take GMAT practice exams. They can provide the GMAT question pool but nothing else. How much should they pay (New York)? |
| 05:14:25 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 240 seconds) |
| 05:15:09 | × | eacameron quits (uid256985@gateway/web/irccloud.com/x-ccigqlpvwahmrvhs) (Quit: Connection closed for inactivity) |
| 05:15:17 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:17:27 | × | pmxb0t quits (~pmxb0t@185.204.1.185) (Remote host closed the connection) |
| 05:19:25 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 05:21:29 | <maerwald> | pay? |
| 05:21:48 | → | Tops21 joins (~Tobias@dyndsl-095-033-022-123.ewe-ip-backbone.de) |
| 05:24:13 | × | Tops2 quits (~Tobias@dyndsl-091-249-083-248.ewe-ip-backbone.de) (Ping timeout: 264 seconds) |
| 05:25:40 | × | Jd007 quits (~Jd007@d154-5-83-24.bchsia.telus.net) (Quit: Jd007) |
| 05:26:10 | → | phaul joins (~phaul@ruby/staff/phaul) |
| 05:26:14 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 05:26:16 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 05:27:32 | × | Welkin quits (~Welkin@216.243.35.47) (Quit: leaving) |
| 05:28:39 | × | xff0x quits (~xff0x@2001:1a81:5220:500:b2be:2371:a702:1834) (Ping timeout: 272 seconds) |
| 05:29:24 | → | xff0x joins (~xff0x@2001:1a81:5220:500:b1ba:36b1:fd0d:1ab4) |
| 05:32:23 | → | TheCavalry joins (~TheCavalr@139.28.218.148) |
| 05:33:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:39:48 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:42:00 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:46:19 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:49:59 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:51:50 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 05:52:02 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 05:54:26 | <edwardk> | clearly you are supposed to do it for free, for the exposure. |
| 05:54:43 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 05:56:25 | <ukari> | https://gist.github.com/ukari/5dbbd51bc4e82317c9e625293f0ed5c8 |
| 05:56:26 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 05:56:47 | <edwardk> | hyiltiz: anyways, my answer is i'd walk away. they don't know what they need. probably don't have an existing web presence to build on, or way for users to log in and pay for the experience, a realistic quote will cause them to choke or will leave you strung out trying to meet an impossible shifting set of goal-posts. |
| 05:57:48 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 05:57:57 | <edwardk> | ukari: you probably want a ' before the first undefined in nil' |
| 05:58:42 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Remote host closed the connection) |
| 05:59:01 | × | maxsu quits (~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 264 seconds) |
| 05:59:26 | <ukari> | I make two functions nil, nil' :: a -> Q Exp, nil is a QuasiQuotes version of nil'. But I run `runQ $ nil 1` it works, run `runQ $ nil' 1` it occurs a runtime error |
| 05:59:28 | <edwardk> | hyiltiz: the only way both parties wind up happy in this arrangement is if you set up a decent set of expectations, get someone to negotiate a contract with an appropriate kill fee to avoid you getting setup to do a ton of effort for no return and do it as time and materials (and have prior experience dealing with clients to manage the relationship) which from the phrasing of your question, i don't think you do. |
| 05:59:40 | <hyiltiz> | maerwald edwardk: they are either trying to use me as cheap labor or don't know what they are doing; they did offer $5k but I don't think building and maintaining a new fullly blown web app is way beyond $5k |
| 05:59:53 | <edwardk> | hyiltiz: run away |
| 06:00:24 | <edwardk> | 5k won't match the kill for for early termination for doing contract work, let alone the cost of doing the actual job. |
| 06:00:50 | <edwardk> | its small enough its not worth the negotiation and large enough to hang you out to dry indefinitely |
| 06:01:19 | <maerwald> | I'd just make a bold counteroffer to see the reaction |
| 06:01:47 | <hyiltiz> | Yeah I told them they can hire a real software developer company or a full-stack web dev freelancer. |
| 06:01:50 | <edwardk> | i wouldn't even do that. the time spent talking to them costs you as well, and if they are floating something that low from the get go there's no respect |
| 06:02:09 | <ukari> | edwardk, I add a ' in nil' but it occurs the new error "SigE (VarE GHC.Err.undefined) (VarT *** Exception: Prelude.undefined" |
| 06:02:20 | <edwardk> | ukari: i meant 'undefined |
| 06:02:29 | <hyiltiz> | If they really want to hire someone like that and is willing to pay me as that someone, maybe I could consider; though not sure how much should I/anyone should even expect though. |
| 06:02:34 | <hyiltiz> | kinda my first gig |
| 06:02:34 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds) |
| 06:02:41 | <edwardk> | you also have to fix the varT, but thats step two |
| 06:02:43 | <ukari> | nil' _ = sigE (varE 'Err.undefined) (varT (undefined::a)) |
| 06:02:49 | <edwardk> | hyiltiz: this is a bad gig |
| 06:03:19 | <hyiltiz> | yeah as I said not gonna take it unless it is worth it but not sure what is minimum for it to be worth it |
| 06:03:38 | <edwardk> | ukari: sigE (varE 'undefined) (varT (mkName "a")) |
| 06:04:10 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 06:04:20 | → | ransom joins (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) |
| 06:04:24 | <edwardk> | hyiltiz: given a typical ask for something that requires basic design is hitting $20k before you hit having some complicated login system, and having the form, and having to figure out how to format a gajillion GMAT questions to fit the web? |
| 06:05:32 | <hyiltiz> | yeah I thought they'd pay a freelancer or a dev company at the cheapest least $20k just to throw a early prototype out |
| 06:05:35 | <ukari> | edwardk, why this works? does mkName could capture a type variable 'a' in the signature? |
| 06:05:37 | <edwardk> | and then dealing with them because it won't be a toss it over the fence affair? A "realistic" model would be to price it at 6months work in time and materials, but because they don't have a realistic model of how pricing works, the whole thing is toxic |
| 06:05:51 | <hyiltiz> | I dont think they'd want to go up from $5k to $20k tho |
| 06:06:03 | <edwardk> | ukari: 'undefined makes the name undefined that references whatever undefined is currently in scope |
| 06:06:12 | <hyiltiz> | and yes u r right; there is either no respect or they don't know what they are asking |
| 06:06:18 | <edwardk> | hyiltiz: 20k doesn't get you a form, let alone a big GMAT test site |
| 06:06:33 | <ukari> | thank you, edwardk |
| 06:06:33 | <edwardk> | they are off over an order of magnitude from day 1. its a bad sign |
| 06:07:22 | <hyiltiz> | Yeah; this gig was from a friend of a friend who knew I was working on a prototype like this based on python but the web |
| 06:07:43 | <edwardk> | sigE foo bar expands to something like (foo :: bar) varE here is the variable expression. which we want to expand to reference the undefined that is in scope. on the other hand we want the bar to expand to just "some name that is syntactically 'a' that has no special significance" hence why i used mkName there. |
| 06:08:02 | <edwardk> | this is a recipe for losing a friend of a friend and probably a friend ;) |
| 06:08:09 | → | nikozas joins (uid482085@gateway/web/irccloud.com/x-imtxkdrjsszxrrgt) |
| 06:08:11 | <hyiltiz> | yeah i should just avoid thx |
| 06:08:14 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 06:09:19 | <edwardk> | my realistic estimate would be something like $60k for a thing where the developer might even be able to walk out of this with their shirt intact. if i had to do it without time and materials i'd pad that out more, and i'd honestly dig up a lawyer because shit is going to go wrong with that kind of deal. |
| 06:09:49 | <edwardk> | the only real way to fix it is to get paid by the hour as an actual employee, then they can see what is being done as its being done and any moving goalposts just costs them more hours |
| 06:10:06 | <edwardk> | they don't get the insulation of having you contracted to do a fixed task, but you aren't hung out to dry either. |
| 06:10:38 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 06:10:47 | <edwardk> | and all of that is ignoring the fact that you said "New York" so everything probably realistically balloons even further in. just a bad bet |
| 06:10:47 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 06:11:18 | <edwardk> | should definitely move this off channel though |
| 06:13:58 | × | ransom quits (~c4264035@c-73-243-2-10.hsd1.co.comcast.net) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 06:15:48 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 260 seconds) |
| 06:16:45 | × | TheCavalry quits (~TheCavalr@139.28.218.148) (Remote host closed the connection) |
| 06:20:39 | <hyiltiz> | yeah thx for the valuable advice; I get you. If you have more tips, we can go haskell-offtopic |
| 06:23:38 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 06:28:09 | <Squarism> | theres no trick to declare that type A will get an instance of C up the compiler dependency tree =D |
| 06:28:14 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 06:36:22 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 246 seconds) |
| 06:39:36 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 240 seconds) |
| 06:39:55 | → | mbomba joins (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) |
| 06:41:48 | → | jespada joins (~jespada@90.254.245.49) |
| 06:42:03 | → | Grim4d joins (42879b5a@66.135.155.90) |
| 06:42:26 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 06:46:12 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
| 06:47:54 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 06:48:25 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 06:50:25 | × | Grim4d quits (42879b5a@66.135.155.90) (Quit: Connection closed) |
| 06:52:25 | × | phasespace quits (~sar@89-162-33-21.fiber.signal.no) (Ping timeout: 264 seconds) |
| 06:53:08 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 260 seconds) |
| 06:55:47 | × | Stanley00 quits (~stanley00@unaffiliated/stanley00) (Ping timeout: 256 seconds) |
| 06:56:52 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 06:57:21 | → | adwin joins (~adwin@os3-384-25380.vs.sakura.ne.jp) |
| 06:58:11 | × | adwin quits (~adwin@os3-384-25380.vs.sakura.ne.jp) (Client Quit) |
| 06:58:41 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 06:59:48 | → | Stanley00 joins (~stanley00@unaffiliated/stanley00) |
| 07:01:36 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
| 07:06:10 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 07:08:36 | × | mbomba quits (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0) |
| 07:09:11 | → | nyaomin joins (~naomi@cpe-74-75-6-125.maine.res.rr.com) |
| 07:09:40 | × | nyaomi quits (~naomi@2603-7080-c43e-59ad-c878-29ff-fedf-ce89.res6.spectrum.com) (Ping timeout: 268 seconds) |
| 07:12:06 | → | knupfer joins (~Thunderbi@200116b82c27b7003ce18a741a86a926.dip.versatel-1u1.de) |
| 07:13:11 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 07:13:55 | → | phasespace joins (~sar@80-89-47-117.inet.signal.no) |
| 07:16:27 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:17:18 | → | christo joins (~chris@81.96.113.213) |
| 07:17:36 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 07:17:56 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 07:18:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 07:19:43 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 07:25:14 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:255c:18d1:c1a9:13be:6f9e) (Ping timeout: 264 seconds) |
| 07:27:15 | → | maxsu joins (~maxsu@ip-64-72-99-232.lasvegas.net) |
| 07:32:06 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 07:32:24 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 07:34:34 | × | haritz quits (~hrtz@unaffiliated/haritz) (Ping timeout: 260 seconds) |
| 07:36:02 | → | haritz joins (~hrtz@62.3.70.206) |
| 07:36:02 | × | haritz quits (~hrtz@62.3.70.206) (Changing host) |
| 07:36:02 | → | haritz joins (~hrtz@unaffiliated/haritz) |
| 07:37:39 | <Squarism> | oh, you could add constraint to instances to accomplish "pre declared instances" |
| 07:48:47 | × | howdoi quits (uid224@gateway/web/irccloud.com/x-yjigqeaqwzhgddjd) (Quit: Connection closed for inactivity) |
| 07:50:58 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 07:51:48 | → | chele joins (~chele@ip5b40237d.dynamic.kabel-deutschland.de) |
| 07:54:55 | × | nineonine quits (~nineonine@50.216.62.2) (Remote host closed the connection) |
| 07:55:36 | → | nineonine joins (~nineonine@50.216.62.2) |
| 07:58:34 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 08:00:42 | → | coot joins (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) |
| 08:01:13 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 08:02:49 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds) |
| 08:05:16 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 240 seconds) |
| 08:05:33 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 08:07:33 | → | turion joins (~turion@2a02:810d:8abf:c4a8:d43a:b21:28bf:441a) |
| 08:07:33 | × | guest111` quits (~user@49.5.6.87) (Read error: Connection reset by peer) |
| 08:07:44 | → | guest111` joins (~user@49.5.6.87) |
| 08:09:15 | <dminuoso> | Mmm, is there something like monad-logger but polymorphic over logstrings? I'd really like something where I can feed prettyprinter `Doc T` as logstrings |
| 08:12:03 | <dminuoso> | (Such that I can move layouting/rendering to one or multiple logger backends) |
| 08:17:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:21:08 | × | danso quits (~dan@23-233-104-25.cpe.pppoe.ca) (Quit: WeeChat 3.0) |
| 08:21:08 | × | knupfer quits (~Thunderbi@200116b82c27b7003ce18a741a86a926.dip.versatel-1u1.de) (Quit: knupfer) |
| 08:21:17 | → | knupfer joins (~Thunderbi@200116b82c27b7001413b21f98fb9610.dip.versatel-1u1.de) |
| 08:21:40 | × | knupfer quits (~Thunderbi@200116b82c27b7001413b21f98fb9610.dip.versatel-1u1.de) (Client Quit) |
| 08:21:48 | → | knupfer joins (~Thunderbi@200116b82c27b70054a7594c04f8dbe7.dip.versatel-1u1.de) |
| 08:21:56 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 08:27:03 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:e8e1:98ae:f4d8:7ab5) (Ping timeout: 260 seconds) |
| 08:27:53 | → | nineonin_ joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 08:30:08 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:31:10 | × | nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 272 seconds) |
| 08:33:49 | × | cgfbee quits (~bot@oc1.itim-cj.ro) (Ping timeout: 256 seconds) |
| 08:34:31 | × | Sgeo_ quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 08:35:29 | → | wqsz7xn joins (~wqsz7xn@125-237-49-103-fibre.sparkbb.co.nz) |
| 08:37:26 | → | dhouthoo joins (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) |
| 08:38:29 | <wqsz7xn> | Hi, just wondering on this "Inside IO" article if there is a mistake here? http://wiki.haskell.org/IO_inside . Particularly for the first definition of bind in the article. They define bine to use `k` but it seems to be using `f` |
| 08:38:44 | <wqsz7xn> | *bind |
| 08:38:50 | → | cgfbee joins (~bot@oc1.itim-cj.ro) |
| 08:39:22 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:831f:8b96:1f06:89e1) |
| 08:41:04 | <opqdonut> | wqsz7xn: yes f should be k |
| 08:41:14 | <wqsz7xn> | sweet, thanks |
| 08:41:39 | <wqsz7xn> | I never know how 'official' any of these resources are. I think I'll try stick to books |
| 08:41:51 | <opqdonut> | yeah that doesn't look like a particularly good monad tutorial |
| 08:41:56 | <wqsz7xn> | but there seem to be some gems like this one |
| 08:42:15 | <wqsz7xn> | I'm trying to understand IO properly |
| 08:42:27 | <wqsz7xn> | Or rather what makes it tick |
| 08:50:45 | → | bitmagie joins (~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de) |
| 08:54:29 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 08:55:28 | → | juri_ joins (~juri@79.140.122.154) |
| 08:56:58 | × | m4lvin quits (~m4lvin@w4eg.de) (Quit: m4lvin) |
| 08:57:15 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 08:57:21 | → | m4lvin joins (~m4lvin@w4eg.de) |
| 08:57:44 | × | turion quits (~turion@2a02:810d:8abf:c4a8:d43a:b21:28bf:441a) (Quit: Leaving.) |
| 08:57:58 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 08:58:19 | × | tabemann quits (~travisb@2600:1700:7990:24e0:d38d:9905:5d15:b54) (Remote host closed the connection) |
| 08:59:11 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:ad29:eab5:ee86:fb58) (Remote host closed the connection) |
| 09:01:43 | → | fendor joins (~fendor@77.119.128.187.wireless.dyn.drei.com) |
| 09:05:33 | × | nrh^ quits (~hph@ip98-184-89-2.mc.at.cox.net) () |
| 09:07:09 | × | xff0x quits (~xff0x@2001:1a81:5220:500:b1ba:36b1:fd0d:1ab4) (Ping timeout: 272 seconds) |
| 09:07:38 | → | xff0x joins (~xff0x@2001:1a81:5220:500:fff1:399c:a2f4:dff6) |
| 09:08:13 | → | banner joins (~banner@116-255-17-174.ip4.superloop.com) |
| 09:08:13 | × | banner quits (~banner@116-255-17-174.ip4.superloop.com) (Client Quit) |
| 09:09:56 | → | juri__ joins (~juri@178.63.35.222) |
| 09:11:25 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 09:12:56 | × | juri_ quits (~juri@79.140.122.154) (Ping timeout: 240 seconds) |
| 09:17:13 | <merijn> | wqsz7xn: "understanding" (as in using effectively) and "how it *actually* works" are two fairly orthogonal goals |
| 09:17:49 | <merijn> | And I'd highly recommend doing the first one *first* and *then* moving onto the implementation later (optionally *much* later) |
| 09:19:56 | × | bitmagie quits (~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de) (Quit: bitmagie) |
| 09:20:31 | <wqsz7xn> | thanks. book I'm going though goes into enough depth and covers some exercises so I should be set |
| 09:20:35 | → | tsrt^ joins (~hph@ip98-184-89-2.mc.at.cox.net) |
| 09:21:13 | <ski> | you've already covered monads ? |
| 09:22:23 | × | hexo quits (~hexo@gateway/tor-sasl/hexo) (Ping timeout: 240 seconds) |
| 09:22:32 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 09:22:32 | × | juri__ quits (~juri@178.63.35.222) (Ping timeout: 256 seconds) |
| 09:22:46 | <merijn> | wqsz7xn: Two relevant (and good) blog posts about IO are: https://blog.jle.im/entry/the-compromiseless-reconciliation-of-i-o-and-purity.html and https://blog.jle.im/entry/io-monad-considered-harmful.html |
| 09:23:04 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 240 seconds) |
| 09:23:24 | × | hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 240 seconds) |
| 09:23:24 | × | jb55 quits (~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds) |
| 09:23:37 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds) |
| 09:23:43 | × | gxt quits (~gxt@gateway/tor-sasl/gxt) (Ping timeout: 240 seconds) |
| 09:23:48 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 09:26:16 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 09:29:51 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 09:31:13 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 260 seconds) |
| 09:34:41 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 09:39:34 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 272 seconds) |
| 09:41:13 | <Profpatsch> | I have a record constructor Foo { a, b, c, … } and a bunch of functions that create Foo, but always set a and b to the same value. |
| 09:41:54 | <Profpatsch> | What’s the best way to have some ad-hoc record polymorphism? I tried defaultFoo = Foo { a = …, b = … } but of course then you get a warning that the record isn’t fully initialized |
| 09:42:12 | <Profpatsch> | Maybe turn off the warning for the one function? |
| 09:43:01 | <Profpatsch> | I mean I guess I could have an ad-hoc extra data that has all fields but the ones I default to. |
| 09:49:22 | <ephemient> | fooWithDefaults c ... = Foo { a = defaultA, b = defaultB, c = c, ... } -- maybe, depending on your usage |
| 09:49:24 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Read error: Connection reset by peer) |
| 09:49:25 | → | juri_ joins (~juri@178.63.35.222) |
| 09:49:35 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 09:49:51 | <ephemient> | I don't know if there's a great solution to this, though |
| 09:51:08 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 09:51:15 | → | kuribas joins (~user@ptr-25vy0iaexs88rik0imq.18120a2.ip6.access.telenet.be) |
| 09:53:21 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 09:54:46 | <Profpatsch> | ephemient: yeah, I don’t think there is |
| 09:55:00 | <Profpatsch> | Now I’m running into DuplicateRecordLabel ambiguity issues … |
| 09:55:50 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 09:56:03 | → | locrian9 joins (~mike@99-153-255-194.lightspeed.irvnca.sbcglobal.net) |
| 09:57:24 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds) |
| 09:57:30 | → | Wuzzy joins (~Wuzzy@p5790e691.dip0.t-ipconnect.de) |
| 09:59:19 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 09:59:33 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) |
| 10:00:29 | → | borne joins (~fritjof@200116b86411c700aa0a83b5acfe977f.dip.versatel-1u1.de) |
| 10:01:52 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds) |
| 10:03:34 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds) |
| 10:03:50 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 10:04:14 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Ping timeout: 264 seconds) |
| 10:04:25 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 10:05:13 | → | bitmagie joins (~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de) |
| 10:05:16 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 256 seconds) |
| 10:06:49 | × | ddere quits (uid110888@gateway/web/irccloud.com/x-qihpsouqwjjvfzge) (Quit: Connection closed for inactivity) |
| 10:06:49 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Excess Flood) |
| 10:07:41 | → | Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 10:08:22 | <dminuoso> | Profpatsch: Is moving a and b into a sum type an option perhaps? |
| 10:08:31 | <dminuoso> | Oh, product type of course. |
| 10:09:01 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 256 seconds) |
| 10:10:27 | → | xsperry joins (~as@unaffiliated/xsperry) |
| 10:10:29 | × | wqsz7xn quits (~wqsz7xn@125-237-49-103-fibre.sparkbb.co.nz) (Remote host closed the connection) |
| 10:10:38 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 10:13:38 | → | jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 10:14:45 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 10:14:58 | <kuribas> | Profpatsch: when I have DuplicateRecordLabels on, I usually use NamedFieldPuns or RecordWildCards to get and set the fields. |
| 10:15:52 | <kuribas> | lenses are also possible of course |
| 10:16:03 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 10:16:28 | → | jb55 joins (~jb55@gateway/tor-sasl/jb55) |
| 10:16:35 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-lyrlgqqxxqbznztz) (Quit: Connection closed for inactivity) |
| 10:17:28 | <Profpatsch> | kuribas: yes, I did that in the end |
| 10:17:46 | <Profpatsch> | mostly works, apart from some places where the field selectors need type annotations |
| 10:18:12 | <kuribas> | why do you need type annotations with NamedFieldPuns? |
| 10:19:28 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Ping timeout: 272 seconds) |
| 10:19:54 | → | LKoen joins (~LKoen@152.172.9.109.rev.sfr.net) |
| 10:21:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 10:23:32 | × | knupfer quits (~Thunderbi@200116b82c27b70054a7594c04f8dbe7.dip.versatel-1u1.de) (Remote host closed the connection) |
| 10:23:40 | → | knupfer joins (~Thunderbi@200116b82c27b70061a216d5084abddd.dip.versatel-1u1.de) |
| 10:23:53 | × | ArsenArsen quits (~Arsen@fsf/member/ArsenArsen) (Ping timeout: 265 seconds) |
| 10:23:58 | <ephemient> | it's because of DuplicateRecordLabel, not NamedFieldPuns |
| 10:24:03 | <kuribas> | Brrr, it's cold... Must be the FP winter approaching! |
| 10:24:21 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 10:25:13 | → | acidjnk_new joins (~acidjnk@p200300d0c704e7426836b2ca9660f737.dip0.t-ipconnect.de) |
| 10:25:29 | → | jmchael joins (~jmchael@87.112.235.234) |
| 10:26:36 | × | ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection) |
| 10:27:41 | → | Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas) |
| 10:28:23 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 240 seconds) |
| 10:28:51 | × | bitmagie quits (~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de) (Quit: bitmagie) |
| 10:30:35 | → | thc202 joins (~thc202@unaffiliated/thc202) |
| 10:31:55 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 10:32:34 | → | ulidtko|kk joins (~ulidtko@194.54.80.38) |
| 10:33:01 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 10:33:27 | → | sigmacool[m] joins (sigmacoolm@gateway/shell/matrix.org/x-fywwkproowrcadql) |
| 10:35:18 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Ping timeout: 272 seconds) |
| 10:36:28 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 10:37:49 | <wz1000> | Profpatsch: I once hacked up a very "interesting" "solution" to something like this based on Generics and unsafeCoerce |
| 10:38:34 | <wz1000> | In my case, there was a massive record type which took a type paramater, and depending on the type parameter, most of the fields would be a default value |
| 10:38:47 | <wz1000> | s/default value/unit type |
| 10:39:02 | <sigmacool[m]> | Hi is this the right place to ask beginner question about haskell |
| 10:39:05 | <sigmacool[m]> | * Hi is this the right place to ask beginner question about haskell? |
| 10:39:33 | <wz1000> | So I wrote a function that would take the record constructor, and supply default arguments for each of the unit fields |
| 10:39:40 | <ski> | sigmacool[m] : yes, here is fine |
| 10:40:36 | × | jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 240 seconds) |
| 10:41:04 | sigmacool[m] | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/jyqritNMDynBOZYnoQTHennU/message.txt > |
| 10:43:38 | <kuribas> | sigmacool[m]: you can write a loop using tail recursion |
| 10:43:40 | <ski> | i think usually you're not supposed to be comparing floating-point values for equality |
| 10:44:42 | <ski> | is `Dir' an `enum' type having two values ? |
| 10:44:56 | <sigmacool[m]> | data Dir = R | L |
| 10:44:57 | <ski> | why're you dividing `cursor' by ten ? |
| 10:45:17 | <ski> | wouldn't the idea be to get closer to `l', rather than closer to zero ? |
| 10:45:18 | <sigmacool[m]> | I'm abusing the rounding logic of float to figure the limit |
| 10:45:59 | <ski> | i think it's quite possible that you'll never terminate, if you check for exact equality |
| 10:46:07 | sigmacool[m] | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/toeIlZwAmVCBDQPNDKqPGoNC/message.txt > |
| 10:46:26 | <sigmacool[m]> | obviously I'm not sure if this is sound, it just what I came up with |
| 10:46:29 | <ski> | what if `f(x)' is `y', and `f(y)' is `x', where `x' and `y' are almost exactly equal ? |
| 10:46:54 | ← | coot parts (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) () |
| 10:47:13 | <ski> | ok, so you tested it with `l' being zero, and didn't notice the bug therefore |
| 10:48:28 | <ski> | anyway, it would be pretty easy to translate your code to Haskell (e.g. like kuribas said) .. |
| 10:48:59 | <sigmacool[m]> | Thats where I'm stuck xD |
| 10:49:01 | <ski> | .. however, i'm not so sure it's a generally good idea to try to learn a language, by attempting to translate code from another language into it |
| 10:49:27 | <ski> | how about starting by learning the basics of the language, without thinking of translation ? |
| 10:49:28 | <ephemient> | somebody wrote a `converge` function in this room a couple days ago IIRC. but it's pretty easy to write by hand |
| 10:49:37 | <kuribas> | it's also a good idea to implement something that you know works. |
| 10:49:53 | <ephemient> | that being said, doing this on floating point is somewhat questionable |
| 10:50:31 | <ephemient> | it may be more interesting to try implementing https://en.wikipedia.org/wiki/Automatic_differentiation in Haskell, if you're up for it |
| 10:50:51 | <sigmacool[m]> | I read a couple of haskell book years earlier, I just want to remember some basics |
| 10:51:22 | <sigmacool[m]> | like is the a haskell by example book (like rust one if you know of it) |
| 10:51:44 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 10:51:56 | <ski> | @type until |
| 10:51:58 | <lambdabot> | (a -> Bool) -> (a -> a) -> a -> a |
| 10:52:02 | <sigmacool[m]> | I like the syntax a lot thats what I'm intereted in currently, y x = 2x is really nice |
| 10:52:13 | <ski> | is also a looping combinator that could probably be used |
| 10:53:07 | × | plutoniix quits (~q@184.82.192.193) (Quit: Leaving) |
| 10:53:39 | <ski> | well, Haskell doesn't use that syntax, quite |
| 10:53:51 | <kuribas> | sigmacool[m]: except that doesn't work :-P |
| 10:53:52 | <ski> | it uses an explicit multiplication sign |
| 10:54:09 | <sigmacool[m]> | ah yes xD I get the error each time |
| 10:54:10 | <sigmacool[m]> | then rembere |
| 10:54:13 | <sigmacool[m]> | * then rember |
| 10:54:18 | <sigmacool[m]> | * then remeber |
| 10:54:27 | <kuribas> | one more |
| 10:54:28 | <ski> | > let y x = 2x in y 2 |
| 10:54:30 | <lambdabot> | 2 |
| 10:54:57 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 10:55:01 | <sigmacool[m]> | what is this magic |
| 10:55:06 | <sigmacool[m]> | doesnt work in ghci |
| 10:55:23 | <ski> | > 2 3 4 |
| 10:55:25 | <lambdabot> | 2 |
| 10:55:43 | <sigmacool[m]> | > let y x = 2x in y |
| 10:55:45 | <lambdabot> | error: |
| 10:55:45 | <lambdabot> | • No instance for (Typeable t0) |
| 10:55:45 | <lambdabot> | arising from a use of ‘show_M39766163928361039658’ |
| 10:55:47 | <ephemient> | I suppose you could define `instance Num a => Num (a -> a) where fromInteger = (*) . fromInteger` and then `2 x` would work |
| 10:55:51 | <ephemient> | that would be pretty evil though |
| 10:55:51 | <ski> | "magic" numeric instance for functions |
| 10:56:12 | <sigmacool[m]> | How do I write multiline function in ghci btw |
| 10:56:33 | <sigmacool[m]> | limit f l dir = |multiline here |
| 10:56:47 | <ephemient> | start multiline mode with :{ alone, end multiline with :} |
| 10:56:48 | <ski> | (a) put the defining equations (with type signature, if you include it), in a single command, separated by `;'s |
| 10:56:54 | <ski> | or (b), what ephemient said |
| 10:57:15 | <ski> | but usually best is to define them in your source file |
| 10:57:37 | <sigmacool[m]> | this repl programming is really nice though |
| 10:57:43 | → | nly joins (~user@unaffiliated/nly) |
| 10:57:51 | <ski> | not really that nice |
| 10:57:54 | <ephemient> | semicolons work, but if you end up with nested let/where etc. you need to understand the syntactic rules |
| 10:58:05 | <nly> | once you get IO somthing are you stuck with IO ... ? |
| 10:58:11 | <ski> | yes |
| 10:58:14 | <nly> | ah ok |
| 10:58:42 | <ephemient> | it is also easy to write a *.hs file and use `:load file.hs` to get it into ghci, and `:reload` to ... reload |
| 10:58:53 | <ephemient> | `:l` and `:r` shorthand also available |
| 10:59:22 | × | TMA quits (tma@twin.jikos.cz) (Ping timeout: 272 seconds) |
| 11:00:00 | <sigmacool[m]> | ok thanks anyway I guess I'm a level under beginner currently xD I need to fix that first I geuss |
| 11:00:14 | <sigmacool[m]> | Is there an equivalant to the rust book? |
| 11:00:15 | <ski> | sigmacool[m] : anyway, if i wanted to translate that `limit' to Haskell, i'd define a helper function (e.g. called `loop'), taking `cursor' and `f_val' as parameters |
| 11:00:29 | <ski> | there are several Haskell books |
| 11:01:11 | ski | doesn't know about "the rust book", doesn't know what it covers, what its style is, &c. |
| 11:01:26 | → | bitmagie joins (~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de) |
| 11:01:34 | → | coot joins (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) |
| 11:01:41 | <sigmacool[m]> | ah what I mean if a beignner comes to rust there is unified answer, read the rust book |
| 11:01:49 | <sigmacool[m]> | * ah what I mean if a beginner comes to rust there is unified answer, read the rust book |
| 11:02:16 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 11:02:22 | <ephemient> | the Haskell report is canonical (but probably not good for beginners) |
| 11:02:23 | <ski> | (why do you repeat the same message, with ` * ' placed in front of it ? you already did this, once before) |
| 11:02:26 | <ephemient> | Rust doesn't have an equivalent |
| 11:02:35 | <ephemient> | Matrix / IRC interaction is bad |
| 11:02:56 | <ski> | @where PIH |
| 11:02:57 | <lambdabot> | "Programming in Haskell" by Graham Hutton in 2007-01-15,2016-09-01 at <http://www.cs.nott.ac.uk/~pszgmh/pih.html> |
| 11:03:06 | <ski> | is liked/suggested by some |
| 11:03:22 | <sigmacool[m]> | thanks I'll check it out |
| 11:03:27 | <ski> | i learned from "Haskell: The Craft of Functional Programming" by Simon Thompson |
| 11:03:46 | <ski> | @where HPFFP |
| 11:03:46 | <lambdabot> | "Haskell Programming: from first principles - Pure functional programming without fear or frustration" by Chistopher Allen (bitemyapp),Julie Moronuki at <http://haskellbook.com/>,#haskell-beginners |
| 11:04:30 | <ski> | is often suggested it seems. it's quite long, wordy, tries to start from very basics (doesn't assume you know anything about programming). some people like it, some not so much |
| 11:04:38 | <ski> | @where HTAC |
| 11:04:38 | <lambdabot> | "Haskell Tutorial and Cookbook" by Mark Watson in 2017-09-04 at <https://leanpub.com/haskell-cookbook> |
| 11:04:41 | <ski> | @where wikibook |
| 11:04:41 | <lambdabot> | http://en.wikibooks.org/wiki/Haskell |
| 11:05:06 | <ephemient> | I learned from the Haskell report and wiki. not the easiest route, maybe only worked due to prior experience with ML, but it worked |
| 11:05:44 | <ski> | yea, if you've already seen one of the MLs (or Miranda or Clean, say), then the report would probably work ok |
| 11:06:09 | <ski> | (same for the "gentle" introduction) |
| 11:06:13 | × | cstrahan quits (sid36118@gateway/web/irccloud.com/x-zgbgvkugvrztuagh) (Ping timeout: 244 seconds) |
| 11:06:30 | × | darthThorik quits (sid39589@gateway/web/irccloud.com/x-tegdxlrjfjitucof) (Ping timeout: 246 seconds) |
| 11:06:51 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 272 seconds) |
| 11:06:52 | <sigmacool[m]> | thanks for all the recommendations!, it should be a good starting point so I'll work it out |
| 11:06:58 | → | darthThorik joins (sid39589@gateway/web/irccloud.com/x-dlhuozqdfhpxyasn) |
| 11:07:02 | → | cstrahan joins (sid36118@gateway/web/irccloud.com/x-eoawfxwbhlcltxpm) |
| 11:07:12 | <ski> | oh, and this link has exercises you could try : |
| 11:07:16 | <ski> | @where CIS194 |
| 11:07:16 | <lambdabot> | https://www.seas.upenn.edu/~cis194/spring13/lectures.html |
| 11:07:36 | <ski> | (i think it also has some explanatory material you could check out) |
| 11:07:44 | <ski> | sometimes |
| 11:07:48 | <ski> | @where LYAH |
| 11:07:48 | <lambdabot> | http://www.learnyouahaskell.com/ |
| 11:07:51 | <ski> | is suggested |
| 11:08:26 | <ski> | however, while it does have pretty pictures, it doesn't go that in-depth (has sometimes been likened to a four-hour long trailer), and suffers from the lack of exercises |
| 11:08:31 | <sigmacool[m]> | thats what I read before |
| 11:08:40 | <ski> | you could try looking at it, if you want to, but i'd suggest not using only that |
| 11:08:48 | <sigmacool[m]> | I liked it actually , it was a nice intro to functional world |
| 11:09:25 | <ephemient> | I don't think it's a very good intro |
| 11:09:41 | × | bitmagie quits (~Thunderbi@200116b806a1c10055a47f026e696a4a.dip.versatel-1u1.de) (Quit: bitmagie) |
| 11:10:59 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 11:11:05 | <ephemient> | https://haskellbook.com/ is much longer, but is both deeper and broader than LYAH |
| 11:11:15 | → | michalz joins (~user@185.246.204.78) |
| 11:12:02 | × | daGrevis quits (~daGrevis@unaffiliated/dagrevis) (Remote host closed the connection) |
| 11:13:29 | <sigmacool[m]> | ok appreciated! |
| 11:13:30 | → | daGrevis joins (~daGrevis@unaffiliated/dagrevis) |
| 11:15:36 | ← | nly parts (~user@unaffiliated/nly) ("ERC (IRC client for Emacs 27.1)") |
| 11:15:53 | sigmacool[m] | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/BzhlPlNyiEWAHgMudBUSZKTp/message.txt > |
| 11:16:32 | sigmacool[m] | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/eULBHdxKcAazjVxTCTfMOKDL/message.txt > |
| 11:16:40 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 256 seconds) |
| 11:17:01 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 11:17:30 | <ski> | y dir = if dir == R then True else False -- assuming you put `deriving Eq' after `data Dir = L | R' |
| 11:17:37 | <ski> | of course, that could be simplified to just |
| 11:17:45 | <ski> | y dir = dir == R |
| 11:17:53 | <ephemient> | Matrix lets you, but IRC doesn't support multi-line messages and doesn't support correcting messages so the interop is ugly. could you try not to? |
| 11:17:58 | <ski> | another way to do it, without equality comparision is |
| 11:18:05 | <ski> | y dir = case dir of |
| 11:18:10 | <ski> | R -> True |
| 11:18:15 | <ski> | L -> False |
| 11:18:19 | <ski> | or simply |
| 11:18:23 | <ski> | y R = True |
| 11:18:26 | <ski> | r L = False |
| 11:18:36 | <ski> | (er, should be `y', not `r') |
| 11:18:37 | <sigmacool[m]> | ok I see thanks! |
| 11:19:26 | <ski> | (btw, apparently Matrix again decided to send the same (in this case, long) message again, with ` * ' added in front of it the second time) |
| 11:20:07 | <ephemient> | because sigmacool[m] corrected their message, which means Matrix re-sends the entire thing to IRC |
| 11:20:08 | <ski> | (.. ooh, i see. i think it does that, when you go back and correct some mistake in a previous message) |
| 11:20:13 | <ski> | right |
| 11:20:23 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Ping timeout: 240 seconds) |
| 11:20:43 | × | jb55 quits (~jb55@gateway/tor-sasl/jb55) (Ping timeout: 240 seconds) |
| 11:21:35 | <sigmacool[m]> | is there some guideline on how to use this chat? (not correct message) or there is no technical issues? |
| 11:21:58 | <ski> | not quite sure what you're asking for |
| 11:22:03 | → | jb55 joins (~jb55@gateway/tor-sasl/jb55) |
| 11:22:20 | <alp> | respectful communications, "don't ask to ask, just ask", things like this, nothing out of the ordinary I suspect |
| 11:22:22 | <ephemient> | https://wiki.haskell.org/IRC_channel + general IRC etiquette |
| 11:22:28 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 11:22:36 | <ski> | the general rule in here has been "Be nice, or else.", for many years |
| 11:23:32 | <sigmacool[m]> | yeah not those rules (obviously those are important) but I think that my messages causes issue with irc? |
| 11:24:00 | <ski> | "Don't ask to ask." (and be patient), and "Try to be at least somewhat on-topic, especially if there's on-topic conversation, or if you're asked to." is also good things to keep in mind |
| 11:24:37 | <ephemient> | IRC does not support amending messages. IRC does not support multi-line messages. IRC does not support code formatting. hence, doing any of those things in Matrix looks ugly on the IRC side. it's readable, but ideally avoided |
| 11:25:05 | <sigmacool[m]> | Ok makes sense |
| 11:25:45 | <dminuoso> | sigmacool[m] connects via matrix though |
| 11:25:45 | <ski> | it's quite likely that some people won't bother to check the link that Matrix sends when you do a long message |
| 11:27:04 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 11:28:03 | → | philopsos joins (~caecilius@45.133.192.108) |
| 11:29:09 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 11:29:24 | <ski> | (hm, also i don't completely agree with the description of the principles on the Wiki page. in particular, i'd prefer if people did not award karma points (including to me, of course)) |
| 11:30:10 | × | nineonin_ quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 11:30:19 | <sigmacool[m]> | I would appreciate if someone tells me how close I am |
| 11:30:19 | <sigmacool[m]> | limit f l dir = let c = if dir == R then l +1 else l -1; let n_v = Nothing; in until x == n_v let x = Maybe(f(c)); return x |
| 11:30:37 | <ephemient> | if you use a paste service or github gist for sharing multi-line code, at least that gives you space to write a message so that people can have some idea of what it is without clicking through. if you use matrix to send it, it hides the entire thing behind a link |
| 11:30:47 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 11:31:18 | <ski> | remove middle `let', or put an `in' before it |
| 11:31:50 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 11:31:51 | <ski> | `until' takes two functions as arguments |
| 11:32:09 | <ephemient> | function application binds more tightly than you seem to expect there, too |
| 11:32:23 | <ski> | you don't want to use `return' (`return' is not a general keyword for specifying the output value of a function call. `return' is a function) |
| 11:32:41 | <ephemient> | f x + y (for any operator +) always means (f x) + y, not f (x + y) |
| 11:32:51 | <ephemient> | (e.g. == in your code) |
| 11:33:20 | <ski> | you haven't declared the `x' variable |
| 11:33:40 | <ski> | (or rather, not before the `x == n_v' part) |
| 11:34:21 | <ski> | sigmacool[m] : are you familiar with function abstractions / anonymous functions / lambda expressions ? |
| 11:34:33 | <sigmacool[m]> | yes |
| 11:34:42 | <ephemient> | honestly `return` should probably be removed, if not for legacy reasons. it confuses beginners and is supplanted by `pure` |
| 11:34:51 | <ephemient> | *removed from the language |
| 11:34:59 | <sigmacool[m]> | yeah I remembered now |
| 11:35:34 | <ski> | perhaps you want to pass something like `\x -> x == n_v' as first parameter to `until' ? |
| 11:35:37 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 246 seconds) |
| 11:36:17 | ski | thinks the confusion it causes beginners might actually be a plus |
| 11:36:32 | <ephemient> | or declare functions separately, e.g. let isDone x = ...; step x = ...; in until isDone step initial |
| 11:36:33 | <ski> | (encouraging them to let go of comparisions with other languages they might've seen) |
| 11:36:53 | <ski> | yes |
| 11:43:57 | × | andi- quits (~andi-@NixOS/user/andi-) (Ping timeout: 260 seconds) |
| 11:44:18 | → | jedws joins (~jedws@121.209.139.157) |
| 11:46:25 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds) |
| 11:47:21 | → | Franciman joins (~francesco@host-82-48-174-127.retail.telecomitalia.it) |
| 11:48:00 | <ephemient> | hmm. https://gitlab.haskell.org/ghc/ghc/-/wikis/proposal/monad-of-no-return hasn't been updated in a while |
| 11:51:53 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 11:52:45 | <sigmacool[m]> | map (\x -> 2) x |
| 11:52:57 | <sigmacool[m]> | a fucntion that ignore its argument and assign a value |
| 11:53:05 | <sigmacool[m]> | is that how it looks? |
| 11:54:33 | <lortabac> | sigmacool[m]: there is no assignment in Haskell, maybe you mean "returns a value"? |
| 11:55:50 | <sigmacool[m]> | yes I think |
| 11:55:54 | <sigmacool[m]> | limit f l dir = let c = if dir == R then l +1 else l -1; n_v = Nothing; x = Just 5145641; in until (x == n_v) (Just $ f l) x |
| 11:56:13 | <ski> | > let xs = [2,3,5,7] in map (\x -> 2) xs |
| 11:56:15 | <lambdabot> | [2,2,2,2] |
| 11:56:51 | <sigmacool[m]> | I think I'm getting closer, that x = Just randomnum is incorrect, also I know until aplies the second argument to the third but I'm not sure how to use that to assing x to the second argument |
| 11:56:56 | <ski> | you're still not passing two functions to `until' |
| 11:57:02 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 11:57:32 | <sigmacool[m]> | yeah I'm thinking about the second function |
| 11:57:38 | <sigmacool[m]> | the first is the cond is easy x == n_v |
| 11:57:47 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 11:57:54 | <ski> | `x == n_v' is a `Bool', not a function |
| 11:57:55 | <sigmacool[m]> | but I want the second to somehow change x value |
| 11:58:02 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 11:58:25 | <ski> | the first function should be a function that, given a state, tells whether to stop looping or not |
| 11:58:57 | <ski> | the second function should also take a state, and compute as result the next state (in case we're continuing looping, as determined by the first function) |
| 11:59:33 | <ski> | > until (\x -> x >= 1000) (\x -> 2 * x) 1 |
| 11:59:35 | <lambdabot> | 1024 |
| 12:00:03 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 12:00:09 | <ski> | that doubles the state, starting from the initial state `1', until it reaches at least a thousand |
| 12:01:05 | <ski> | the `\x ->' part declares the variable `x' |
| 12:01:26 | <ski> | (declares it as being the parameter of the function) |
| 12:02:55 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds) |
| 12:03:50 | → | andi- joins (~andi-@NixOS/user/andi-) |
| 12:04:19 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds) |
| 12:05:48 | → | drbean_ joins (~drbean@TC210-63-209-150.static.apol.com.tw) |
| 12:06:02 | × | lep-delete quits (~lep@94.31.81.93) (Ping timeout: 264 seconds) |
| 12:08:58 | × | ph88 quits (~ph88@ip5f5af71a.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 12:09:24 | → | ph88 joins (~ph88@95.90.247.26) |
| 12:11:16 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 12:11:26 | → | jedws joins (~jedws@121.209.139.157) |
| 12:14:34 | <ij> | are all space leaks just because of data accidentally left as used somewhere in the 'live' structures from gc perspective? |
| 12:15:45 | <opqdonut> | yeah, but that's a bit simplistic |
| 12:16:16 | <ij> | I don't know, I haven't debugged any, but I know they're around, so I want to know more |
| 12:16:18 | <opqdonut> | but the difference between a memory leak and a space leak is indeed that a memory leak is about not freeing unused memory, while a space leak is about inadvertently using too much memory |
| 12:16:19 | <dminuoso> | I think it doesn't properly describe it |
| 12:16:51 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 12:17:18 | <opqdonut> | there are many differen types space leaks: unevaluated thunks in a fold, unevaluated thunks in Data.Map values, hanging on to the head of a lazy sequence |
| 12:17:26 | <opqdonut> | I don't think there's one definition that can capture all of these |
| 12:17:32 | <dminuoso> | A space leak could be transient too |
| 12:17:42 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 256 seconds) |
| 12:17:54 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 272 seconds) |
| 12:17:56 | <dminuoso> | (introducing unnecessary thunks, which costs heap space) |
| 12:18:09 | <dminuoso> | even if they are collected shortly after, it does create pressure |
| 12:18:22 | <ij> | meaning you have to spend time collecting it? |
| 12:18:29 | <dminuoso> | It depends on how you define the term, and afaik it's not well defined |
| 12:18:41 | <dminuoso> | ij: collecting is essentially for free in GHC GCs. |
| 12:18:48 | <merijn> | opqdonut: Have you heard the glorious news? |
| 12:18:57 | <opqdonut> | merijn: probably not |
| 12:19:01 | <merijn> | opqdonut: How the heavens opened up and shined their glorious light on us! |
| 12:19:13 | <ij> | dminuoso, probably beacuse of copy, but garbage will still cost becasuse of marking |
| 12:19:24 | <merijn> | opqdonut: minimum/maximum/sum/product are being made strict ;) |
| 12:19:24 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 12:19:31 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 12:19:56 | <dminuoso> | ij: We dont have marking exactly |
| 12:20:06 | <dminuoso> | ij: In the old GC, we just copy live objects. |
| 12:20:10 | <merijn> | "And god looked upon it and said: 'Fucking finally...'" |
| 12:20:12 | <opqdonut> | merijn: right, I had actually heard about this. IME strictness analysis has made them strict for me when needed |
| 12:20:14 | <dminuoso> | Anything not copied gets lost |
| 12:20:29 | <merijn> | ij: There is no marking |
| 12:20:30 | <dminuoso> | But yeah, it adds gc pressure this way |
| 12:20:42 | <merijn> | ij: GHC doesn't use mark&sweep |
| 12:20:59 | <ij> | merijn, dminuoso, I know it's copying, I just didn't know a better word |
| 12:21:03 | <merijn> | (Well, I guess the new GC does do a form of mark&sweep, but very few people use that) |
| 12:21:29 | <merijn> | ij: Garbage isn't copied so garbage is free in GHC's collector |
| 12:21:32 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 258 seconds) |
| 12:21:38 | <merijn> | ij: In fact, that's one of the reasons behind its design |
| 12:21:44 | <dminuoso> | merijn: You misunderstand |
| 12:21:53 | <merijn> | lazy evaluation produces *lots* of garbage |
| 12:21:55 | → | Entertainment joins (~entertain@104.246.132.210) |
| 12:22:08 | <dminuoso> | merijn: Im confident by "garbage" they meant "it's not needed, but something keeps it alive" |
| 12:22:11 | <ij> | ah, of course! |
| 12:22:37 | → | ggole joins (~ggole@2001:8003:8119:7200:541f:f655:3fda:a8bb) |
| 12:22:41 | <ij> | only live data spends time, I didn't understand it right the first time |
| 12:23:01 | → | lep-delete joins (~lep@94.31.81.93) |
| 12:23:39 | <dminuoso> | But producing garbage is still not free, since you still pay for allocations |
| 12:23:51 | <merijn> | dminuoso: barely :p |
| 12:23:56 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 240 seconds) |
| 12:24:28 | × | Stanley00 quits (~stanley00@unaffiliated/stanley00) () |
| 12:25:03 | <merijn> | ij: The simplest explanation of a space leak is: Suppose we wanna sum 5 billion numbers. Do we *first* wanna allocate 5 billion additions worth of thunks (huge amounts of memory) and then when they get forced evaluate them to a single Int |
| 12:25:03 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 12:25:21 | <merijn> | ij: Or do we just wanna force it immediately, never allocating any thunks and only ever having 1 Int? |
| 12:25:34 | <ij> | makes sense |
| 12:25:39 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 12:25:50 | <merijn> | ij: And generally the answer is never "we want 5 billion thunks" when it comes to stuff like sum/product :p |
| 12:26:04 | <merijn> | ij: That's what people generally refer to with "space leak" |
| 12:26:10 | <opqdonut> | that's merely one (but fairly common) class of space leak |
| 12:26:43 | <ij> | opqdonut, but it's just a simple explanation that might serve as good analogy to all others |
| 12:27:04 | <opqdonut> | another one is doing something like `sum longLazySequence / length longLazySequence`. Even if sum and length don't allocate excess thunks, the problem is that longLazySequence stays in memory |
| 12:27:39 | <ij> | couldn't this specific one be optimized? |
| 12:27:50 | <opqdonut> | this latter one is a hard problem in general |
| 12:28:29 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 12:28:29 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 12:28:36 | <merijn> | ij: Well, how would you detect it? |
| 12:28:53 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 12:31:19 | <ij> | merijn, well they both traverse lLS forward at the same time |
| 12:31:46 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Client Quit) |
| 12:31:53 | <merijn> | ij: Ok, so we "just" need a way for the compiler to recognise any traversal and anything that resembles a sequence? |
| 12:32:04 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 12:32:25 | <opqdonut> | and sometimes it might be the wanted behaviour. say longLazyList is some set of data and you do lots of different statistics over it |
| 12:32:30 | <opqdonut> | keeping it in memory might be what you want |
| 12:33:37 | <ij> | merijn, well, ghc knows already that sum and length separately don't need to hold on to the whole list, so they could just be traversed at the same time |
| 12:33:48 | <merijn> | ij: How does it know that? |
| 12:34:00 | <ij> | I'm not sure, but it is true, right? |
| 12:34:05 | <merijn> | No? |
| 12:34:26 | <merijn> | At least, not in any way I can see |
| 12:35:08 | <opqdonut> | I think you could define sum, length and / such that multiple traversals automatically get fused |
| 12:35:09 | <merijn> | It's a compiler, it doesn't "know" anything. It just follows patterns "we" have defined/programmed. So you need to be able to define *exactly* what it is that it should do. |
| 12:35:38 | <opqdonut> | but that would only help with this case, another case would be computing length and sum in very different parts of the code, without any direct link between them |
| 12:35:44 | <ij> | merijn, it's a two way street – what we know we can figure out if we can make computers know |
| 12:35:57 | <ij> | but alright sum [0..] is consuming memory |
| 12:36:02 | → | sheaf joins (~sheaf@2a01:cb19:80cc:7e00:c198:142c:b408:800e) |
| 12:36:04 | <merijn> | ij: That part turns out to be *surprisingly* hard :p |
| 12:36:08 | → | mirrorbird joins (~psutcliff@2a00:801:446:b70b:607:9995:9930:4d27) |
| 12:36:20 | <opqdonut> | patterns like iteratees/pipes are aimed at guaranteeing constant memory usage, i.e. not keeping the whole data in memory |
| 12:36:25 | <merijn> | ij: There are many things *I* know that I don't know how to implement in a compiler |
| 12:36:34 | <ij> | I believe that! |
| 12:37:05 | <ij> | I thought sum [0..] would only keep a single (but probably increasingly bigger) integer |
| 12:38:08 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 12:38:20 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-zfmzrhpcnpxmksjd) |
| 12:38:39 | <__monty__> | Wasn't this fixed by using strict folds instead? |
| 12:38:55 | <merijn> | __monty__: It will be |
| 12:38:56 | → | geekosaur joins (ac3a547a@172.58.84.122) |
| 12:39:12 | <merijn> | __monty__: But the question wasn't "why can't GHC just optimise that?" |
| 12:39:22 | <dminuoso> | ij: GHC does have a strictness analyzer, that determines whether it can add strictness (when it knows some value will definitely be used) |
| 12:39:25 | <merijn> | Which is, of course, because we don't know how to define "that" |
| 12:39:28 | <dminuoso> | ij: It's just... very poor and lackluster. |
| 12:40:18 | <ij> | merijn, :) I understand (it's not that I expect it to be easy) |
| 12:40:35 | × | shf quits (~sheaf@2a01:cb19:80cc:7e00:ed22:5b3a:3fa:a0b7) (Ping timeout: 272 seconds) |
| 12:43:28 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 12:44:51 | <ij> | in fact, I don't know anything about compilers |
| 12:47:42 | × | Bergle_1 quits (~Bergle_4@101.165.90.119) (Read error: Connection reset by peer) |
| 12:48:01 | <dminuoso> | In principle they aren't complicated. |
| 12:49:23 | <dminuoso> | The main principle by which GHC's simplifier gains performance, is just inlining. |
| 12:49:32 | <dminuoso> | So a lot of the transformation GHC does, is to facilitate more inlining. |
| 12:49:39 | → | Bergle_1 joins (~Bergle_4@101.165.90.119) |
| 12:49:47 | <dminuoso> | (It does plenty of other things, but the main concern is just that) |
| 12:50:01 | <kuribas> | and inlining is done to facilitate more optimizations |
| 12:56:08 | <kuribas> | like deforestation |
| 12:57:23 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 12:57:43 | → | bitmapper joins (uid464869@gateway/web/irccloud.com/x-uvziyudvcbiadite) |
| 13:01:19 | → | Tario joins (~Tario@201.192.165.173) |
| 13:02:43 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 13:02:44 | → | jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 13:03:09 | → | jedws joins (~jedws@121.209.139.157) |
| 13:04:25 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 264 seconds) |
| 13:10:13 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 13:11:01 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
| 13:11:22 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 13:11:52 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:13:35 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0) |
| 13:13:59 | × | sheaf quits (~sheaf@2a01:cb19:80cc:7e00:c198:142c:b408:800e) (Read error: Connection reset by peer) |
| 13:14:17 | → | mbomba joins (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) |
| 13:15:30 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 13:17:56 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 13:21:34 | → | mastarija joins (~mastarija@188.252.197.30) |
| 13:25:37 | → | jedws joins (~jedws@121.209.139.157) |
| 13:25:51 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
| 13:26:16 | × | LKoen quits (~LKoen@152.172.9.109.rev.sfr.net) (Remote host closed the connection) |
| 13:26:41 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 13:27:02 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 13:27:31 | × | jedws quits (~jedws@121.209.139.157) (Client Quit) |
| 13:29:23 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 13:29:36 | → | neiluj joins (~jco@91-167-203-101.subs.proxad.net) |
| 13:29:36 | × | neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host) |
| 13:29:36 | → | neiluj joins (~jco@unaffiliated/neiluj) |
| 13:31:11 | → | cmcma20 joins (~cmcma20@l37-192-2-125.novotelecom.ru) |
| 13:31:32 | <cmcma20> | singletons ux is infuriating |
| 13:31:36 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 13:31:54 | <merijn> | cmcma20: Well yes, there's a reason why the original paper was called Hasochism |
| 13:31:57 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 13:32:14 | → | jedws joins (~jedws@121.209.139.157) |
| 13:32:14 | → | son0p joins (~son0p@181.136.122.143) |
| 13:32:18 | <merijn> | Fortunately, I have one simple trick for dealing with this! |
| 13:32:22 | <cmcma20> | I've tried to buy into it only because it has some TH stuff |
| 13:32:31 | <cmcma20> | and it doesn't even work in my case |
| 13:32:43 | → | LKoen joins (~LKoen@152.172.9.109.rev.sfr.net) |
| 13:32:43 | <cmcma20> | merijn: what trick? |
| 13:32:50 | <merijn> | cmcma20: I don't use singletons ;) |
| 13:33:55 | <cmcma20> | merijn: do you feel the void breathing into your neck when your types have values that don't represent anything meaningful in your semantics? |
| 13:33:58 | <merijn> | The gospel of Merijn: Dependent Haskell is probably a kinda bad idea and the sooner you accept this, the happier you will be writing Haskell :) |
| 13:34:28 | <cmcma20> | fix: The Void |
| 13:35:34 | <merijn> | cmcma20: No, because I try to avoid types that do not represent meaningful values :p |
| 13:35:34 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
| 13:35:38 | → | niekvand_ joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 13:36:16 | <cmcma20> | ah can I borrow some of your wisdom because my is clearly lacking |
| 13:36:45 | <merijn> | Dependent Types are cool. If you have language designed having them from the beginning. I fear that many people who think -XDependentHaskell will magically make dependent types/singletons "not suck" are overly optimistic |
| 13:36:46 | → | olligobber1 joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 13:37:08 | <merijn> | cmcma20: I mean, there's nothing wrong with fucking around with dependent types and what not, but just, like, download Idris or Agda then :p |
| 13:37:25 | <merijn> | You'll be infinitely happier! |
| 13:37:37 | <cmcma20> | merijn: I had been! But this project is in Haskell. |
| 13:37:58 | <merijn> | cmcma20: Ah...someone else succumbed to Dependent Haskell... |
| 13:38:07 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds) |
| 13:38:31 | <cmcma20> | Agda and Idris are young but irrelevant in indstry |
| 13:38:36 | <merijn> | In that case I recommend "rolling up a newspaper, thwapping them on the nose and putting them in timeout until they come to their senses" :) |
| 13:38:48 | <__monty__> | Agda's not irrelevant. |
| 13:39:02 | <merijn> | Hear ye, the second Gospel of Merijn: Dependent Haskell is also irrelevant in industry ;) |
| 13:39:07 | <__monty__> | It's just used as a proof assistant rather than an implementation language. |
| 13:39:37 | <kuribas> | stronger = more specific? |
| 13:39:48 | <cmcma20> | I mean industry like "medium sized corpos tryna' get some money", not "tech gargantuas devouring the world" or "sipping tea in the ivory tower" stuff |
| 13:41:05 | <__monty__> | kuribas: I don't know the context but I think there's kind of a variant/contravariant parallel. A statement is stronger if it either tells you more or if it tells you the same property applies to more objects. |
| 13:41:25 | <merijn> | cmcma20: Dependent Haskell is *very much* sipping tea in the ivory tower stuff :p |
| 13:41:29 | <__monty__> | cmcma20: I think IOHK is still firmly in the former category : ) |
| 13:41:35 | × | jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer) |
| 13:41:46 | → | jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 13:41:48 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th) |
| 13:41:57 | <kuribas> | __monty__: is Monad stronger than Applicative? |
| 13:42:16 | <cmcma20> | merijn: and what about Galois? They've done a ton of singletons for something defense related I guess |
| 13:42:22 | <__monty__> | Yes, because Monad implies Applicative. |
| 13:42:53 | <kuribas> | right |
| 13:42:53 | <__monty__> | Galois is more in that too big to fail category afaict. |
| 13:43:22 | <__monty__> | kuribas: It's stronger in the former sense, it tells you more about an object. |
| 13:43:26 | <merijn> | I feel like imitating Galois is like imitating Facebook/Google |
| 13:43:39 | <merijn> | What works for them is far from guaranteed to work for you |
| 13:44:00 | <cmcma20> | merijn: most definitely |
| 13:45:25 | × | jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Read error: Connection reset by peer) |
| 13:45:28 | <ski> | kuribas : stronger statements imply weaker ones |
| 13:45:40 | → | jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 13:46:00 | <kuribas> | ok, that makes sense |
| 13:46:09 | <merijn> | As much as I dislike both the name and rhetoric around "boring Haskell" I do very much feel that the influx of new Haskell programmers in the past decade have been overly obsessed with type level stuff. Type level stuff is like spices. A little goes a long way and you gotta make sure the cost is worth the benefit |
| 13:46:30 | <merijn> | Many of these type level death machines can be replaced by "just writing a bit of code" |
| 13:46:33 | <ski> | e.g. `forall a. P a -> Q a' implies `(forall a. P a) -> (forall a. Q a)' |
| 13:46:50 | <ski> | therefore the former is stronger, and the latter weaker |
| 13:49:33 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 13:49:59 | → | silvers- joins (~silvers-@178.162.209.171) |
| 13:50:14 | × | drbean_ quits (~drbean@TC210-63-209-150.static.apol.com.tw) (Ping timeout: 260 seconds) |
| 13:50:46 | <kuribas> | merijn: word |
| 13:51:01 | <kuribas> | merijn: I feel there's a lot of XY in it. |
| 13:51:14 | <merijn> | kuribas: Well also just naive enthusiasm |
| 13:51:20 | <cmcma20> | merijn: Mostly agree with you. Yet there are some things that are impossible to do without type trickery. |
| 13:51:25 | <merijn> | "Types are great, therefore *more* types must be better!" |
| 13:52:02 | ski | . o O ( "A little knowledge is dangerous." ? ) |
| 13:53:37 | × | silvers- quits (~silvers-@178.162.209.171) (Remote host closed the connection) |
| 13:54:40 | <kuribas> | cmcma20: some things also don't need to be done often... |
| 13:54:43 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 13:54:46 | <kuribas> | like getting 100% type safety |
| 13:55:00 | <kuribas> | or coding business logic into types. |
| 13:55:11 | <__monty__> | I like people experimenting/pushing the envelope on what a type system can do and haskell seems like a great playground for this. I see boring haskell more as a way to indicate what is practical and what may be interesting but comes at considerable cost. |
| 13:55:29 | <kuribas> | exactly |
| 13:55:36 | <merijn> | __monty__: I dislike boring Haskell, because a lot of extensions do have a lot of use |
| 13:55:43 | <__monty__> | I don't want boring haskell to be a "movement" of people trying to discourage such experimentation. |
| 13:55:45 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0) |
| 13:55:50 | <merijn> | But you gotta think hard on whether the cost is worth the benefit |
| 13:56:16 | <merijn> | Like, are GADTs *extremely* useful? Yes! Should you use them everywhere? Probably not! |
| 13:56:25 | <cmcma20> | merijn: And spice must flow. Once you've had a taste of deptypes you sometimes get stuck not being able to bite the bullet and write code in a simple way. |
| 13:57:10 | × | jedws quits (~jedws@121.209.139.157) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:57:32 | <cmcma20> | Then you find yourself in a sea of pain because there's no language with a linear dependent homotopy type theory... |
| 13:57:49 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 13:59:00 | <kuribas> | merijn: yeah, especially many of the little syntax improvement extensions. |
| 13:59:08 | × | ADG1089__ quits (~aditya@122.163.165.143) (Remote host closed the connection) |
| 13:59:16 | <kuribas> | merijn: they take 10 seconds to understand. |
| 13:59:17 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 258 seconds) |
| 14:00:51 | <kuribas> | merijn: and it still doesn't come close to the synactic complexity of C++ |
| 14:01:09 | <cmcma20> | kuribas: Understanding haskell extensions is not always composable though. When you have 20 extensions in your project, you know that understanding it won't take 200 extr seconds. |
| 14:01:10 | <merijn> | kuribas: Because that's impossible :p |
| 14:01:21 | → | hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
| 14:01:55 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds) |
| 14:01:56 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 14:03:18 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 14:04:20 | <kuribas> | cmcma20: point them to here: http://dev.stephendiehl.com/hask/#language-extensions |
| 14:04:45 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 14:04:59 | <kuribas> | cmcma20: I just have a hard time to believe that a project will fail because of enabling one of these. |
| 14:05:31 | <kuribas> | rather than using them when there is no need or improvement. |
| 14:06:24 | <kuribas> | I still wonder what this guy means with "FP winter" |
| 14:06:42 | <kuribas> | https://twitter.com/smdiehl/status/1348349511706554368 |
| 14:07:05 | <cmcma20> | it's a reference to AI winter, i.e. end of the hype cycle |
| 14:07:12 | <merijn> | He already wrote a huge thread about that |
| 14:07:17 | <merijn> | but yeah, AI Winter reference |
| 14:07:39 | → | ClaudiusMaximus joins (~claude@196.67.6.51.dyn.plus.net) |
| 14:07:44 | × | ClaudiusMaximus quits (~claude@196.67.6.51.dyn.plus.net) (Changing host) |
| 14:07:44 | → | ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus) |
| 14:07:56 | → | ystael joins (~ystael@209.6.50.55) |
| 14:08:09 | <cmcma20> | winters are beneficial in any area because the unfits perish |
| 14:09:06 | <cmcma20> | I still hope for a generl programming winter |
| 14:09:17 | × | hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Quit: Curry, you fools!) |
| 14:09:56 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 14:10:02 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:831f:8b96:1f06:89e1) (Ping timeout: 260 seconds) |
| 14:12:23 | <kuribas> | right. In that case I hope for FP winter as well :) |
| 14:12:46 | × | mastarija quits (~mastarija@188.252.197.30) (Quit: Leaving) |
| 14:13:46 | <cmcma20> | wasn't there a suggestion to make a metaextension that enables a bunch of them? |
| 14:14:14 | <cmcma20> | so you can just -XFancyHaskell -XWizardHaskell and be fine |
| 14:14:47 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 14:15:28 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) |
| 14:15:50 | × | knupfer quits (~Thunderbi@200116b82c27b70061a216d5084abddd.dip.versatel-1u1.de) (Ping timeout: 244 seconds) |
| 14:18:58 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 14:19:20 | <ski> | would people agree on which extensions to put into those ? |
| 14:19:21 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 14:20:38 | <cmcma20> | ski: most probably, Haskell's no tower of Babel |
| 14:21:24 | → | m0rphism joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 14:21:25 | × | LKoen quits (~LKoen@152.172.9.109.rev.sfr.net) (Remote host closed the connection) |
| 14:21:41 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Ping timeout: 265 seconds) |
| 14:22:20 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:7525:3d36:8cf7:15dd) |
| 14:23:28 | × | zariuq quits (~zar@fw1.ciirc.cvut.cz) (Remote host closed the connection) |
| 14:23:39 | → | zariuq joins (~zar@fw1.ciirc.cvut.cz) |
| 14:24:04 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 260 seconds) |
| 14:24:06 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 14:26:07 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 14:28:35 | → | RedNifre joins (~michael@dslb-002-203-247-083.002.203.pools.vodafone-ip.de) |
| 14:29:13 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 14:30:03 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.7.5 - https://znc.in) |
| 14:30:12 | <RedNifre> | Heya. What's the Haskell way of doing some sort of stream that emits values, like Rx reactive coroutine flow channel stuff? |
| 14:30:26 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 14:32:03 | <dminuoso> | RedNifre: Depends on the exact usage case. |
| 14:32:09 | <dminuoso> | We have a plethora of libraries in that domain |
| 14:32:19 | × | berberman quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
| 14:32:30 | → | ArsenArsen joins (~Arsen@fsf/member/ArsenArsen) |
| 14:32:49 | × | alx741 quits (~alx741@186.178.110.185) (Quit: alx741) |
| 14:32:55 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 14:33:44 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 14:33:46 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 246 seconds) |
| 14:34:15 | lep-delete | is now known as Guest18945 |
| 14:34:31 | → | alx741 joins (~alx741@186.178.110.185) |
| 14:35:28 | × | zariuq quits (~zar@fw1.ciirc.cvut.cz) (Read error: Connection reset by peer) |
| 14:35:37 | → | piezoid joins (~piezoid@82-64-150-32.subs.proxad.net) |
| 14:35:40 | → | zariuq joins (~zar@fw1.ciirc.cvut.cz) |
| 14:36:00 | Guest18945 | is now known as lep-delete |
| 14:37:04 | <kuribas> | RedNifre: conduit, streamly, pipes, etc... |
| 14:37:08 | × | berberman quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
| 14:37:44 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0) |
| 14:37:56 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 14:38:49 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 14:39:01 | × | darjeeling_ quits (~darjeelin@115.215.40.96) (Ping timeout: 246 seconds) |
| 14:39:13 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 264 seconds) |
| 14:39:56 | × | berberman quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
| 14:40:48 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 14:41:26 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 14:43:27 | × | berberman quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
| 14:44:44 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 14:44:55 | × | zariuq quits (~zar@fw1.ciirc.cvut.cz) (Read error: Connection reset by peer) |
| 14:45:09 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 14:45:26 | × | geekosaur quits (ac3a547a@172.58.84.122) (Quit: Connection closed) |
| 14:45:39 | → | LKoen joins (~LKoen@152.172.9.109.rev.sfr.net) |
| 14:45:49 | → | zariuq joins (~zar@fw1.ciirc.cvut.cz) |
| 14:46:24 | × | berberman quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
| 14:46:55 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 14:47:51 | × | niko quits (~niko@freenode/staff/ubuntu.member.niko) (Ping timeout: 633 seconds) |
| 14:51:55 | → | darjeeling_ joins (~darjeelin@122.245.120.137) |
| 14:52:23 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 240 seconds) |
| 14:52:33 | sigmacool[m] | sent a long message: < https://matrix.org/_matrix/media/r0/download/matrix.org/kHwSqgEQYYLfxSLBNjoCeBDt/message.txt > |
| 14:52:40 | × | is_null quits (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 246 seconds) |
| 14:53:26 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:21b8:123b:aba8:7844) (Ping timeout: 264 seconds) |
| 14:53:52 | → | Vulfe joins (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) |
| 14:54:30 | <ski> | would seem to do the same as the previous code |
| 14:54:37 | <cmcma20> | RedNifre: what is your usecase? |
| 14:54:46 | <ski> | (there is no need to name `nv' in `limit') |
| 14:55:05 | <ski> | cmcma20 : translate <https://matrix.org/_matrix/media/r0/download/matrix.org/jyqritNMDynBOZYnoQTHennU/message.txt> to Haskell |
| 14:55:52 | <ski> | oh actually, sorry. i didn't notice you were responding to another message/person |
| 14:56:38 | <ski> | sigmacool[m] : if you declare `r' as a function local to `limit' (e.g. using `where'), then you don't need to pass around the `f' parameter to `r' |
| 14:57:28 | <sigmacool[m]> | I thought about it but I didnt know where |
| 14:57:45 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Quit: ZNC 1.8.2 - https://znc.in) |
| 14:57:50 | <ski> | (i'd probably define `c' in the `where' as well) |
| 14:58:02 | → | matryoshka joins (~matryoshk@184.75.223.227) |
| 14:58:07 | <sigmacool[m]> | how would that look |
| 14:58:14 | <RedNifre> | cmcma20: well, my usecase just evaporated in the last meeting, but it was this: Imagine you have a GUI that has an Editor that is fixed to a month. You now want to switch the month in the GUI, which requires a new Editor, which must be created asynchronously. The GUI also has a "do something with the Editor of this month" button. If you update the GUI instantly, the button must not be able to get the old |
| 14:58:15 | <ski> | oh, also .. |
| 14:58:16 | <RedNifre> | editor, if the new one hasn't arrived yet, it would have to wait. |
| 14:58:17 | × | poljar1 quits (~poljar@93-139-24-194.adsl.net.t-com.hr) (Remote host closed the connection) |
| 14:58:22 | <ski> | .. don't use `do' like that |
| 14:58:42 | <dminuoso> | Mmm, wow the OOM killer just rampaged through my system... |
| 14:58:43 | <sigmacool[m]> | I'm using do just to use multiline I think? |
| 14:58:47 | <dminuoso> | And I think HLS was the cause... |
| 14:58:48 | → | poljar1 joins (~poljar@93-139-24-194.adsl.net.t-com.hr) |
| 14:58:55 | <RedNifre> | I was looking into solutions in Kotlin, but I thought it might help me understanding it in Haskell first, because it's a much clearer language to me. |
| 14:58:56 | <dminuoso> | interestingly, it took down my X server.. |
| 14:59:41 | → | dyeplexer joins (~lol@unaffiliated/terpin) |
| 14:59:58 | <ski> | sigmacool[m] : you're not actually using any monad here, so it's arguably confusing to use `do' |
| 15:00:23 | <sigmacool[m]> | without do It complains when I split it into multiple lines |
| 15:00:39 | <ski> | just add `in', after the `let' binding |
| 15:00:46 | <ski> | (or use `where') |
| 15:02:03 | <RedNifre> | So I guess the way to do it with pipes/conduits would be that when you update the Editor, you push a Nothing into the conduit/pipe and asynchronously create the new Editor, then push it as a Just editor into the pipe/conduit and the consuming code would... start listening to the pipe... and wait for the first Just to get the Editor? Or what? |
| 15:02:09 | <ski> | limit f l d = r c Nothing |
| 15:02:12 | <ski> | where |
| 15:02:21 | <ski> | c = ..d..l.. |
| 15:02:32 | <ski> | r c nv f |
| 15:02:35 | <sigmacool[m]> | ah that looks nice |
| 15:02:42 | <ski> | | Just x == nv = x |
| 15:03:02 | <ski> | | otherwise = r (c / 10) (Just x) |
| 15:03:09 | <ski> | where |
| 15:03:16 | <ski> | x = f c |
| 15:03:39 | <ski> | (er, should be `r c nv', not `r c nv f') |
| 15:04:24 | <ski> | (i might also rename the first `c' to `c0', to make it clearer that it's the initial value for the later `c') |
| 15:05:03 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 15:05:09 | <ski> | (an alternative could be to fold/inline it ..) |
| 15:05:24 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 15:05:29 | × | phasespace quits (~sar@80-89-47-117.inet.signal.no) (Ping timeout: 260 seconds) |
| 15:05:31 | <sigmacool[m]> | the problem is that the initial assignment of c should be outside of the recursion |
| 15:06:05 | <ski> | it's a binding, not an assignment. and it already is outside of the recursion |
| 15:06:24 | <ski> | (also, you reproduced the bug in the Haskell version) |
| 15:06:30 | <merijn> | ski: You shadowed 'c'? |
| 15:06:39 | <ski> | yes |
| 15:06:54 | <ski> | (hence why i suggested a rename to `c0') |
| 15:07:42 | <ski> | (there already were two distinct `c' in the original source. me making the definition of `r' local to `limit' introduced the shadowing) |
| 15:09:07 | × | darjeeling_ quits (~darjeelin@122.245.120.137) (Ping timeout: 246 seconds) |
| 15:10:00 | <sigmacool[m]> | thanks @ski that looks better! |
| 15:10:27 | <ski> | fwiw, `Just x == nv' could be replaced by `all (x ==) nv' or `maybe False (x ==) nv' .. not sure whether you think any of those are clearer |
| 15:10:47 | × | sakirious quits (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Quit: The Lounge - https://thelounge.chat) |
| 15:10:57 | <ski> | (er, actually, that would be `any', not `all' ..) |
| 15:11:04 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 15:11:19 | <sigmacool[m]> | nope I can't parse those xD |
| 15:11:43 | <ski> | > all (> 3) [5,7] |
| 15:11:45 | <lambdabot> | True |
| 15:11:48 | <ski> | > all (> 3) [5,2,7] |
| 15:11:50 | <lambdabot> | False |
| 15:11:51 | <ski> | > all (> 3) [] |
| 15:11:54 | <lambdabot> | True |
| 15:11:58 | → | sakirious joins (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
| 15:12:02 | <ski> | > all (> 3) (Just 5) |
| 15:12:05 | <lambdabot> | True |
| 15:12:07 | <ski> | > all (> 3) Nothing |
| 15:12:10 | <lambdabot> | True |
| 15:12:15 | <ski> | > any (> 3) (Just 5) |
| 15:12:17 | <lambdabot> | True |
| 15:12:18 | <ski> | > any (> 3) Nothing |
| 15:12:20 | <lambdabot> | False |
| 15:12:39 | <sigmacool[m]> | ah so you can iterate over Maybe |
| 15:12:44 | <sigmacool[m]> | same with option in rust |
| 15:12:55 | <sigmacool[m]> | it always seems weird but its useful |
| 15:13:20 | <ski> | `all' checks that all elements of a collection satisfy a predicate. `any' checks that there exists at least one element that does. a `Maybe T' can be thought of as a collection that contains at most one `T' |
| 15:14:34 | <ski> | it's occasionally useful to use e.g. `for_ mx print', which is `print x', if `mx = Just x', and which does nothing in case `mx = Nothing' |
| 15:14:59 | × | pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 15:15:06 | × | Vulfe quits (~vulfe@75-28-176-196.lightspeed.evtnil.sbcglobal.net) (Remote host closed the connection) |
| 15:15:22 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35) |
| 15:15:36 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 15:15:47 | <sigmacool[m]> | whats this trick maybe False (x ==) |
| 15:15:54 | <sigmacool[m]> | I replaced with True and it still works |
| 15:16:00 | <ski> | `for_' in this case would have type `Maybe T -> (T -> IO ()) -> IO ()', where `T' is the type of `x' (so `mx' has type `Maybe T') |
| 15:16:35 | <ski> | `maybe' is just a quick way to do something with `x', in case you get `Just x', and to specify a default result, in case you get `Nothing' |
| 15:17:19 | <ski> | so `maybe False (x ==) nv' says to answer `False' if `nv = Nothing', and to check `x == v', in case `nv = Just v' |
| 15:18:08 | <ski> | in your code you had `Just x == nv' .. in case `nv = Nothing', that check will be `False', which was why i used `False' with `maybe' above |
| 15:18:33 | <sigmacool[m]> | I see thanks |
| 15:18:38 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds) |
| 15:19:29 | <ski> | (so, replacing it with `True' in place of `False' will mean that your recursion will terminate immediately, since the initial value of `nv' is `Nothing' ..) |
| 15:19:32 | → | dfreedm joins (~dfreedm@137.63.71.51) |
| 15:19:48 | <cmcma20> | RedNifre: Doesn't look like a something to discuss without delving into details. Have you modeled your system? Like not in Haskell but any other language etc? |
| 15:20:25 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 15:21:56 | → | is_null joins (~jpic@pdpc/supporter/professional/is-null) |
| 15:22:48 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 15:23:08 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 15:23:16 | → | phasespace joins (~sar@89-162-33-21.fiber.signal.no) |
| 15:23:21 | → | fendor_ joins (~fendor@178.115.130.17.wireless.dyn.drei.com) |
| 15:23:56 | → | Jd007 joins (~Jd007@d154-5-83-24.bchsia.telus.net) |
| 15:25:47 | × | fendor quits (~fendor@77.119.128.187.wireless.dyn.drei.com) (Ping timeout: 256 seconds) |
| 15:26:08 | → | darjeeling_ joins (~darjeelin@122.245.120.137) |
| 15:29:55 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 15:31:45 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 15:32:20 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 15:35:55 | <RedNifre> | cmcma20: not yet, I'm still in the figuring it out phase. |
| 15:36:00 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 15:43:15 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0) |
| 15:43:25 | × | jespada quits (~jespada@90.254.245.49) (Ping timeout: 264 seconds) |
| 15:45:17 | → | jespada joins (~jespada@90.254.245.49) |
| 15:45:21 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 15:46:13 | <cmcma20> | Considering what you have said, I'd say reflex can be useful but it's not a developer friendly library. |
| 15:46:30 | → | faustind joins (0e0843e1@M014008067225.v4.enabler.ne.jp) |
| 15:48:53 | <xerox_> | ski: what's the rationale behind all working differently on [] and Nothing |
| 15:50:44 | → | nineonine joins (~nineonine@S01061cabc0b095f3.vf.shawcable.net) |
| 15:50:56 | <merijn> | xerox_: It doesn't? |
| 15:51:01 | <merijn> | :t all |
| 15:51:03 | <lambdabot> | Foldable t => (a -> Bool) -> t a -> Bool |
| 15:51:07 | <merijn> | > all even Nothing |
| 15:51:09 | <lambdabot> | True |
| 15:51:13 | <merijn> | > all even [] |
| 15:51:15 | <lambdabot> | True |
| 15:52:06 | <xerox_> | oh I misread, that one was "any", scratch that :D |
| 15:53:12 | → | justsomeguy joins (~Srain@unaffiliated/--/x-3805311) |
| 15:55:05 | × | conal quits (~conal@107.181.166.211) (Ping timeout: 240 seconds) |
| 15:58:25 | → | conal joins (~conal@107.181.166.211) |
| 16:02:42 | → | danso joins (~dan@23-233-104-25.cpe.pppoe.ca) |
| 16:04:35 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) |
| 16:06:13 | × | dfreedm quits (~dfreedm@137.63.71.51) (Ping timeout: 264 seconds) |
| 16:07:51 | → | Guest_96 joins (5bbbc13b@91.187.193.59) |
| 16:08:04 | × | Guest_96 quits (5bbbc13b@91.187.193.59) (Client Quit) |
| 16:09:04 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Ping timeout: 240 seconds) |
| 16:10:40 | <dminuoso> | RedNifre: So for something like an editor, it's quite possible that, if you want to explore the functional paradigms, something like reflex might be better suited |
| 16:10:44 | → | ubert joins (~Thunderbi@p200300ecdf1ee08ce6b318fffe838f33.dip0.t-ipconnect.de) |
| 16:11:01 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 264 seconds) |
| 16:11:06 | <dminuoso> | But that's quite a deep rabbit hole.. |
| 16:11:51 | <dminuoso> | Libraries like conduit/pipes are not for building interactive systems, they are just streaming solutions (like working on a list, but with constant space and arbitrary effects interleaved) |
| 16:13:06 | <dminuoso> | But for an interactive system like you described, FRP is how we'd describe it - and reflex is one of the more prominent libraries for that. |
| 16:16:03 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 260 seconds) |
| 16:16:42 | → | FrontSevens joins (~FrontSeve@185.204.1.185) |
| 16:21:10 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 16:21:10 | × | carlomagno quits (~cararell@148.87.23.13) (Remote host closed the connection) |
| 16:21:19 | × | p8m quits (p8m@gateway/vpn/protonvpn/p8m) (Ping timeout: 260 seconds) |
| 16:21:41 | → | carlomagno joins (~cararell@148.87.23.6) |
| 16:23:00 | × | jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 272 seconds) |
| 16:23:01 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:23:10 | → | vappend joins (~ezrakilty@75-172-99-84.tukw.qwest.net) |
| 16:25:12 | <RedNifre> | Thanks for the info. I'll postpone it for now, the current solution in the project is one big fat state thing that gets filled with all the stuff you need (e.g. the Editor) and only when it's complete it gets send to the GUI to trigger an update. This means that the GUI is slow (because when you click something it has to wait for the big fat state thing to arrive before updating), but oh well. |
| 16:25:18 | × | Natch quits (~natch@85.226.113.180) (Remote host closed the connection) |
| 16:26:28 | × | is_null quits (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 246 seconds) |
| 16:27:24 | × | ubert quits (~Thunderbi@p200300ecdf1ee08ce6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 240 seconds) |
| 16:27:54 | → | ubert joins (~Thunderbi@p200300ecdf1ee031e6b318fffe838f33.dip0.t-ipconnect.de) |
| 16:28:08 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 16:28:37 | × | tv quits (~tv@unaffiliated/tv) (Ping timeout: 260 seconds) |
| 16:31:43 | × | Gurkenglas_ quits (~Gurkengla@unaffiliated/gurkenglas) (Ping timeout: 246 seconds) |
| 16:31:52 | <dminuoso> | RedNifre: Yeah, this is sort of what reflex is good for. |
| 16:32:20 | <dminuoso> | It let's you avoid gigantic single state you need to feed to everything in a sensible way |
| 16:32:42 | <dminuoso> | But it's not just something you can "add-on", you need to write the entire thing around it. |
| 16:37:17 | → | plutoniix joins (~q@node-ulo.pool-125-24.dynamic.totinternet.net) |
| 16:37:25 | × | son0p quits (~son0p@181.136.122.143) (Ping timeout: 264 seconds) |
| 16:37:31 | <cmcma20> | btw I've managed to do my lambdas with singletons |
| 16:37:39 | <cmcma20> | https://github.com/cmcmA20/plzoo-hs/blob/feature/lang_lambda/src/lambda/Syntax.hs |
| 16:37:51 | → | hiroaki joins (~hiroaki@ip4d16b6b9.dynamic.kabel-deutschland.de) |
| 16:38:12 | → | jlamothe joins (~jlamothe@198.251.55.207) |
| 16:39:23 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 260 seconds) |
| 16:40:06 | → | p8m joins (p8m@gateway/vpn/protonvpn/p8m) |
| 16:40:08 | → | Natch joins (~natch@c-b471e255.014-297-73746f25.bbcust.telenor.se) |
| 16:40:09 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) |
| 16:40:47 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 16:41:01 | → | mmmattyx joins (uid17782@gateway/web/irccloud.com/x-lkskfelenbjwxgkl) |
| 16:41:05 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 16:41:09 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 16:42:34 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 16:46:14 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds) |
| 16:47:13 | × | acidjnk_new quits (~acidjnk@p200300d0c704e7426836b2ca9660f737.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 16:48:31 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 16:49:34 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 16:50:50 | × | olligobber1 quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 256 seconds) |
| 16:51:38 | × | ubert quits (~Thunderbi@p200300ecdf1ee031e6b318fffe838f33.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 16:53:00 | → | ADG1089__ joins (~aditya@122.163.165.143) |
| 16:53:22 | → | geekosaur joins (42d52137@66.213.33.55) |
| 16:53:31 | <ski> | cmcma20 : `Show' instance is incorrect. did you try `deriving Show (Fin n)' ? |
| 16:53:41 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@mx-ll-171.5.28-247.dynamic.3bb.co.th) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:53:57 | → | Rudd0^ joins (~Rudd0@185.189.115.108) |
| 16:54:10 | <cmcma20> | ski: why do you think it's incorrect? |
| 16:54:27 | <dminuoso> | It's only morally incorrect. |
| 16:54:47 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:255c:8c1d:42fb:24ab:a8e9) |
| 16:54:48 | <ski> | show (FS (FS FZ)) = "FS FS FZ" |
| 16:54:53 | <cmcma20> | do you think unary numbers need parentheses? |
| 16:55:04 | × | abhixec_ quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
| 16:55:10 | <ski> | they do, in Haskell |
| 16:55:33 | <ski> | `Show' is intended to produce a valid `String' representation of a Haskell expression |
| 16:55:42 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 16:55:47 | <dminuoso> | To be fair, that characterization is an interpretation. |
| 16:55:56 | <dminuoso> | The Haskell report only demands this of deriving generated instances |
| 16:56:04 | × | landonf quits (landonf@mac68k.info) (Quit: ZNC - http://znc.sourceforge.net) |
| 16:56:07 | <dminuoso> | It does not hint that manually written instances should adhere to this |
| 16:56:28 | <dminuoso> | The fact that half of hackage breaks this anyway, means the battle is already lost |
| 16:56:30 | <ski> | true, but i think it's pretty reasonable to expect to not get nonsensical instances automatically generated for you (which *will* happen if you allow this) |
| 16:56:52 | <cmcma20> | ski: this instance's result is actually isomorphic to the _truly_ correct one so I don't bother |
| 16:57:19 | <dminuoso> | cmcma20: isomorphic in what sense? `FS FS FZ` is not well typed. |
| 16:57:52 | <dolio> | show (Just (FS (FS FZ))) = "Just FS FS FZ" no? |
| 16:58:02 | <ski> | yes |
| 16:58:28 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 272 seconds) |
| 16:59:00 | <cmcma20> | I guess there is a unique function that can be composed with this particular instance show function to produce correct results |
| 16:59:18 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-kaqotuxjmriehlgf) |
| 16:59:20 | <cmcma20> | And this function is invertible |
| 16:59:31 | <cmcma20> | So it's not an interesting exercise |
| 16:59:31 | <ski> | it's only rarely that making a `Show' instance by defining `show' is correct. usually you want to define `showsPrec' |
| 16:59:39 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:255c:8c1d:42fb:24ab:a8e9) (Ping timeout: 246 seconds) |
| 16:59:57 | → | ep1ctetus joins (~marcus_au@ip184-187-162-163.sb.sd.cox.net) |
| 17:00:40 | <cmcma20> | Anyway thanks for pointing out the deficiency in this instance |
| 17:01:09 | <ski> | what is the intended meaning of `substOut' ? |
| 17:01:14 | <c_wraith> | fun fact about defining your own showsPrec - Prelude has a bunch of helper functions for exactly that. |
| 17:01:26 | × | justsomeguy quits (~Srain@unaffiliated/--/x-3805311) (Remote host closed the connection) |
| 17:01:41 | <ski> | (`showParen',`showChar',`showString',`shows',..) |
| 17:02:06 | × | danso quits (~dan@23-233-104-25.cpe.pppoe.ca) (Quit: WeeChat 3.0) |
| 17:02:12 | <cmcma20> | ski: it's a useful primitive for different reduction strategies |
| 17:06:04 | <cmcma20> | I like locally nameless because alpha-equivalence and de Brujin shifts are an absolute artificil bullshit |
| 17:06:31 | <cmcma20> | this way equality is syntactical |
| 17:07:20 | <cmcma20> | hmm, structural's a better word, sorry |
| 17:08:13 | → | landonf joins (landonf@mac68k.info) |
| 17:08:41 | → | hexo joins (~hexo@gateway/tor-sasl/hexo) |
| 17:08:46 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 17:08:58 | → | Gurkenglas_ joins (~Gurkengla@unaffiliated/gurkenglas) |
| 17:09:15 | → | denisse_ joins (~spaceCat@gateway/tor-sasl/alephzer0) |
| 17:10:46 | × | mbomba quits (~mbomba@bras-base-toroon2719w-grc-53-142-114-5-26.dsl.bell.ca) (Quit: WeeChat 3.0) |
| 17:12:02 | <ski> | so `substOut rep t' substitutes `rep' for all the `TBound idx's with the highest `idx's (relative to the current level) ? |
| 17:12:17 | → | halbGefressen joins (~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b) |
| 17:12:23 | × | nineonine quits (~nineonine@S01061cabc0b095f3.vf.shawcable.net) (Remote host closed the connection) |
| 17:12:28 | → | ransom joins (~c4264035@138.67.97.198) |
| 17:12:32 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 244 seconds) |
| 17:13:01 | → | hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 17:13:06 | → | nineonine joins (~nineonine@50.216.62.2) |
| 17:13:47 | → | gxt joins (~gxt@gateway/tor-sasl/gxt) |
| 17:14:31 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 17:15:02 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 17:16:58 | × | Kaiepi quits (~Kaiepi@47.54.252.148) (Remote host closed the connection) |
| 17:17:36 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 17:17:43 | <cmcma20> | ski: with the lowest |
| 17:18:58 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 246 seconds) |
| 17:19:14 | <cmcma20> | Consider all the terms of type Term 0. They are actually closed so you can never substitute into them. |
| 17:20:24 | <cmcma20> | But every lambda bumps a level for it's body. |
| 17:20:57 | × | niekvand_ quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 17:21:31 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 17:21:37 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 17:21:51 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 17:21:57 | <ski> | it looks to me like `decOut' will transform say `FZ',`FS FZ',`FS (FS FZ)' of type Fin ('S ('S ('S 'Z))) to, respectively, `Just FZ',`Just (FS FZ)',`Nothing' of type Maybe (Fin ('S ('S 'Z))) |
| 17:22:23 | × | vappend quits (~ezrakilty@75-172-99-84.tukw.qwest.net) (Remote host closed the connection) |
| 17:22:47 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 17:22:51 | → | christo joins (~chris@81.96.113.213) |
| 17:23:07 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 17:24:10 | <cmcma20> | btw "closed" is again a wrong word here, hmm |
| 17:24:49 | → | knupfer joins (~Thunderbi@200116b82c27b700501e28fffefae5b3.dip.versatel-1u1.de) |
| 17:25:48 | × | knupfer quits (~Thunderbi@200116b82c27b700501e28fffefae5b3.dip.versatel-1u1.de) (Remote host closed the connection) |
| 17:25:57 | <cmcma20> | ski: Yes, you're right. Basically it gives Nothing if your index is last in your Fin. |
| 17:26:00 | → | knupfer joins (~Thunderbi@200116b82c27b7006458ac017ad1180f.dip.versatel-1u1.de) |
| 17:26:05 | <ski> | so, highest |
| 17:27:07 | <cmcma20> | OK, it's highest. I have a hard time distinguishing dual things, sorry. |
| 17:27:17 | <ski> | so, in `TApp (TBound FZ) (TLam (TBound (FS FZ)))' of type Term ('S 'Z) both `TBound (..)'s will be substituted for |
| 17:27:43 | <ski> | (despite having differing indices .. not sure whether this was by design or not) |
| 17:28:56 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35) (Remote host closed the connection) |
| 17:29:04 | <cmcma20> | Term ('S 'Z) means that this expression is under one lambda. So both will be substituted as they both point to the same lambda. |
| 17:29:19 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 17:29:34 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35) |
| 17:30:00 | × | Vulfe quits (~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35) (Remote host closed the connection) |
| 17:30:06 | → | Vulfe joins (~vulfe@2600:1702:31b0:34e0:1875:e83f:3e95:4d35) |
| 17:30:10 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Ping timeout: 246 seconds) |
| 17:30:23 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:30:24 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection) |
| 17:30:41 | <cmcma20> | It's much better if you draw them. Term n is a box with n input wires. |
| 17:31:25 | × | Franciman quits (~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving) |
| 17:33:10 | <ski> | i was thinking that you wanted instances of the same bound variable to be represented in the same way (structurally equal, as you said). if so, then `substOut' will (e.g. in the above case) substitute for multiple different variables |
| 17:33:27 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) |
| 17:34:51 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 17:35:32 | × | Wuzzy quits (~Wuzzy@p5790e691.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 17:36:14 | × | geekosaur quits (42d52137@66.213.33.55) (Quit: Connection closed) |
| 17:37:11 | → | geekosaur joins (42d52137@66.213.33.55) |
| 17:37:15 | × | locrian9 quits (~mike@99-153-255-194.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 256 seconds) |
| 17:37:15 | × | DavidEichmann quits (~david@98.27.93.209.dyn.plus.net) (Ping timeout: 256 seconds) |
| 17:37:48 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 17:41:12 | <ukari> | I need to add a " $( return [] )" manully to prevent template haskell error like‘Foo’ is not in the type environment at a reify in code `foz=$(foo ''Foo)` with foo::Name -> Q Exp |
| 17:42:57 | × | geekosaur quits (42d52137@66.213.33.55) (Ping timeout: 248 seconds) |
| 17:43:12 | <ukari> | but when I import package Lens and write `makeLenses ''Bar` in the same file of `foo` and `Foo`, the "not in the type environment " error auto disappear and there is no need to add `$( return [] )` any more |
| 17:43:32 | <ukari> | why? |
| 17:44:03 | <glguy> | ukari: because one is a declaration splice and the other is an expression splice |
| 17:44:11 | <merijn> | ukari: oooh, did you put "makeLenses" somewhere in the middle? |
| 17:44:24 | <glguy> | also you can shorten $(return []) to pure [] |
| 17:44:28 | → | tito_04 joins (~taurux@net-109-115-33-214.cust.vodafonedsl.it) |
| 17:44:42 | <glguy> | you don't need $() for declaration splices |
| 17:44:56 | <ukari> | and how could lens `makeLenses::Name -> DecsQ` a pure function do something like a $() |
| 17:44:58 | <merijn> | anymore :p |
| 17:45:04 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 17:45:16 | <glguy> | all functions are pure |
| 17:45:27 | <merijn> | ukari: You don't need $() at the top level anymore as glguy says |
| 17:45:58 | × | taurux quits (~taurux@net-109-115-33-214.cust.vodafonedsl.it) (Ping timeout: 272 seconds) |
| 17:46:48 | → | Kaiepi joins (~Kaiepi@47.54.252.148) |
| 17:47:20 | → | tv joins (~tv@unaffiliated/tv) |
| 17:47:31 | → | howdoi joins (uid224@gateway/web/irccloud.com/x-hhcvifznrcarwudg) |
| 17:47:32 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 17:47:43 | <dminuoso> | Some consider it good style to always use $() for splices though. |
| 17:47:45 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 17:47:54 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 17:48:30 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 17:48:40 | <ukari> | I try pure [] and it works as well as $( return [] ) |
| 17:48:54 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 17:49:38 | <ukari> | but how could do things like `makeLenses`? It seems don't need add a `pure []` |
| 17:50:00 | × | nitrix quits (~nitrix@haskell/developer/nitrix) (Remote host closed the connection) |
| 17:50:01 | × | rajivr quits (uid269651@gateway/web/irccloud.com/x-gnedumgsvnojinhm) (Quit: Connection closed for inactivity) |
| 17:50:06 | <glguy> | ukari: a top level makeLenses is a *declaration splice*. these behave differently from *expression splices* |
| 17:50:12 | <glguy> | this why you're seeing different behaviors |
| 17:50:57 | <glguy> | A declaration splice can only see declarations above it, and it generates declarations that will be in scope below it |
| 17:52:04 | → | DavidEichmann joins (~david@82-132-217-213.dab.02.net) |
| 17:53:49 | <dminuoso> | Side-note, this only applies to TH declaration splices, not to QQ declaration splices. |
| 17:54:15 | → | david__ joins (~david@234.109.45.217.dyn.plus.net) |
| 17:54:19 | <dminuoso> | I think? |
| 17:54:20 | → | nitrix joins (~nitrix@haskell/developer/nitrix) |
| 17:54:28 | <dminuoso> | My head spins when I read the manual; |
| 17:54:32 | <cmcma20> | ski: nah I meant that for example identity combinator is uniquely represented by (λ.0) or (TLam (TBound FZ) :: Term 'Z) here |
| 17:55:08 | <ski> | oic |
| 17:55:22 | × | usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 17:55:34 | <ski> | (also for `forall n. Term n' ?) |
| 17:55:55 | × | DavidEichmann quits (~david@82-132-217-213.dab.02.net) (Read error: Connection reset by peer) |
| 17:56:23 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 17:57:46 | → | pera joins (pera@gateway/vpn/mullvad/pera) |
| 17:57:48 | <Feuermagier> | how do i deconstruct a data x = String String String in a Lambda? |
| 17:58:55 | <cmcma20> | ski: I don't think so. Term n potentially has access to n inputs. |
| 17:58:58 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection) |
| 17:59:13 | <cmcma20> | Feuermagier: data X = MkX String String String |
| 17:59:17 | <ukari> | thank you, glguy, it helps a lot. both of `pure []` and `makeLenses` has a signature with Q [Dec], and write in top level could omit $(...), and they will be treated as declaration splice |
| 17:59:27 | <cmcma20> | Feuermagier: \(MkX a b c) -> _ |
| 17:59:53 | <Feuermagier> | thx! |
| 18:00:47 | × | ransom quits (~c4264035@138.67.97.198) (Quit: Textual IRC Client: www.textualapp.com) |
| 18:01:14 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 18:01:37 | <ski> | cmcma20 : so you can't uniquely identify weakened identity combinators, inside lambdas ? |
| 18:02:44 | <cmcma20> | ski: you can but user will be spared of dealing with anything besides Term 'Z |
| 18:03:22 | <ski> | ok |
| 18:03:36 | <cmcma20> | ski: This type family just encodes correct lambda scoping so you can never construct a bound variable pointing into nothingness. |
| 18:04:15 | → | locrian9 joins (~mike@99-153-255-194.lightspeed.irvnca.sbcglobal.net) |
| 18:04:50 | <cmcma20> | ski: The whole point of using singletons was to get not just any encoding of lambda terms inside Haskell, but a _tight_ one. |
| 18:05:16 | ski | nods |
| 18:05:26 | <Feuermagier> | cmcma20, what is Mkx in your example? |
| 18:05:44 | <cmcma20> | Feuermagier: it's a constructor for the type X |
| 18:05:54 | → | geekosaur joins (42d52137@66.213.33.55) |
| 18:07:00 | → | lambda-11235 joins (~lambda-11@2600:1700:7c70:4600:4908:2cb1:4b68:c89e) |
| 18:08:15 | <cmcma20> | Feuermagier: MkX :: String -> String -> String -> X |
| 18:09:25 | <Feuermagier> | thx. i got it now :) |
| 18:09:56 | <Feuermagier> | I forgot that the last one is the return type and not a variable |
| 18:10:09 | <Feuermagier> | mixed up number of arguments |
| 18:10:45 | × | tv quits (~tv@unaffiliated/tv) (Ping timeout: 256 seconds) |
| 18:12:26 | → | jonathanx joins (~jonathan@h-176-109.A357.priv.bahnhof.se) |
| 18:13:59 | → | rmk236 joins (~lcampos@2a02:908:3616:b100:99fa:b935:779b:e172) |
| 18:14:17 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 18:17:42 | × | reyu quits (~reyu@znc.reyuzenfold.com) (Quit: Fox Out!) |
| 18:21:49 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds) |
| 18:22:45 | → | debclair joins (~debclair@host-181-39-120-169.netlife.ec) |
| 18:22:46 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 18:23:08 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 18:23:34 | → | dandels joins (~dandels@unaffiliated/dandels) |
| 18:23:42 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 18:26:07 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 260 seconds) |
| 18:27:11 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 18:27:28 | → | alexcleac joins (~alex@213.111.86.105) |
| 18:27:52 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Client Quit) |
| 18:28:21 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 18:28:25 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 264 seconds) |
| 18:29:27 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
| 18:34:25 | × | dandels quits (~dandels@unaffiliated/dandels) (Ping timeout: 264 seconds) |
| 18:35:19 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection) |
| 18:37:54 | × | faustind quits (0e0843e1@M014008067225.v4.enabler.ne.jp) (Quit: Connection closed) |
| 18:39:58 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) |
| 18:40:00 | × | cmcma20 quits (~cmcma20@l37-192-2-125.novotelecom.ru) (Quit: leaving) |
| 18:40:19 | × | geekosaur quits (42d52137@66.213.33.55) (Quit: Connection closed) |
| 18:40:42 | → | is_null joins (~jpic@pdpc/supporter/professional/is-null) |
| 18:41:35 | → | geekosaur joins (42d52137@66.213.33.55) |
| 18:45:24 | × | knupfer quits (~Thunderbi@200116b82c27b7006458ac017ad1180f.dip.versatel-1u1.de) (Ping timeout: 240 seconds) |
| 18:51:12 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection) |
| 18:55:34 | × | maxsu quits (~maxsu@ip-64-72-99-232.lasvegas.net) (Ping timeout: 246 seconds) |
| 18:55:40 | × | pera quits (pera@gateway/vpn/mullvad/pera) (Ping timeout: 256 seconds) |
| 18:55:57 | × | matryoshka quits (~matryoshk@184.75.223.227) (Read error: Connection reset by peer) |
| 18:56:13 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 18:57:22 | → | pera joins (~pera@unaffiliated/pera) |
| 18:57:53 | × | matryoshka quits (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) (Read error: Connection reset by peer) |
| 18:58:02 | → | matryoshka` joins (~matryoshk@184.75.223.227) |
| 18:58:04 | × | borne quits (~fritjof@200116b86411c700aa0a83b5acfe977f.dip.versatel-1u1.de) (Ping timeout: 240 seconds) |
| 18:58:54 | × | rmk236 quits (~lcampos@2a02:908:3616:b100:99fa:b935:779b:e172) (Quit: Leaving.) |
| 18:59:29 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 19:00:13 | × | debclair quits (~debclair@host-181-39-120-169.netlife.ec) (Ping timeout: 264 seconds) |
| 19:02:37 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds) |
| 19:02:41 | Lord_of_Life_ | is now known as Lord_of_Life |
| 19:02:43 | × | lambda-11235 quits (~lambda-11@2600:1700:7c70:4600:4908:2cb1:4b68:c89e) (Max SendQ exceeded) |
| 19:02:50 | × | jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection) |
| 19:03:12 | → | lambda-11235 joins (~lambda-11@2600:1700:7c70:4600:4908:2cb1:4b68:c89e) |
| 19:03:30 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 19:04:31 | × | ggole quits (~ggole@2001:8003:8119:7200:541f:f655:3fda:a8bb) (Quit: Leaving) |
| 19:04:38 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 260 seconds) |
| 19:04:40 | → | jpds joins (~jpds@gateway/tor-sasl/jpds) |
| 19:06:52 | × | chele quits (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 19:07:43 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 240 seconds) |
| 19:08:13 | → | manmachineman joins (~manmachin@93-172-48-98.bb.netvision.net.il) |
| 19:11:53 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 19:12:02 | → | tv joins (~tv@unaffiliated/tv) |
| 19:14:55 | → | Franciman joins (~francesco@host-82-48-174-127.retail.telecomitalia.it) |
| 19:15:15 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 19:15:32 | × | ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
| 19:16:28 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 19:17:47 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-zfmzrhpcnpxmksjd) (Quit: Connection closed for inactivity) |
| 19:18:04 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Quit: dandart) |
| 19:18:10 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 19:18:19 | × | ph88 quits (~ph88@95.90.247.26) (Ping timeout: 246 seconds) |
| 19:18:46 | → | christo joins (~chris@81.96.113.213) |
| 19:19:52 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 256 seconds) |
| 19:21:56 | → | b4er joins (~b4er@193.27.14.141) |
| 19:22:47 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 19:23:07 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 19:23:37 | × | christo quits (~chris@81.96.113.213) (Ping timeout: 264 seconds) |
| 19:25:24 | × | cheater quits (~user@unaffiliated/cheater) (Ping timeout: 272 seconds) |
| 19:27:16 | → | christo joins (~chris@81.96.113.213) |
| 19:29:39 | × | matryoshka` quits (~matryoshk@184.75.223.227) (Quit: ZNC 1.8.2 - https://znc.in) |
| 19:29:58 | → | matryoshka joins (~matryoshk@184.75.223.227) |
| 19:32:31 | → | Wuzzy joins (~Wuzzy@p5790e10f.dip0.t-ipconnect.de) |
| 19:32:57 | ← | manmachineman parts (~manmachin@93-172-48-98.bb.netvision.net.il) () |
| 19:33:03 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 19:33:24 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 19:35:56 | × | kuribas quits (~user@ptr-25vy0iaexs88rik0imq.18120a2.ip6.access.telenet.be) (Remote host closed the connection) |
| 19:36:08 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
| 19:36:37 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 19:38:14 | × | alexcleac quits (~alex@213.111.86.105) (Quit: leaving) |
| 19:38:52 | × | Franciman quits (~francesco@host-82-48-174-127.retail.telecomitalia.it) (Quit: Leaving) |
| 19:38:57 | → | fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net) |
| 19:40:12 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 19:43:51 | → | danso joins (~dan@23-233-104-25.cpe.pppoe.ca) |
| 19:44:33 | × | geekosaur quits (42d52137@66.213.33.55) (Ping timeout: 248 seconds) |
| 19:45:49 | → | mmfood joins (~mmfood@45.91.21.48) |
| 19:46:40 | × | locrian9 quits (~mike@99-153-255-194.lightspeed.irvnca.sbcglobal.net) (Read error: Connection reset by peer) |
| 19:46:40 | × | jonathanx quits (~jonathan@h-176-109.A357.priv.bahnhof.se) (Ping timeout: 246 seconds) |
| 19:47:01 | → | shatriff joins (~vitaliish@176-52-216-242.irishtelecom.com) |
| 19:50:09 | × | nineonine quits (~nineonine@50.216.62.2) (Ping timeout: 260 seconds) |
| 19:50:28 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c:6525:380:35f5:9d2f) |
| 19:51:12 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
| 19:51:17 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 19:51:35 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) |
| 19:51:36 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 19:51:38 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 19:54:02 | × | lambda-11235 quits (~lambda-11@2600:1700:7c70:4600:4908:2cb1:4b68:c89e) (Ping timeout: 264 seconds) |
| 19:54:05 | → | Deide joins (~Deide@217.155.19.23) |
| 19:56:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Ping timeout: 264 seconds) |
| 19:57:04 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds) |
| 19:57:47 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 20:02:08 | × | evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 272 seconds) |
| 20:02:22 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
| 20:03:07 | → | evanjs joins (~evanjs@075-129-098-007.res.spectrum.com) |
| 20:04:06 | <idnar> | @type (maybe retry pure =<<) |
| 20:04:08 | <lambdabot> | error: Variable not in scope: retry :: m b |
| 20:05:36 | <idnar> | @type (maybe Control.Concurrent.STM.retry pure =<<) |
| 20:05:38 | <lambdabot> | GHC.Conc.Sync.STM (Maybe b) -> GHC.Conc.Sync.STM b |
| 20:06:22 | <idnar> | @hoogle STM (Maybe b) -> STM b |
| 20:06:23 | <lambdabot> | Control.Monad.Extra untilJustM :: Monad m => m (Maybe a) -> m a |
| 20:06:23 | <lambdabot> | Extra untilJustM :: Monad m => m (Maybe a) -> m a |
| 20:06:23 | <lambdabot> | Control.Monad.Loops untilJust :: Monad m => m (Maybe a) -> m a |
| 20:06:37 | <idnar> | hmm actually |
| 20:06:55 | <idnar> | @type (maybe empty pure =<<) |
| 20:06:56 | <lambdabot> | (Monad m, Alternative m) => m (Maybe b) -> m b |
| 20:07:36 | <idnar> | @type (maybe mzero pure =<<) |
| 20:07:37 | <lambdabot> | MonadPlus m => m (Maybe b) -> m b |
| 20:07:58 | <idnar> | @hoogle MonadPlus m => m (Maybe b) -> m b |
| 20:07:59 | <lambdabot> | Control.Monad.Extra untilJustM :: Monad m => m (Maybe a) -> m a |
| 20:07:59 | <lambdabot> | Extra untilJustM :: Monad m => m (Maybe a) -> m a |
| 20:07:59 | <lambdabot> | Control.Monad.Loops untilJust :: Monad m => m (Maybe a) -> m a |
| 20:08:00 | × | fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 20:08:14 | <idnar> | bah |
| 20:10:31 | → | acidjnk_new joins (~acidjnk@p200300d0c704e7426836b2ca9660f737.dip0.t-ipconnect.de) |
| 20:10:49 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 20:12:57 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 20:13:18 | <idnar> | is there a nicer way to write that (=<<) section? |
| 20:18:09 | → | geekosaur joins (42d52137@66.213.33.55) |
| 20:18:09 | → | lambda-11235 joins (~lambda-11@108-237-120-58.lightspeed.frokca.sbcglobal.net) |
| 20:22:50 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Read error: Connection reset by peer) |
| 20:23:07 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 20:24:05 | <tomsmeding> | :t (>>= fromMaybe empty) |
| 20:24:07 | <lambdabot> | (Monad m, Alternative m) => m (Maybe (m b)) -> m b |
| 20:24:32 | <tomsmeding> | scratch that |
| 20:25:59 | <tomsmeding> | @hoogle Control.Monad.Extra.liftMaybe |
| 20:25:59 | <lambdabot> | Control.Monad.Extra liftMaybe :: MonadPlus m => Maybe a -> m a |
| 20:26:37 | <tomsmeding> | idnar: (>>= liftMaybe) |
| 20:26:44 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 20:28:06 | × | esph quits (~weechat@unaffiliated/esph) (Ping timeout: 272 seconds) |
| 20:28:30 | → | esph joins (~weechat@unaffiliated/esph) |
| 20:28:35 | <idnar> | tomsmeding: ooh; I might just use that inline |
| 20:28:35 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) |
| 20:29:09 | <tomsmeding> | to all who care to look: do these line numbers line up nicely? https://paste.tomsmeding.com/nzAlJVxG |
| 20:29:42 | <tomsmeding> | they do for me, but I didn't try on weird browsers :p |
| 20:30:28 | <__monty__> | They do for me in firefox. |
| 20:30:56 | <tomsmeding> | because then the paste thing now has line numbers :) |
| 20:31:48 | <idnar> | @type either fail pure -- what about this? |
| 20:31:50 | <lambdabot> | MonadFail m => Either String a -> m a |
| 20:31:58 | × | thc202 quits (~thc202@unaffiliated/thc202) (Quit: thc202) |
| 20:32:25 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 20:32:57 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 20:33:13 | <tomsmeding> | that MonadFail usage is far less likely to have a nice generic function in some common library I think |
| 20:33:46 | <tomsmeding> | I mean, you could write liftEither = either fail pure :p |
| 20:33:47 | <sm[m]> | alignment looks good in IOS safari & brave, tomsmeding |
| 20:33:59 | <tomsmeding> | good to hear sm[m], thanks |
| 20:34:13 | <tomsmeding> | those are two browsers I didn't test :) |
| 20:34:14 | <Rembane> | tomsmeding: Looking good in Firefox. What are weird browsers to you? :) |
| 20:34:24 | <tomsmeding> | I tried pc firefox, android firefox+chrome :p |
| 20:34:36 | <tomsmeding> | I don't care much about IE |
| 20:34:55 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 20:35:18 | <tomsmeding> | apparently in CSS, 'line-height: normal' means something different than an actual fixed line-height |
| 20:35:32 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 20:36:37 | <Rembane> | tomsmeding: That's interesting. In my experience, nothing in CSS means what I think it means. :) |
| 20:37:05 | <tomsmeding> | while 'nothing' is perhaps an overstatement, I agree with the sentiment |
| 20:37:20 | <ski> | @type either throwError return |
| 20:37:21 | <lambdabot> | MonadError e m => Either e a -> m a |
| 20:37:35 | <Rembane> | For big values of nothing... |
| 20:37:36 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 272 seconds) |
| 20:37:43 | <tomsmeding> | font-weight: bold |
| 20:40:01 | × | ph88 quits (~ph88@2a02:8109:9e00:7e5c:6525:380:35f5:9d2f) (Ping timeout: 272 seconds) |
| 20:40:21 | → | jfe joins (~user@pool-71-184-149-134.bstnma.fios.verizon.net) |
| 20:42:45 | → | TMA joins (tma@twin.jikos.cz) |
| 20:46:54 | <carbolymer> | can I use stack script with HLS/hie-bios? |
| 20:46:59 | <carbolymer> | how should I define it in yaml? |
| 20:47:05 | <carbolymer> | hie.yaml |
| 20:49:43 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 20:50:05 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 20:51:36 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 20:52:25 | × | jfe quits (~user@pool-71-184-149-134.bstnma.fios.verizon.net) (Ping timeout: 264 seconds) |
| 20:52:29 | <sm[m]> | I'm not sure that's possible yet carbolymer |
| 20:52:36 | <sm[m]> | I'd like that too |
| 20:52:41 | <carbolymer> | :/ |
| 20:53:24 | <sm[m]> | ask #haskell-ide-engine |
| 20:54:19 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 260 seconds) |
| 20:55:14 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds) |
| 20:57:51 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 256 seconds) |
| 21:00:02 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
| 21:00:56 | → | LiamD joins (43aae10c@c-67-170-225-12.hsd1.ca.comcast.net) |
| 21:03:14 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 21:03:51 | × | christo quits (~chris@81.96.113.213) (Remote host closed the connection) |
| 21:04:21 | → | son0p joins (~son0p@181.136.122.143) |
| 21:04:28 | × | iteratee quits (~kyle@162.211.154.4) (Remote host closed the connection) |
| 21:04:44 | × | Tops21 quits (~Tobias@dyndsl-095-033-022-123.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 21:05:00 | × | Bergle_1 quits (~Bergle_4@101.165.90.119) (Quit: Leaving) |
| 21:08:56 | <adamCS> | should I need to do anything but specify "ghc-options: -eventlog -rtsopts" in my executable cabal stanza to then be able to run with "+RTS -l" ? I tried that and I am getting a long error message which begins "the flag -l requires the program to be built with -eventlog or -debug". And I verified with "cabal -v" that "-eventlog" is present at compile and link. |
| 21:09:16 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 21:09:47 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection) |
| 21:10:05 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 21:13:28 | → | dandart joins (~Thunderbi@home.dandart.co.uk) |
| 21:14:58 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 21:15:45 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 21:16:00 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 21:16:41 | <Uniaika> | bi_functor: heya :) |
| 21:18:25 | → | euler joins (49f187de@c-73-241-135-222.hsd1.ca.comcast.net) |
| 21:19:35 | × | euler quits (49f187de@c-73-241-135-222.hsd1.ca.comcast.net) (Client Quit) |
| 21:19:55 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
| 21:20:40 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 272 seconds) |
| 21:20:44 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 265 seconds) |
| 21:21:09 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 21:22:46 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 21:23:08 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 21:23:54 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
| 21:24:41 | → | juri_ joins (~juri@79.140.122.154) |
| 21:24:54 | → | knupfer joins (~Thunderbi@87.123.206.120) |
| 21:25:49 | → | borne joins (~fritjof@200116b86411c700aa0a83b5acfe977f.dip.versatel-1u1.de) |
| 21:26:43 | × | juri_ quits (~juri@79.140.122.154) (Read error: Connection reset by peer) |
| 21:27:02 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Remote host closed the connection) |
| 21:29:28 | × | coot quits (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 21:30:26 | × | mmmattyx quits (uid17782@gateway/web/irccloud.com/x-lkskfelenbjwxgkl) (Quit: Connection closed for inactivity) |
| 21:33:25 | → | debclair joins (~debclair@host-181-39-120-169.netlife.ec) |
| 21:34:36 | → | juri_ joins (~juri@178.63.35.222) |
| 21:35:22 | × | abrar quits (~abrar@static-108-30-103-121.nycmny.fios.verizon.net) (Quit: WeeChat 2.9) |
| 21:36:21 | × | neiluj quits (~jco@unaffiliated/neiluj) (Quit: leaving) |
| 21:36:34 | × | sakirious quits (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) (Ping timeout: 246 seconds) |
| 21:36:38 | → | cheater joins (~user@unaffiliated/cheater) |
| 21:36:48 | → | mmmattyx joins (uid17782@gateway/web/irccloud.com/x-tzsvjcfzpzlemwdx) |
| 21:36:55 | → | ransom joins (~c4264035@8.48.134.54) |
| 21:37:12 | → | abrar joins (~abrar@static-108-30-103-121.nycmny.fios.verizon.net) |
| 21:41:53 | → | eliteyawuy joins (~eliteyawu@130.70.130.244) |
| 21:44:01 | × | pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: Textual IRC Client: www.textualapp.com) |
| 21:45:45 | × | eliteyawuy quits (~eliteyawu@130.70.130.244) (Read error: Connection reset by peer) |
| 21:47:18 | × | dhouthoo quits (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0) |
| 21:47:56 | × | debclair quits (~debclair@host-181-39-120-169.netlife.ec) (Quit: Leaving) |
| 21:48:01 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 21:50:16 | → | coot joins (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) |
| 21:50:41 | → | ubert joins (~Thunderbi@p200300ecdf1ee031e6b318fffe838f33.dip0.t-ipconnect.de) |
| 21:50:47 | × | geekosaur quits (42d52137@66.213.33.55) (Quit: Connection closed) |
| 21:53:22 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 21:54:31 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Remote host closed the connection) |
| 21:58:25 | × | conal quits (~conal@107.181.166.211) (Quit: Computer has gone to sleep.) |
| 21:58:33 | → | sakirious joins (~sakirious@c-71-197-191-137.hsd1.wa.comcast.net) |
| 21:58:44 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 21:59:00 | → | conal joins (~conal@107.181.166.211) |
| 21:59:06 | × | conal quits (~conal@107.181.166.211) (Client Quit) |
| 21:59:39 | → | conal joins (~conal@107.181.166.211) |
| 22:00:14 | × | Guest94505 quits (~textual@mskresolve-a.mskcc.org) (Ping timeout: 256 seconds) |
| 22:01:23 | × | LKoen quits (~LKoen@152.172.9.109.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.”) |
| 22:01:43 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 22:01:52 | × | mmfood quits (~mmfood@45.91.21.48) (Quit: Leaving) |
| 22:02:56 | → | mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl) |
| 22:02:56 | × | mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host) |
| 22:02:56 | → | mouseghost joins (~draco@wikipedia/desperek) |
| 22:03:38 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 22:04:09 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:04:29 | → | pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net) |
| 22:05:12 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection) |
| 22:05:29 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) |
| 22:05:31 | → | nineonine joins (~nineonine@50.216.62.2) |
| 22:06:04 | → | Elliott joins (~textual@ip68-12-87-70.ok.ok.cox.net) |
| 22:06:15 | ← | Elliott parts (~textual@ip68-12-87-70.ok.ok.cox.net) () |
| 22:08:47 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 22:09:03 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 22:10:01 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 22:10:04 | × | ericsagnes quits (~ericsagne@2405:6580:0:5100:7525:3d36:8cf7:15dd) (Ping timeout: 240 seconds) |
| 22:12:21 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit) |
| 22:12:31 | × | ransom quits (~c4264035@8.48.134.54) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 22:12:48 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 22:13:13 | → | jfe joins (~user@pool-71-184-149-134.bstnma.fios.verizon.net) |
| 22:13:16 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 22:14:46 | <jfe> | hi all |
| 22:15:16 | × | knupfer quits (~Thunderbi@87.123.206.120) (Ping timeout: 240 seconds) |
| 22:16:57 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c:6525:380:35f5:9d2f) |
| 22:17:44 | → | noob_on_rails joins (~kvirc@ppp-2-86-127-175.home.otenet.gr) |
| 22:17:45 | × | fendor_ quits (~fendor@178.115.130.17.wireless.dyn.drei.com) (Ping timeout: 240 seconds) |
| 22:18:19 | <noob_on_rails> | hey all, is there a channel dedicated to TidalCycles? |
| 22:20:16 | → | cgadski joins (~cgadski@a95-95-106-208.cpe.netcabo.pt) |
| 22:20:22 | × | michalz quits (~user@185.246.204.78) (Remote host closed the connection) |
| 22:20:42 | → | ransom joins (~c4264035@2a09:bac0:98::830:8636) |
| 22:22:53 | → | ericsagnes joins (~ericsagne@2405:6580:0:5100:15:4fbd:9a97:4e33) |
| 22:25:04 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 22:26:06 | → | faustind joins (0e0843e1@M014008067225.v4.enabler.ne.jp) |
| 22:26:15 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 22:28:20 | × | faustind quits (0e0843e1@M014008067225.v4.enabler.ne.jp) (Client Quit) |
| 22:29:03 | × | dcoutts quits (~dcoutts@unaffiliated/dcoutts) (Remote host closed the connection) |
| 22:31:17 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:31:30 | → | dcoutts joins (~dcoutts@unaffiliated/dcoutts) |
| 22:31:54 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:32:30 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:32:42 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:34:37 | ← | RedNifre parts (~michael@dslb-002-203-247-083.002.203.pools.vodafone-ip.de) ("WeeChat 1.9.1") |
| 22:36:34 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 22:38:08 | × | coot quits (~coot@37.30.56.46.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 22:43:22 | × | conal quits (~conal@107.181.166.211) (Quit: Computer has gone to sleep.) |
| 22:43:58 | <ski> | apparently there's a #tidal channel .. dunno whether it's related |
| 22:44:50 | <ski> | in the second link, there seems to be more noise in the MP3 spectrogram |
| 22:45:16 | → | pavonia joins (~user@unaffiliated/siracusa) |
| 22:45:16 | → | conal joins (~conal@107.181.166.211) |
| 22:45:31 | × | conal quits (~conal@107.181.166.211) (Client Quit) |
| 22:47:01 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) (Remote host closed the connection) |
| 22:47:51 | × | cyphase quits (~cyphase@unaffiliated/cyphase) (Ping timeout: 256 seconds) |
| 22:48:14 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:48:39 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:50:49 | <noob_on_rails> | ski: hmm thanks, it has only one guy init :D |
| 22:51:16 | <noob_on_rails> | so prolly no channel for it :( |
| 22:51:45 | → | Franciman joins (~francesco@host-82-48-174-127.retail.telecomitalia.it) |
| 22:51:53 | × | Franciman quits (~francesco@host-82-48-174-127.retail.telecomitalia.it) (Remote host closed the connection) |
| 22:52:43 | → | cyphase joins (~cyphase@unaffiliated/cyphase) |
| 22:56:32 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 22:59:27 | → | DirefulSalt joins (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) |
| 23:00:05 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 23:05:10 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:45f3:1cb8:c634:bead) |
| 23:08:46 | × | borne quits (~fritjof@200116b86411c700aa0a83b5acfe977f.dip.versatel-1u1.de) (Remote host closed the connection) |
| 23:08:56 | → | iridescent joins (2fe3e53b@047-227-229-059.res.spectrum.com) |
| 23:09:04 | → | borne joins (~fritjof@2a06:8782:ffbb:1337:9090:31bf:f665:3d0f) |
| 23:09:17 | <iridescent> | how can i read in a file containing a tree and get the tree? |
| 23:09:26 | <iridescent> | i tried: readFile "tree.txt" >>= read |
| 23:09:33 | <iridescent> | but it wasn't right |
| 23:09:36 | <Rembane> | iridescent: What's in the file? |
| 23:09:48 | <Rembane> | iridescent: Is it a string representation of a tree created using show? |
| 23:09:52 | <iridescent> | yeah |
| 23:10:41 | <monochrom> | fmap read (readFile "tree.txt"). And this is naïvely assuming legal input. |
| 23:11:43 | <monochrom> | fmap vs >>= is a very sharp litmus test on your understanding (even your respect) of the types involved. |
| 23:12:14 | <monochrom> | Most people fail this when they only use their muddy intuition. |
| 23:12:36 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 23:12:45 | <Rembane> | :t fmap |
| 23:12:47 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 23:12:49 | <Rembane> | :t (>>=) |
| 23:12:50 | <lambdabot> | Monad m => m a -> (a -> m b) -> m b |
| 23:13:04 | <iridescent> | so how can I get the actual tree object then? |
| 23:13:09 | × | ulidtko|kk quits (~ulidtko@194.54.80.38) (Ping timeout: 260 seconds) |
| 23:13:27 | <iridescent> | the resulting type looks like: a :: Read b => IO b |
| 23:13:36 | <monochrom> | This is also why I reject "explain in your own words to show you understand". Because their wordy explanations are just fine, and yet they can't write correct code. |
| 23:13:43 | × | denisse_ quits (~spaceCat@gateway/tor-sasl/alephzer0) (Ping timeout: 240 seconds) |
| 23:13:44 | <iridescent> | i guess b should be a Tree, but the type inference engine doesn't know that until it runs? |
| 23:14:26 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 23:14:27 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
| 23:14:30 | <monochrom> | fmap read (readFile "tree.txt") >>= \t -> ... t is your tree now, you can use it here ... |
| 23:15:01 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 23:15:35 | <iridescent> | hm |
| 23:16:00 | <monochrom> | See my IO tutorial: http://www.vex.net/~trebla/haskell/IO.xhtml |
| 23:16:48 | → | bi_functor joins (~bi_functo@192-0-134-138.cpe.teksavvy.com) |
| 23:16:51 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:19:29 | <iridescent> | how do people usually debug haskell code :) |
| 23:19:38 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 265 seconds) |
| 23:19:42 | <monochrom> | http://www.vex.net/~trebla/haskell/tracing.html |
| 23:20:19 | <iridescent> | guess you have an article on everything |
| 23:20:21 | <iridescent> | :) |
| 23:20:26 | <monochrom> | No. |
| 23:21:05 | × | bi_functor quits (~bi_functo@192-0-134-138.cpe.teksavvy.com) (Ping timeout: 240 seconds) |
| 23:22:46 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 23:23:08 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-109-134.w86-212.abo.wanadoo.fr) |
| 23:24:53 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 23:25:24 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:25:44 | <ephemient> | I find that writing test cases or QuickCheck properties is also a great way to debug |
| 23:25:55 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Client Quit) |
| 23:28:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:29:03 | → | desperek_ joins (~draco@87-206-9-185.dynamic.chello.pl) |
| 23:31:58 | → | desperek__ joins (~draco@87-206-9-185.dynamic.chello.pl) |
| 23:32:03 | → | danvet_ joins (~danvet@212-51-149-96.fiber7.init7.net) |
| 23:32:25 | × | mouseghost quits (~draco@wikipedia/desperek) (Ping timeout: 246 seconds) |
| 23:32:55 | × | halbGefressen quits (~halbGefre@2a02:810d:f40:2a9c:40b2:2308:84bd:8b9b) (Quit: halbGefressen) |
| 23:33:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 23:34:56 | × | desperek_ quits (~draco@87-206-9-185.dynamic.chello.pl) (Ping timeout: 272 seconds) |
| 23:34:57 | × | justsomeguy quits (~justsomeg@unaffiliated/--/x-3805311) (Quit: WeeChat 2.9) |
| 23:35:00 | × | plutoniix quits (~q@node-ulo.pool-125-24.dynamic.totinternet.net) (Quit: Leaving) |
| 23:35:41 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Quit: mputz) |
| 23:36:09 | → | conal joins (~conal@64.71.133.70) |
| 23:36:32 | × | son0p quits (~son0p@181.136.122.143) (Quit: leaving) |
| 23:38:41 | × | iridescent quits (2fe3e53b@047-227-229-059.res.spectrum.com) (Ping timeout: 248 seconds) |
| 23:40:14 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 264 seconds) |
| 23:41:07 | → | arguapacha joins (uid134895@gateway/web/irccloud.com/x-tkjkldidxnknhjth) |
| 23:41:18 | → | vst joins (~vst@2406:3003:2004:2e8a:10c7:a9a:a957:2d1a) |
| 23:42:08 | × | ransom quits (~c4264035@2a09:bac0:98::830:8636) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:43:36 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 23:44:03 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Ping timeout: 260 seconds) |
| 23:44:32 | → | mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl) |
| 23:47:07 | × | desperek__ quits (~draco@87-206-9-185.dynamic.chello.pl) (Ping timeout: 246 seconds) |
| 23:49:11 | × | alx741 quits (~alx741@186.178.110.185) (Quit: alx741) |
| 23:51:25 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 23:51:59 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 23:52:03 | → | alx741 joins (~alx741@186.178.110.185) |
| 23:52:14 | → | Alleria joins (~textual@2603-7000-3040-0000-ec46-b06f-f001-93b1.res6.spectrum.com) |
| 23:52:38 | Alleria | is now known as Guest1269 |
| 23:53:24 | × | vst quits (~vst@2406:3003:2004:2e8a:10c7:a9a:a957:2d1a) (Quit: Leaving) |
| 23:55:38 | × | DirefulSalt quits (DirefulSal@gateway/vpn/privateinternetaccess/direfulsalt) (Remote host closed the connection) |
| 23:56:08 | → | denisse_ joins (~spaceCat@gateway/tor-sasl/alephzer0) |
| 23:57:53 | → | vst joins (~vst@2406:3003:2004:2e8a:10c7:a9a:a957:2d1a) |
| 23:58:06 | <koz_> | Suppose I have derived Foo via something else. How would I add Haddock documentation to that derivation? |
| 23:58:22 | × | danvet_ quits (~danvet@212-51-149-96.fiber7.init7.net) (Ping timeout: 272 seconds) |
| 23:58:40 | <koz_> | So say I have 'deriving (Foo) via (SomeNewtype Bar)' and I want to Haddock that. |
| 23:58:53 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
| 23:59:19 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 23:59:38 | → | christo joins (~chris@81.96.113.213) |
All times are in UTC on 2021-01-12.