Logs on 2021-02-24 (freenode/#haskell)
| 00:00:03 | × | shs3g32f quits (~g433@89.238.176.169) (Quit: freenode gave me aids) |
| 00:01:20 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 00:02:09 | × | ski quits (~ski@ed-3358-10.studat.chalmers.se) (Killed (Sigyn (Spam is off topic on freenode.))) |
| 00:02:17 | × | usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 00:04:56 | × | totte_ quits (~totte@chakra/totte) (Ping timeout: 240 seconds) |
| 00:06:19 | → | robwebbjr joins (6bb893db@cpe-107-184-147-219.socal.res.rr.com) |
| 00:07:09 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:542a:c580:da44:2b5b) (Quit: oisdk) |
| 00:07:12 | → | notzmv joins (~user@unaffiliated/zmv) |
| 00:09:09 | × | notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection) |
| 00:09:09 | × | robwebbjr quits (6bb893db@cpe-107-184-147-219.socal.res.rr.com) (Killed (Sigyn (Spam is off topic on freenode.))) |
| 00:09:32 | <glguy> | fixed^ |
| 00:09:33 | → | robwebbjr joins (6bb893db@cpe-107-184-147-219.socal.res.rr.com) |
| 00:09:57 | → | notzmv joins (~user@unaffiliated/zmv) |
| 00:11:27 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:542a:c580:da44:2b5b) |
| 00:11:28 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 00:12:42 | → | ski joins (~ski@ed-3358-10.studat.chalmers.se) |
| 00:12:54 | × | notzmv quits (~user@unaffiliated/zmv) (Remote host closed the connection) |
| 00:15:43 | → | totte joins (~totte@chakra/totte) |
| 00:16:09 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 264 seconds) |
| 00:19:04 | × | robwebbjr quits (6bb893db@cpe-107-184-147-219.socal.res.rr.com) (Quit: Connection closed) |
| 00:24:22 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:9550:f699:380:13be) |
| 00:26:35 | × | mnrmnaugh quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Remote host closed the connection) |
| 00:26:48 | × | ddellacosta quits (~ddellacos@86.106.143.189) (Remote host closed the connection) |
| 00:27:16 | × | m0rphism1 quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 240 seconds) |
| 00:28:27 | → | mnrmnaugh joins (~mnrmnaugh@unaffiliated/mnrmnaugh) |
| 00:30:15 | × | seanparsons quits (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) (Ping timeout: 246 seconds) |
| 00:30:32 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 00:30:36 | × | Tesseraction quits (~Tesseract@unaffiliated/tesseraction) (Ping timeout: 246 seconds) |
| 00:30:44 | × | Katarushisu quits (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) (Ping timeout: 256 seconds) |
| 00:30:50 | × | Foritus quits (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) (Ping timeout: 272 seconds) |
| 00:32:31 | → | Tesseraction joins (~Tesseract@unaffiliated/tesseraction) |
| 00:32:45 | → | Foritus joins (~buggery@cpc91316-watf11-2-0-cust68.15-2.cable.virginm.net) |
| 00:33:34 | × | awk quits (~mnrmnaugh@unaffiliated/mnrmnaugh) (Ping timeout: 265 seconds) |
| 00:34:40 | → | Katarushisu joins (~Katarushi@cpc152083-finc20-2-0-cust170.4-2.cable.virginm.net) |
| 00:36:05 | → | seanparsons joins (~sean@cpc145088-gill21-2-0-cust281.20-1.cable.virginm.net) |
| 00:36:20 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 00:37:50 | × | borne quits (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb) (Ping timeout: 264 seconds) |
| 00:38:48 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:542a:c580:da44:2b5b) (Quit: oisdk) |
| 00:39:55 | ← | d34df00d parts (~d34df00d@104-14-27-213.lightspeed.austtx.sbcglobal.net) () |
| 00:40:45 | × | infinisil quits (~infinisil@NixOS/user/infinisil) (Quit: Configuring ZNC, sorry for the joins/quits!) |
| 00:44:10 | × | average quits (uid473595@gateway/web/irccloud.com/x-kzhkwxghknoixhmk) (Quit: Connection closed for inactivity) |
| 00:47:03 | × | noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in) |
| 00:47:34 | → | noecho joins (~noecho@2a01:4f8:1c0c:80ee::4223) |
| 00:47:50 | × | loli quits (~loli@024-171-017-003.res.spectrum.com) (Quit: WeeChat 3.0) |
| 00:49:04 | × | fengh quits (~haskeller@ip72-205-40-121.dc.dc.cox.net) (Quit: WeeChat 3.0.1) |
| 00:49:27 | → | fengh joins (~haskeller@ip72-205-40-121.dc.dc.cox.net) |
| 00:49:28 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Quit: leaving) |
| 00:49:45 | × | monochrom quits (trebla@216.138.220.146) (Ping timeout: 240 seconds) |
| 00:49:58 | → | loli joins (~loli@024-171-017-003.res.spectrum.com) |
| 00:50:36 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 00:50:45 | × | sim590 quits (~sim590@modemcable090.207-203-24.mc.videotron.ca) (Ping timeout: 240 seconds) |
| 00:50:58 | → | sim590 joins (~sim590@modemcable090.207-203-24.mc.videotron.ca) |
| 00:51:58 | → | monochrom joins (trebla@216.138.220.146) |
| 00:52:00 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 00:52:18 | × | danso quits (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 260 seconds) |
| 00:52:56 | × | verement quits (~anonymous@cpe-76-167-229-223.san.res.rr.com) (Quit: verement) |
| 00:53:18 | → | danso joins (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
| 00:57:43 | × | noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in) |
| 00:58:10 | → | noecho joins (~noecho@2a01:4f8:1c0c:80ee::4223) |
| 00:58:37 | → | seneca joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 00:58:44 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 00:58:56 | × | Bigcheese quits (~quassel@unaffiliated/bigcheese) (Quit: No Ping reply in 180 seconds.) |
| 00:59:11 | × | DavidEichmann quits (~david@234.109.45.217.dyn.plus.net) (Ping timeout: 265 seconds) |
| 00:59:39 | → | afidegnum joins (~afidegnum@102.176.65.172) |
| 01:00:04 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Remote host closed the connection) |
| 01:00:14 | → | Bigcheese joins (~quassel@unaffiliated/bigcheese) |
| 01:01:51 | × | epicte7us quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 256 seconds) |
| 01:02:48 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 01:03:06 | <afidegnum> | hi, anyone online ? |
| 01:03:21 | → | ghais joins (4c616ae2@gateway/web/cgi-irc/kiwiirc.com/ip.76.97.106.226) |
| 01:03:32 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 01:04:47 | <ephemient> | afidegnum: https://dontasktoask.com/ |
| 01:05:36 | <afidegnum> | what's the difference between <= and <_ ? from the book: http://learnyouahaskell.com/starting-out i have come accross list comprehensions: [x*2 | x <- [1..10]] which got me confused |
| 01:06:24 | <monochrom> | Do you mean <= and <- ? |
| 01:06:25 | × | wz1000 quits (~wz1000@static.11.113.47.78.clients.your-server.de) (Ping timeout: 240 seconds) |
| 01:06:29 | <afidegnum> | yes |
| 01:06:52 | <monochrom> | Totally unrelated. <= is your usual 1<=2, 2<=2. |
| 01:07:01 | <monochrom> | (less than or equal to) |
| 01:07:14 | <afidegnum> | yes |
| 01:07:46 | <monochrom> | <- is a punctuation for writing list comprehension to mean: x<-[1..10] causes x to take on 1, 2, ..., 10 in turns. |
| 01:07:48 | × | jchia quits (~jchia@218.80.77.165) (Quit: Leaving.) |
| 01:08:57 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 264 seconds) |
| 01:09:16 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 01:09:36 | <afidegnum> | i could say in that case, x derives from a list, right ? |
| 01:09:46 | × | xcmw quits (~textual@dyn-72-33-2-152.uwnet.wisc.edu) (Quit: Textual IRC Client: www.textualapp.com) |
| 01:11:07 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Read error: Connection reset by peer) |
| 01:11:51 | <ephemient> | "derive" doesn't make sense to me. for each x chosen from a list, would be one way to state it |
| 01:12:34 | × | jedws quits (~jedws@101.184.202.248) (Quit: Textual IRC Client: www.textualapp.com) |
| 01:12:56 | <monochrom> | I would think Python syntax provides the best English wording, if you're looking for English wording. |
| 01:13:09 | <monochrom> | x*2 for (each) x in 1 to 10. |
| 01:13:35 | <afidegnum> | monochrom: yes, that's clearer :) |
| 01:13:41 | <monochrom> | I think "derive" is avoiding the point. As are most wordings. |
| 01:14:09 | <monochrom> | In fact, I think all wordings are. |
| 01:14:17 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:18de:2172:b410:a7a6) |
| 01:14:19 | <ski> | `[x*2 | x <- [1..10]]' : collect the list of all `x*2's, for all possible ways to draw `x' from the list `[1..10]' |
| 01:15:03 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 01:15:28 | <monochrom> | Instead, the template [f x | x<-[a,b,c]] = [f a, f b, f c] is precise, clear, and get things done. |
| 01:15:36 | <afidegnum> | [x*2 | x <- [1..10] can i also say, collect x*2 where x is part of a list [1..10] ? |
| 01:16:12 | <ski> | > [f x | x <- [a,b,c]] :: [Expr] |
| 01:16:13 | <lambdabot> | [f a,f b,f c] |
| 01:16:36 | <afidegnum> | isn't that mapping ? |
| 01:16:40 | <monochrom> | Yes. |
| 01:16:44 | <ski> | afidegnum : "part" is a bit ambiguous, i'd say. you could say "is an element of" |
| 01:16:47 | <monochrom> | Programming is not an essay course. |
| 01:16:58 | <afidegnum> | :) |
| 01:17:04 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) |
| 01:17:11 | <ski> | (is the list `[3,5]' a part of the list `[2,3,5,7]' ?) |
| 01:17:12 | <ephemient> | (unless applescript :D) |
| 01:17:27 | <afidegnum> | oh, noo! |
| 01:17:53 | <ski> | the list of all `x*2's, for `x' in `[1..10]' -- abbreviated version |
| 01:18:15 | × | noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - http://znc.in) |
| 01:18:27 | <afidegnum> | ski: ok, that's clearer, matching python wordings |
| 01:18:32 | → | noecho joins (~noecho@2a01:4f8:1c0c:80ee::4223) |
| 01:18:42 | → | conal joins (~conal@64.71.133.70) |
| 01:18:45 | → | infinisil joins (~infinisil@NixOS/user/infinisil) |
| 01:20:03 | <monochrom> | And BTW regarding watching other people write code on Twitch, I would also say "programming is not a spectator sport", except for one consideration during the pandemic. Since you need to learn from how other people do things, but you can't easily go to an in-person programming session for that during the pandemic, watching Twitch has to make do. |
| 01:20:28 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 01:20:58 | <afidegnum> | twitch is turning things around :) |
| 01:21:28 | <monochrom> | An in-person session is still preferred when it's safe, since the part about interacting with the expert, even the expert saying "try your hands on this easy part", is irreplaceable. |
| 01:22:14 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 01:22:49 | × | WarzoneCommand quits (~Frank@77-162-168-71.fixed.kpn.net) (Ping timeout: 256 seconds) |
| 01:23:01 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 01:23:30 | <monochrom> | BTW I'm bittersweet to announce that an unannounced proof I was trying to do has failed. I found a counterexample. |
| 01:23:34 | × | Yumasi quits (~guillaume@2a01:e0a:5cb:4430:47c4:89ec:8e68:7431) (Ping timeout: 258 seconds) |
| 01:24:05 | × | ghais quits (4c616ae2@gateway/web/cgi-irc/kiwiirc.com/ip.76.97.106.226) (Quit: Connection closed) |
| 01:24:40 | → | ghais joins (4c616ae2@gateway/web/cgi-irc/kiwiirc.com/ip.76.97.106.226) |
| 01:24:43 | × | noecho quits (~noecho@2a01:4f8:1c0c:80ee::4223) (Quit: ZNC - https://znc.in) |
| 01:24:58 | <monochrom> | It is bitter that I can't publish a paper for it now. There is no earth-shattring theorem to state and prove. |
| 01:25:09 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 264 seconds) |
| 01:25:26 | → | noecho joins (~noecho@static.143.42.203.116.clients.your-server.de) |
| 01:25:35 | <monochrom> | The small sweet side is that I can turn it into an exam question. "Prof. M thinks the following is true. Find a counterexample." >:) |
| 01:25:49 | <ski> | how common is it to publish papers with counterexamples ? |
| 01:26:18 | <monochrom> | common for conjectures that everyone thought provable |
| 01:26:19 | → | cig_in_mouth joins (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230) |
| 01:26:21 | <ski> | (or do counter-examples mostly get published in say textbooks ?) |
| 01:26:29 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 01:26:29 | <monochrom> | uncommon for "I told you so" cases. |
| 01:27:04 | <ski> | hm .. reminds me of some page of a mathematician, collecting counter-examples to published theorems |
| 01:27:09 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 01:27:13 | <monochrom> | hahaha |
| 01:27:21 | × | cig_in_mouth quits (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230) (Client Quit) |
| 01:27:26 | <ski> | (peer-reviewed publishing, yes) |
| 01:27:54 | <monochrom> | But the same metric is applied to both publishing theorems and publishing counterexamples. The community has a pretty consensual sense of what's important, what's meh. |
| 01:28:35 | × | Wamanuz quits (~wamanuz@78-70-34-81-no84.tbcn.telia.com) (Quit: Konversation terminated!) |
| 01:28:45 | dolio | sets mode -o dolio |
| 01:28:47 | <monochrom> | A really surprising counterexample is publishable. Likewise, a really unimportant theorem/proof is unpublishable. The world is still fair. |
| 01:28:48 | ski | nods |
| 01:29:08 | → | IsmokeWeed420 joins (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230) |
| 01:31:17 | × | bradparker quits (sid262931@gateway/web/irccloud.com/x-isrdawaltlzaweiw) () |
| 01:31:22 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 01:31:31 | → | bradparker joins (sid262931@gateway/web/irccloud.com/x-tsajgnzxnbyjwxdp) |
| 01:33:18 | × | tomkap1 quits (~tomkap@178.239.168.171) (Remote host closed the connection) |
| 01:33:55 | × | l8star__ quits (~l8star@business-90-187-113-149.pool2.vodafone-ip.de) (Ping timeout: 258 seconds) |
| 01:34:46 | × | jdt quits (~jdt@208.85.233.130) (Ping timeout: 256 seconds) |
| 01:35:02 | → | rajivr joins (uid269651@gateway/web/irccloud.com/x-lsothnqwqqfmpidy) |
| 01:35:10 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 01:37:27 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 01:38:27 | → | stree joins (~stree@68.36.8.116) |
| 01:38:36 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection) |
| 01:38:52 | × | noecho quits (~noecho@static.143.42.203.116.clients.your-server.de) (Quit: ZNC - https://znc.in) |
| 01:39:26 | → | noecho joins (~noecho@static.143.42.203.116.clients.your-server.de) |
| 01:40:09 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 01:41:18 | → | jdt joins (~jdt@208.85.233.130) |
| 01:42:05 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 01:42:29 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 01:45:11 | × | noecho quits (~noecho@static.143.42.203.116.clients.your-server.de) (Quit: ZNC - https://znc.in) |
| 01:45:46 | → | noecho joins (~noecho@static.143.42.203.116.clients.your-server.de) |
| 01:47:05 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 01:49:24 | → | chaosagent joins (~chaosagen@217.146.82.202) |
| 01:50:26 | × | Alleria_ quits (~AllahuAkb@2603-7000-3040-0000-e45d-b815-1770-2199.res6.spectrum.com) (Read error: Connection reset by peer) |
| 01:50:52 | → | Alleria_ joins (~AllahuAkb@2603-7000-3040-0000-18b0-cfa2-5ed5-49de.res6.spectrum.com) |
| 01:51:00 | <MarcelineVQ> | good job today, you |
| 01:54:51 | × | hongminhee quits (~dahlia@207.148.91.209) (Quit: leaving) |
| 01:57:22 | → | Tario joins (~Tario@201.192.165.173) |
| 01:58:44 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 01:58:58 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Quit: Quit) |
| 01:59:16 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 02:03:09 | ChanServ | sets mode +o ski |
| 02:03:25 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 02:05:05 | × | Feuermagier quits (~Feuermagi@2a02:2488:4211:3400:246e:bf09:8453:9d6) (Quit: Leaving) |
| 02:05:58 | × | carlomagno1 quits (~cararell@148.87.23.12) (Remote host closed the connection) |
| 02:08:36 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection) |
| 02:08:53 | × | xff0x quits (~xff0x@2001:1a81:521c:d500:7b2f:d778:c258:ec7a) (Ping timeout: 272 seconds) |
| 02:08:53 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 02:09:04 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection) |
| 02:10:15 | → | xff0x joins (~xff0x@2001:1a81:525a:9700:4364:2209:6649:c89) |
| 02:10:27 | → | drbean_ joins (~drbean@TC210-63-209-199.static.apol.com.tw) |
| 02:11:54 | <swarmcollective> | :withMS |
| 02:11:57 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 02:11:58 | <swarmcollective> | :t withMS |
| 02:12:00 | <lambdabot> | error: |
| 02:12:00 | <lambdabot> | • Variable not in scope: withMS |
| 02:12:00 | <lambdabot> | • Perhaps you meant ‘withRWS’ (imported from Control.Monad.RWS) |
| 02:12:13 | → | Tario joins (~Tario@201.192.165.173) |
| 02:13:32 | <ski> | @hoogle withMS |
| 02:13:33 | <lambdabot> | Control.Eff.Logic.Core withMSplit :: MonadPlus m => a -> m a -> m (Maybe (a, m a)) |
| 02:13:33 | <lambdabot> | Data.Singletons.Prelude.Monad data ZipWithMSym0 a6989586621681292348 |
| 02:13:33 | <lambdabot> | Data.Singletons.Prelude.Monad data ZipWithMSym1 a6989586621681292348 a6989586621681292349 |
| 02:14:30 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 02:15:47 | × | Jon quits (~jon@redmars.org) (Quit: ZNC - http://znc.in) |
| 02:15:48 | × | my_name_is_not_j quits (mynameisno@gateway/shell/matrix.org/x-hpkeozywuimiwkcp) (Ping timeout: 246 seconds) |
| 02:16:01 | → | my_name_is_not_j joins (mynameisno@gateway/shell/matrix.org/x-sulamkpowiaizxta) |
| 02:16:12 | × | e quits (e@freenode/staff/spy.edk) (Quit: edk) |
| 02:16:51 | × | dexterlb quits (~dexterlb@2a01:9e40:2:2::2) (Ping timeout: 246 seconds) |
| 02:16:54 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 02:17:03 | → | Jon joins (jon@dow.land) |
| 02:17:10 | → | dexterlb joins (~dexterlb@2a01:9e40:2:2::2) |
| 02:17:16 | → | ddellacosta joins (~ddellacos@83.143.246.103) |
| 02:17:21 | × | ghais quits (4c616ae2@gateway/web/cgi-irc/kiwiirc.com/ip.76.97.106.226) (Ping timeout: 264 seconds) |
| 02:18:55 | → | notzmv joins (~user@unaffiliated/zmv) |
| 02:19:45 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
| 02:20:35 | → | sleblanc joins (~sleblanc@unaffiliated/sebleblanc) |
| 02:21:45 | × | ddellacosta quits (~ddellacos@83.143.246.103) (Ping timeout: 240 seconds) |
| 02:23:52 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 02:25:12 | → | edk_ joins (e@freenode/staff/spy.edk) |
| 02:25:18 | <electricityZZZZ> | does anybody have a freenode admin i can pm and complain to about some bots which are pm'ing me? i've never done something like that before |
| 02:25:26 | × | drbean_ quits (~drbean@TC210-63-209-199.static.apol.com.tw) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
| 02:25:50 | → | WarzoneCommand joins (~Frank@77-162-168-71.fixed.kpn.net) |
| 02:26:10 | <swarmcollective> | electricityZZZZ: I believe they are aware, freenode broadcast a message about it. |
| 02:26:46 | × | ubert quits (~Thunderbi@p200300ecdf25d925395e0cfc416b2878.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 02:26:53 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Quit: Quit) |
| 02:27:09 | → | ubert joins (~Thunderbi@p200300ecdf25d925757f6c6af73e13ea.dip0.t-ipconnect.de) |
| 02:27:19 | <electricityZZZZ> | swarmcollective: okay thanks |
| 02:27:46 | × | notzmv quits (~user@unaffiliated/zmv) (Quit: ERC (IRC client for Emacs 27.1)) |
| 02:28:23 | <pavonia^\_^\> | electricityZZZZ: You can set "/mode electricityZZZZ +R" in your client if you don't want to get messages from unidentified users |
| 02:30:00 | <ski> | electricityZZZZ : you can join #freenode and report in there |
| 02:32:36 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 02:32:45 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 02:37:06 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 02:37:45 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 264 seconds) |
| 02:37:47 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 02:37:51 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 02:38:09 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-4-36.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 02:38:29 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-4-36.w83-200.abo.wanadoo.fr) |
| 02:38:56 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds) |
| 02:39:13 | Lord_of_Life_ | is now known as Lord_of_Life |
| 02:41:49 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 02:45:23 | → | ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net) |
| 02:45:32 | × | deviantfero quits (~deviantfe@190.150.27.58) (Quit: WeeChat 3.0) |
| 02:47:09 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 02:47:43 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:49:09 | → | soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net) |
| 02:50:04 | × | sablib quits (~sablib@171.113.164.135) (Ping timeout: 260 seconds) |
| 02:50:09 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 02:50:46 | × | sudden quits (~lax@unaffiliated/laxask) (Quit: Reconnecting) |
| 02:51:01 | → | sudden joins (~lax@unaffiliated/laxask) |
| 02:51:51 | → | sablib joins (~sablib@59.173.155.233) |
| 02:52:00 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 02:52:10 | × | hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 02:52:52 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 02:52:59 | → | toorevitimirp joins (~tooreviti@117.182.181.253) |
| 02:53:12 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 02:54:25 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds) |
| 02:55:30 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 02:57:44 | × | Wuzzy quits (~Wuzzy@p57a2e098.dip0.t-ipconnect.de) (Quit: Wuzzy) |
| 02:59:15 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 02:59:32 | × | forgottenone quits (~forgotten@176.42.28.131) (Quit: Konversation terminated!) |
| 03:00:14 | × | viluon quits (uid453725@gateway/web/irccloud.com/x-qrosvhbxmvdksoje) (Quit: Connection closed for inactivity) |
| 03:00:36 | ornxka_ | is now known as ornxka |
| 03:01:36 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 240 seconds) |
| 03:02:37 | × | ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection) |
| 03:06:06 | × | gentauro quits (~gentauro@unaffiliated/gentauro) (Read error: Connection reset by peer) |
| 03:06:20 | → | gentauro joins (~gentauro@unaffiliated/gentauro) |
| 03:06:25 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 03:06:49 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 03:09:03 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 03:09:21 | × | IsmokeWeed420 quits (cig_in_mou@gateway/vpn/mullvad/ciginmouth/x-85815230) (Quit: Textual IRC Client: www.textualapp.com) |
| 03:11:40 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds) |
| 03:12:35 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 03:14:28 | → | ezrakilty joins (~ezrakilty@97-113-55-149.tukw.qwest.net) |
| 03:17:00 | × | ezrakilty quits (~ezrakilty@97-113-55-149.tukw.qwest.net) (Remote host closed the connection) |
| 03:19:28 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 03:21:14 | → | FinnElija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
| 03:21:14 | finn_elija | is now known as Guest75969 |
| 03:21:14 | FinnElija | is now known as finn_elija |
| 03:21:40 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 03:24:51 | × | Guest75969 quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Ping timeout: 268 seconds) |
| 03:25:18 | × | jonn quits (~sweater@206.81.18.26) (Quit: WeeChat 2.8) |
| 03:25:56 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds) |
| 03:26:15 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
| 03:26:45 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Remote host closed the connection) |
| 03:28:37 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 03:30:23 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 03:32:37 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 03:34:56 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 03:37:33 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 03:38:02 | <monochrom> | I'm going to go on a limb and -q $~a (i.e., back to normal) |
| 03:38:04 | ChanServ | sets mode +o monochrom |
| 03:38:21 | monochrom | sets mode -zq $~a |
| 03:38:28 | monochrom | sets mode -o monochrom |
| 03:38:34 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 03:40:37 | ChanServ | sets mode -o ski |
| 03:41:03 | → | Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi) |
| 03:41:45 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 03:42:24 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 03:43:34 | → | joecordingley joins (~joecordin@37.156.75.63) |
| 03:46:25 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 240 seconds) |
| 03:46:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 03:48:05 | × | aarvar quits (~foewfoiew@2601:602:a080:fa0:394a:95d6:26a0:dc43) (Ping timeout: 258 seconds) |
| 03:48:33 | × | joecordingley quits (~joecordin@37.156.75.63) (Ping timeout: 264 seconds) |
| 03:49:23 | × | klardotsh quits (~klardotsh@75-172-31-60.tukw.qwest.net) (Quit: WeeChat 3.0.1) |
| 03:50:54 | → | jollygood2 joins (~bc8134e3@217.29.117.252) |
| 03:51:25 | <jollygood2> | hi. is anyone using inline-c? it seems too good to be true? |
| 03:51:29 | <jollygood2> | "inline-c lets you seamlessly call C libraries and embed high-performance inline C code in Haskell modules. Haskell and C can be freely intermixed in the same source file, and data passed to and from code in either language with minimal overhead. No FFI required." |
| 03:51:40 | × | theDon quits (~td@94.134.91.128) (Ping timeout: 260 seconds) |
| 03:52:12 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 03:53:25 | × | afidegnum quits (~afidegnum@102.176.65.172) (Ping timeout: 240 seconds) |
| 03:53:26 | → | theDon joins (~td@muedsl-82-207-238-135.citykom.de) |
| 03:55:15 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 03:55:33 | → | afidegnum joins (~afidegnum@102.176.65.99) |
| 03:58:30 | <koz_> | jollygood2: I've used it a bit. |
| 03:58:35 | <EvanR> | jollygood2: updated in january so |
| 03:58:54 | <koz_> | It's quite convenient if all you wanna do is wrap a header. |
| 03:59:02 | → | stree joins (~stree@68.36.8.116) |
| 03:59:14 | <jollygood2> | I've been using haskell FFI in the past quite often, but this seems so much better. I have yet to use it |
| 03:59:30 | <jollygood2> | so maybe I'm being too optimistic |
| 03:59:33 | → | ubert1 joins (~Thunderbi@p200300ecdf25d926855ee11db97a074b.dip0.t-ipconnect.de) |
| 04:00:00 | <jollygood2> | koz_ what if you want to write haskell bindings for relatively big C library? |
| 04:00:07 | <jollygood2> | ffi or this? |
| 04:00:12 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) |
| 04:00:13 | <koz_> | jollygood2: I dunno. I never had to do that. |
| 04:00:21 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 04:00:39 | <swarmcollective> | Either way, matching C data types is a challenge, or no? |
| 04:00:52 | <koz_> | swarmcollective: Depends. If they're primitive? Not so much. |
| 04:00:57 | <koz_> | inline-c works pretty well. |
| 04:01:06 | <koz_> | If they're structs or something? Then not so much. |
| 04:01:07 | × | ubert quits (~Thunderbi@p200300ecdf25d925757f6c6af73e13ea.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 04:01:08 | ubert1 | is now known as ubert |
| 04:01:26 | × | polyphem quits (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) (Ping timeout: 240 seconds) |
| 04:01:27 | <EvanR> | would be cool if haskell had something like structs |
| 04:01:47 | → | aarvar joins (~foewfoiew@2601:602:a080:fa0:4c91:1390:14b8:f441) |
| 04:02:09 | swarmcollective | wonders if you can mix assembly in with the C code. :D |
| 04:02:17 | <koz_> | inline-asm exists. |
| 04:02:31 | <swarmcollective> | koz_: Nice. |
| 04:03:04 | <swarmcollective> | ofc. I have not written C or ASM since the 90's (requires re-learning) |
| 04:03:34 | <EvanR> | inline-haskell please |
| 04:03:57 | <MarcelineVQ> | inline-inline |
| 04:04:45 | <jollygood2> | koz_ how does it compare to ffi when you have to get data from C structs? |
| 04:04:59 | <koz_> | jollygood2: I dunno, because I've never had to do that. |
| 04:05:04 | <koz_> | I hear it's not straightforward. |
| 04:05:25 | <EvanR> | it's not as simple as quasi quote... foo.bar.baz ? |
| 04:05:38 | × | fengh quits (~haskeller@ip72-205-40-121.dc.dc.cox.net) (Quit: WeeChat 3.0.1) |
| 04:06:18 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 04:07:39 | → | notzmv joins (~zmv@unaffiliated/zmv) |
| 04:07:59 | × | seneca quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Read error: Connection reset by peer) |
| 04:08:04 | <jollygood2> | it seems that it uses Foreign.Storable for marshalling, so I guess it is similar to FFI in this regard |
| 04:08:10 | → | Rudd0 joins (~Rudd0@185.189.115.108) |
| 04:11:09 | × | soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Quit: Connection closed) |
| 04:11:52 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 04:12:55 | → | plutoniix joins (~q@184.82.193.59) |
| 04:13:03 | × | plutoniix quits (~q@184.82.193.59) (Max SendQ exceeded) |
| 04:13:30 | → | plutoniix joins (~q@184.82.193.59) |
| 04:15:28 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 04:16:08 | × | sleblanc quits (~sleblanc@unaffiliated/sebleblanc) (Quit: Leaving) |
| 04:16:23 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 04:17:17 | × | xsperry quits (~as@unaffiliated/xsperry) (K-Lined) |
| 04:17:17 | × | jollygood2 quits (~bc8134e3@217.29.117.252) (Disconnected by services) |
| 04:17:24 | × | xelxebar_ quits (~xelxebar@gateway/tor-sasl/xelxebar) (Remote host closed the connection) |
| 04:17:42 | × | alx741 quits (~alx741@186.178.108.179) (Quit: alx741) |
| 04:19:45 | → | raym joins (~ray@45.64.220.3) |
| 04:19:55 | → | xelxebar joins (~xelxebar@gateway/tor-sasl/xelxebar) |
| 04:21:48 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Remote host closed the connection) |
| 04:24:56 | → | hekkaidekapus joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 04:26:39 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:28:04 | × | electricityZZZZ quits (~electrici@108-216-157-17.lightspeed.sntcca.sbcglobal.net) (Quit: Leaving) |
| 04:29:29 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) |
| 04:29:41 | → | forgottenone joins (~forgotten@176.42.28.131) |
| 04:30:52 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 04:31:02 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
| 04:31:20 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 04:32:16 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 04:35:11 | × | forgottenone quits (~forgotten@176.42.28.131) (Quit: Konversation terminated!) |
| 04:36:18 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 04:37:05 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 04:40:04 | × | nyaomi quits (~naomi@cpe-74-75-6-125.maine.res.rr.com) (Ping timeout: 256 seconds) |
| 04:40:56 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 04:43:04 | → | xsperry joins (~as@unaffiliated/xsperry) |
| 04:43:18 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 04:45:11 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 04:45:25 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
| 04:45:51 | → | justan0theruser joins (~justanoth@unaffiliated/justanotheruser) |
| 04:46:02 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-4-36.w83-200.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 04:46:42 | → | hirc joins (3dded63f@61-222-214-63.HINET-IP.hinet.net) |
| 04:46:52 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 276 seconds) |
| 04:47:26 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds) |
| 04:47:30 | → | conal joins (~conal@64.71.133.70) |
| 04:48:14 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 04:48:55 | → | conal joins (~conal@64.71.133.70) |
| 04:48:59 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 04:49:50 | → | nyaomi joins (~naomi@2603-7080-c43e-59ad-c878-29ff-fedf-ce89.res6.spectrum.com) |
| 04:50:24 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-bmpdmusxcksbrdtx) () |
| 04:52:09 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 04:53:43 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 04:55:37 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 04:55:53 | × | sh9 quits (~sh9@softbank060116136158.bbtec.net) (Quit: WeeChat 2.8) |
| 04:56:44 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 04:56:56 | <hirc> | hi, folks |
| 04:56:59 | <hirc> | what is the point to use ghcup especially I can use stack setup to install ghc ? |
| 04:58:11 | → | ddellacosta joins (~ddellacos@86.106.143.111) |
| 05:01:25 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 05:02:15 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 05:02:16 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:9550:f699:380:13be) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:02:16 | × | ddellacosta quits (~ddellacos@86.106.143.111) (Ping timeout: 240 seconds) |
| 05:03:18 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 05:03:29 | mnrmnaugh | is now known as find |
| 05:06:10 | find | is now known as mnrmnaugh |
| 05:06:14 | <glguy> | hirc, you wouldn't need stack at all |
| 05:06:28 | <glguy> | ghcup installs the various tools and ghc, cabal-install builds/installs Haskell software |
| 05:08:56 | × | ezzieyguywuf quits (~Unknown@unaffiliated/ezzieyguywuf) (Ping timeout: 240 seconds) |
| 05:09:00 | <hirc> | I found I always have difficulty to understand those tool |
| 05:09:08 | <hirc> | stack, cabal, nix |
| 05:09:12 | <hirc> | ghcup |
| 05:09:58 | <hirc> | how do i choose them |
| 05:11:09 | <glguy> | for new development ghcup+cabal-install is a safe starting point |
| 05:11:16 | <glguy> | if you're already using one it's fine to keep using it |
| 05:11:38 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 05:12:13 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@184.22.159.161) |
| 05:14:01 | <hirc> | Currently, I am using stack |
| 05:14:38 | <hirc> | and I am trying to setup haskell language server |
| 05:14:48 | × | Patternm1ster quits (~georg@li1192-118.members.linode.com) (Quit: leaving) |
| 05:15:00 | <hirc> | and install it with stack |
| 05:15:17 | <hirc> | so painful |
| 05:15:29 | <hirc> | took me an hour to compile |
| 05:16:11 | <hirc> | then I found ghcup seems much easier to install hls |
| 05:16:36 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 05:16:54 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 05:18:09 | → | Patternmaster joins (~georg@li1192-118.members.linode.com) |
| 05:19:28 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 05:22:12 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 05:23:08 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 05:25:42 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:18de:2172:b410:a7a6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 05:27:24 | × | bitmapper quits (uid464869@gateway/web/irccloud.com/x-ticlhlkkqaebihvj) (Quit: Connection closed for inactivity) |
| 05:28:27 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 246 seconds) |
| 05:29:09 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 05:33:27 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
| 05:34:17 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-gvrskhsrqqnmfley) (Quit: Connection closed for inactivity) |
| 05:35:16 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 05:37:00 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 05:40:16 | → | hongminhee joins (hongminhee@gateway/web/irccloud.com/x-mtlcwvdsuqyxumrm) |
| 05:41:45 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 05:42:37 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 05:45:45 | <sm[m]> | hirc: letting the visual code haskell extension do it is another easy way |
| 05:46:11 | → | ezzieyguywuf joins (~Unknown@unaffiliated/ezzieyguywuf) |
| 05:47:32 | <hirc> | but.. |
| 05:47:37 | <hirc> | I am a vim fan |
| 05:49:20 | <hirc> | however, it just not work with coc vim plug |
| 05:49:45 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 05:49:56 | <hirc> | it perfectly work find with coc-pyright(python) |
| 05:50:03 | <hirc> | *fine |
| 05:50:20 | <hirc> | but haskell... I give up |
| 05:50:26 | <hirc> | just not work |
| 05:51:40 | → | idhugo__ joins (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) |
| 05:52:46 | <monochrom> | https://ro-che.info/ccc/26 is prophetic. |
| 05:52:56 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 05:54:37 | <koz_> | Maybe I'm just an oddball, but I've never needed HLS. |
| 05:55:08 | <hirc> | yes... |
| 05:55:37 | <monochrom> | emacs haskell-mode and dante already do the most important 80% what HLS does. So I just apply the 80-20 rule. |
| 05:55:41 | <hirc> | actually, I am fine with plain vim |
| 05:56:11 | <koz_> | What monochrom said, except Neovim and ALE. |
| 05:56:22 | <monochrom> | In fact installing haskell-mode or dante takes only 1% of the hassle. |
| 05:56:42 | <hirc> | I just occasionally look hls and try to give a shot |
| 05:57:31 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 05:57:53 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 05:57:59 | <monochrom> | My students, they use vscode just fine. I don't know whether they get hls to work. I just know that since they grew up with the likes of ipython and eclipse, if they're happy with vscode then it means vscode is perfection already. |
| 05:58:59 | <monochrom> | Also since they're also spending infinite time on my "simple" assignments and they have like 4 other courses to worry about, I don't imagine that they spent much time fighting with installation. |
| 05:59:45 | <monochrom> | Whatever vscode setup they ended up with, they must have spent less than an hour to get it. |
| 06:01:27 | <hirc> | in my current workflow |
| 06:01:41 | <hirc> | I use vim + ghci + browser for hoogle |
| 06:01:48 | <hirc> | that's it |
| 06:02:05 | <hirc> | no fancy stuff |
| 06:02:41 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
| 06:04:59 | <sm[m]> | hirc, definitely try adding ghcid to that list. It's the simpler-hls |
| 06:07:02 | <hirc> | sm[m]: looks good, I will take a look if I have time |
| 06:07:20 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 256 seconds) |
| 06:07:23 | <sm[m]> | indispensable rapid feedback |
| 06:09:23 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 06:10:54 | × | Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection) |
| 06:11:07 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 06:13:56 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 06:15:25 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds) |
| 06:16:36 | × | kam1 quits (~kam1@5.125.126.175) (Ping timeout: 240 seconds) |
| 06:16:45 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 06:19:56 | → | stree joins (~stree@68.36.8.116) |
| 06:23:26 | × | aarvar quits (~foewfoiew@2601:602:a080:fa0:4c91:1390:14b8:f441) (Ping timeout: 264 seconds) |
| 06:23:41 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds) |
| 06:24:51 | <suzu_> | hirc hls has binaries |
| 06:25:44 | <hirc> | yeah, when i notice that, it's too late |
| 06:26:30 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 06:31:00 | <guest222> | what's the fixed point in ContT? https://paste.ubuntu.com/p/mMsXX7dcVt/ |
| 06:31:05 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 06:33:26 | <suzu_> | :( |
| 06:35:00 | <EvanR> | you mean something like mfix ? |
| 06:35:25 | × | minoru_shiraeesh quits (~shiraeesh@5.101.59.211) (Ping timeout: 240 seconds) |
| 06:36:52 | <guest222> | label :: ContT r m (LabelT r m);label = callCC $ \k -> let l = LabelT $ k l in return l |
| 06:37:28 | <guest222> | EvanR: what the point that label is k's fixed-point here |
| 06:37:33 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 06:38:45 | × | esp32_prog quits (~esp32_pro@185.195.233.147) (Ping timeout: 240 seconds) |
| 06:41:51 | → | Stanley00 joins (~stanley00@unaffiliated/stanley00) |
| 06:43:21 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 06:48:45 | → | average joins (uid473595@gateway/web/irccloud.com/x-kftgzjbwgakalewc) |
| 06:48:56 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
| 06:49:07 | × | xff0x quits (~xff0x@2001:1a81:525a:9700:4364:2209:6649:c89) (Remote host closed the connection) |
| 06:49:25 | → | xff0x joins (~xff0x@2001:1a81:525a:9700:3f22:5bb3:5062:204b) |
| 06:51:50 | → | ddellacosta joins (~ddellacos@86.106.143.228) |
| 06:53:39 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 06:56:05 | × | ddellacosta quits (~ddellacos@86.106.143.228) (Ping timeout: 240 seconds) |
| 06:58:26 | × | hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 272 seconds) |
| 06:59:24 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 07:01:39 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 07:03:39 | → | hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net) |
| 07:06:25 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 07:11:58 | → | danvet joins (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) |
| 07:12:30 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 07:17:26 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 264 seconds) |
| 07:17:52 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 07:19:55 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 07:19:58 | SIben_ | is now known as SIben |
| 07:20:28 | SIben | is now known as Guest2445 |
| 07:21:23 | Guest2445 | is now known as BenChe |
| 07:23:52 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 07:24:25 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 07:24:59 | BenChe | is now known as SIben |
| 07:28:43 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 07:29:46 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 07:31:05 | × | is_null quits (~jpic@pdpc/supporter/professional/is-null) (Ping timeout: 240 seconds) |
| 07:32:11 | → | ShiningStar joins (1815f7df@c-24-21-247-223.hsd1.or.comcast.net) |
| 07:32:32 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 07:33:25 | → | dhouthoo joins (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) |
| 07:34:49 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 07:35:09 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds) |
| 07:35:48 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 07:37:22 | × | ShiningStar quits (1815f7df@c-24-21-247-223.hsd1.or.comcast.net) (Quit: Connection closed) |
| 07:39:29 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 07:40:10 | <afidegnum> | (==) :: (Eq a) => a -> a -> Bool | i'm a bit confused about this statement: "Everything before the => symbol is called a class constraint." |
| 07:40:18 | <afidegnum> | anyone care to explain please? |
| 07:40:36 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 07:40:54 | <Franciman> | afidegnum, do you know type classes? |
| 07:41:03 | → | mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl) |
| 07:41:03 | × | mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host) |
| 07:41:03 | → | mouseghost joins (~draco@wikipedia/desperek) |
| 07:41:20 | <afidegnum> | are typeclasses similar to type signatures ? |
| 07:42:13 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 07:42:45 | <Franciman> | https://en.wikipedia.org/wiki/Type_class |
| 07:43:00 | <Franciman> | probably you can say that they are similar to interfaces in java, I guess |
| 07:43:15 | <Franciman> | in a type class you specify some functions |
| 07:43:25 | <Franciman> | and then if you implement an instance of that type class for a type |
| 07:43:34 | <Franciman> | you have to implement those functions |
| 07:43:43 | <afidegnum> | i'm familiar of interfaces in Golang, |
| 07:43:44 | <Franciman> | (then there are extensions) |
| 07:44:38 | <dminuoso> | afidegnum: So first, a type variable (a type starting with a lower case letter) is one where the caller/user has to pick a type for. Normally, you are free to pick any type you like. |
| 07:44:40 | <dminuoso> | Consider |
| 07:44:42 | <dminuoso> | % :t id |
| 07:44:42 | <yahb> | dminuoso: a -> a |
| 07:44:59 | <dminuoso> | The caller of `id` has to an arbitrary type for `a`, say `Int`. Then the type of `id` becomes `id :: Int -> Int` |
| 07:45:30 | <dminuoso> | *has to pick |
| 07:45:35 | <afidegnum> | a faint light in a tunnel, :) |
| 07:45:47 | <dminuoso> | A class constraint serves to limit your choices |
| 07:45:50 | × | howdoi quits (uid224@gateway/web/irccloud.com/x-yvkniqlqtpydzpxk) (Quit: Connection closed for inactivity) |
| 07:45:51 | <dminuoso> | Consider |
| 07:45:53 | <dminuoso> | % :t (<>) |
| 07:45:54 | <yahb> | dminuoso: Semigroup a => a -> a -> a |
| 07:46:18 | <dminuoso> | Here you can pick any `a` you like, as long as for your choice of `a`, let's call it `T`, there exists an `instance Semigroup T` |
| 07:46:52 | <dminuoso> | So one could pronounce that above type signature as: For any choice of `a`, as long as there exists an instance Semigroup a, (<>) has type `a -> a -> a` |
| 07:47:35 | <dminuoso> | % 'a' <> 'b' -- Here the choice of `a` becomes `Char`. GHC will proceed to check whether there exists an `instance Semigroup Char` |
| 07:47:35 | <yahb> | dminuoso: ; <interactive>:24:5: error:; * No instance for (Semigroup Char) arising from a use of `<>'; * In the expression: 'a' <> 'b'; In an equation for `it': it = 'a' <> 'b' |
| 07:47:43 | <dminuoso> | And it does not, so GHC rightfully complains |
| 07:48:05 | <afidegnum> | ok, let me be practicing a little with it to see where it will lead me |
| 07:49:44 | <dminuoso> | afidegnum: To connect to Franciman, this is just interface polymorphism, where you say "Ill work with any Semigroup `a`". And indeed, the implementor of that thing can use the methods defined in `a` (because it's known that the caller/user can only pick a type for `a` for which an instance Semigroup exisdts) |
| 07:50:51 | <afidegnum> | does it means it's a class that support method overloading ? |
| 07:51:01 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 07:51:09 | <dminuoso> | The term class is meant almost, but not quite, entirely unlike Java classes. |
| 07:51:24 | <afidegnum> | ok |
| 07:51:35 | <dminuoso> | Think of `class` as a synonym of `set` in the mathematic sense, perhaps. It's a "bunch/set/collection of types" satisfying a common interface. |
| 07:51:47 | <dminuoso> | And an "instance" declares that a particular type be a member of that "bunch/set/collection" |
| 07:52:21 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 07:52:25 | <dminuoso> | And a class constraint "C a => ..." demands that the callers/users choice for `a` must be a member/part of that bunch/set/collection" |
| 07:52:25 | <afidegnum> | oh, ok, the light is getting clearer now :) |
| 07:53:43 | → | aqd joins (~aqd@87-92-163-238.rev.dnainternet.fi) |
| 07:57:05 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 07:57:26 | → | Varis joins (~Tadas@unaffiliated/varis) |
| 07:58:01 | <afidegnum> | can you give me a hint, how do i use haskell to generate code in other languages? Rust i.e ? I have been able to use snippet templates with elisp, but faced few challenges along the way in term of dynamically selecting some fields to generate codes with. |
| 07:59:14 | <dminuoso> | Im stunned at how limited go interfaces are. |
| 08:00:01 | <afidegnum> | I could say go is not much a perfect language, i would call it a binary version of python :) |
| 08:00:58 | <dminuoso> | Well, go is a more sane version of C at the very least. |
| 08:01:43 | <afidegnum> | yes, the use of pointers were more clearer while i was coding in go than C/C++ |
| 08:02:54 | <dminuoso> | Well, Im rather talking about the memory safety here. Barely a day goes by where we dont have to apply critical patches because sprintf was forced onto us. |
| 08:03:24 | <afidegnum> | oh ok |
| 08:03:32 | <dminuoso> | If we just removed sprintf from our c libraries, we'd fix 70% of CVEs in one swoop. |
| 08:03:35 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 08:03:48 | <afidegnum> | i like that, |
| 08:04:03 | <dminuoso> | Or just plain buffer overruns. |
| 08:04:52 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Remote host closed the connection) |
| 08:05:20 | → | Yumasi joins (~guillaume@2a01:e0a:5cb:4430:b7bd:1d78:9a4c:6909) |
| 08:05:21 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
| 08:07:47 | → | hiroaki_ joins (~hiroaki@2a02:8108:8c40:2bb8:4e81:bfc6:428b:4821) |
| 08:08:28 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 08:10:13 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 08:10:55 | × | Forlorn quits (~Forlorn@unaffiliated/forlorn) (Quit: Lost terminal) |
| 08:11:49 | → | Forlorn joins (~Forlorn@unaffiliated/forlorn) |
| 08:12:16 | → | chele joins (~chele@ip5b40237d.dynamic.kabel-deutschland.de) |
| 08:13:01 | × | _xor quits (~xor@74.215.46.133) (Quit: brb) |
| 08:13:14 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 08:13:45 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
| 08:14:13 | → | danza joins (~francesco@151.53.76.37) |
| 08:14:26 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds) |
| 08:14:42 | → | kuribas joins (~user@ptr-25vy0ia1ougr5zd5t67.18120a2.ip6.access.telenet.be) |
| 08:14:44 | → | bahamas joins (~lucian@unaffiliated/bahamas) |
| 08:15:27 | <bahamas> | anyone know why this page is under Extensions, even though it doesn't mention any extensions that need to be enabled? https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/infix_tycons.html |
| 08:15:32 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 08:16:14 | → | gioyik_ joins (~gioyik@gateway/tor-sasl/gioyik) |
| 08:16:19 | <bahamas> | I guess it's related to TypeOperators, but that's covered on a different page |
| 08:17:46 | × | gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 268 seconds) |
| 08:19:56 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
| 08:19:58 | → | LKoen joins (~LKoen@252.248.88.92.rev.sfr.net) |
| 08:21:53 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 08:22:49 | <dminuoso> | bahamas: Presumably because infix type constructors are not standard Haskell? |
| 08:22:57 | <dminuoso> | GHC has a bunch of extensions that are always on |
| 08:23:22 | <dminuoso> | `Identifiers are lexically distinguished into two namespaces (Section 1.4): those that begin with a lowercaseletter (variable identifiers) and those that begin with an upper-case letter (constructor identifiers)` |
| 08:25:06 | <Franciman> | dminuoso, do I need to enable an extension to code in Haskell2010? |
| 08:26:10 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 08:26:32 | <bahamas> | dminuoso: I guess I was wondering why that section wasn't in the page that covers TypeOperators, since it's only valid when TypeOperators is enabled, right? but maybe the author(s) decided it's more readable to put it on its own page |
| 08:27:13 | <dminuoso> | Franciman: You need a different compiler, if you want that. |
| 08:27:34 | <dminuoso> | There's things like altered typeclass hierarchies that you cant trivially fix |
| 08:27:56 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 260 seconds) |
| 08:28:40 | × | unlink2 quits (~unlink2@p200300ebcf0faf0012aa3378b7c33d3b.dip0.t-ipconnect.de) (Quit: Leaving) |
| 08:29:37 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 08:30:16 | → | guest222` joins (~user@61.148.245.136) |
| 08:30:34 | → | acidjnk_new joins (~acidjnk@p200300d0c7390952fca35b4a28487713.dip0.t-ipconnect.de) |
| 08:30:45 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 08:32:03 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 08:34:29 | × | guest222 quits (~user@49.5.6.87) (Ping timeout: 265 seconds) |
| 08:35:31 | × | LKoen quits (~LKoen@252.248.88.92.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
| 08:35:34 | × | gioyik_ quits (~gioyik@gateway/tor-sasl/gioyik) (Quit: WeeChat 3.0) |
| 08:35:57 | → | kritzefitz joins (~kritzefit@fw-front.credativ.com) |
| 08:36:17 | → | knupfer joins (~Thunderbi@200116b82ce9b8005df4752026caea5f.dip.versatel-1u1.de) |
| 08:36:45 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1) |
| 08:37:37 | → | borne joins (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb) |
| 08:39:28 | → | _xor joins (~xor@74.215.46.133) |
| 08:40:48 | → | stree joins (~stree@68.36.8.116) |
| 08:42:04 | × | zhulikas_ quits (~derp@hmm.wantstofly.org) (Quit: zhulikas_) |
| 08:42:21 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 08:43:08 | × | vchlup quits (~vchlup@nat.brnet.cz) (Quit: Leaving) |
| 08:46:53 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 08:47:59 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
| 08:48:07 | → | sh9 joins (~sh9@softbank060116136158.bbtec.net) |
| 08:50:34 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 08:50:53 | → | Aquazi joins (uid312403@gateway/web/irccloud.com/x-emqhyvlnnsxogtux) |
| 08:51:07 | → | michalz joins (~user@185.246.204.61) |
| 08:51:16 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 08:51:25 | <zmagii> | Is there a partition-of-a-set object in Haskell? |
| 08:52:09 | × | Orbstheorem quits (~roosember@hellendaal.orbstheorem.ch) (Quit: WeeChat 2.3) |
| 08:54:14 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 08:54:32 | × | jneira quits (501e6551@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.101.81) (Ping timeout: 260 seconds) |
| 08:55:07 | <zmagii> | (X,S) where U(S) = X and each s in S is disjoint to the rest. |
| 08:55:23 | <Franciman> | thanks dminuoso |
| 08:55:36 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 272 seconds) |
| 08:57:36 | <dminuoso> | zmagii: Are you, perhaps, looking for https://hackage.haskell.org/package/containers-0.6.4.1/docs/Data-IntSet.html#v:partition ? |
| 08:57:55 | <dminuoso> | (Versions for all the other container types exist) |
| 08:59:42 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 09:00:06 | × | ichor[m] quits (hakonmatri@gateway/shell/matrix.org/x-saaqofiwyljfphil) (Quit: Idle for 30+ days) |
| 09:00:16 | × | doct0rhu[m] quits (doct0rhumo@gateway/shell/matrix.org/x-adqjzaenstckgbzs) (Quit: Idle for 30+ days) |
| 09:00:43 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 09:01:29 | → | Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck) |
| 09:03:57 | → | kafl joins (~kafl@unaffiliated/kafl) |
| 09:04:07 | <zmagii> | dminuoso: LOL, no, why does everyone seem to want to do that. |
| 09:04:12 | → | syd joins (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) |
| 09:06:18 | × | chaosagent quits (~chaosagen@217.146.82.202) (Remote host closed the connection) |
| 09:06:31 | × | pavonia^\_^\ quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 09:06:50 | <zmagii> | It should be something like Data.partitionOnSet, if at all there is such a thing. |
| 09:06:59 | <Uniaika> | thank glguy for the global notice |
| 09:08:24 | <zmagii> | I think the confusion about subsets is that a subset is a set; this view is distorted because a subset insn't actually a set. When you view subobjects and quotient objects appropriately, then a partition is at the same level and importance as a subset. |
| 09:09:09 | <zmagii> | So, a subset is (X,S) and a partition is (X,E). S is usually an injective function; E is usually a surjective function. |
| 09:10:07 | guest222` | is now known as guest222 |
| 09:10:54 | × | Chai-T-Rex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection) |
| 09:11:15 | → | Chai-T-Rex joins (~ChaiTRex@gateway/tor-sasl/chaitrex) |
| 09:13:53 | × | Chai-T-Rex quits (~ChaiTRex@gateway/tor-sasl/chaitrex) (Remote host closed the connection) |
| 09:14:15 | → | Chai-T-Rex joins (~ChaiTRex@gateway/tor-sasl/chaitrex) |
| 09:15:00 | <dminuoso> | zmagii: ah, I see. |
| 09:17:01 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c:c0c2:6fb4:8104:9592) |
| 09:17:04 | → | hendursa1 joins (~weechat@gateway/tor-sasl/hendursaga) |
| 09:17:42 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 09:18:12 | × | hendursaga quits (~weechat@gateway/tor-sasl/hendursaga) (Ping timeout: 268 seconds) |
| 09:18:28 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 09:22:02 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Remote host closed the connection) |
| 09:22:05 | → | Stephnix joins (~Stephnix@195.140.213.38) |
| 09:23:56 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 09:26:41 | <tromp> | i have a line of code "cnts <- mapM showcount diagrams" that produced a list of Ints (showcount maps to IO Int). what's the simplest way to get the sum instead? |
| 09:27:41 | <Taneb> | sumCnts <- sum <$> mapM showcount diagrams? |
| 09:28:30 | → | leo___ joins (~leo@cpc96810-rdng27-2-0-cust409.15-3.cable.virginm.net) |
| 09:28:33 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 246 seconds) |
| 09:28:35 | × | hirc quits (3dded63f@61-222-214-63.HINET-IP.hinet.net) (Quit: Connection closed) |
| 09:29:36 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 09:30:18 | sepples_ | is now known as sepples |
| 09:30:24 | <tromp> | thanks, Taneb! |
| 09:30:44 | × | gitgood quits (~gitgood@80-44-13-166.dynamic.dsl.as9105.com) (Remote host closed the connection) |
| 09:30:52 | × | knupfer quits (~Thunderbi@200116b82ce9b8005df4752026caea5f.dip.versatel-1u1.de) (Ping timeout: 260 seconds) |
| 09:31:48 | <dminuoso> | foldMapM would be a cute solution too, if we had it |
| 09:32:24 | → | gitgood joins (~gitgood@80-44-13-166.dynamic.dsl.as9105.com) |
| 09:32:33 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 09:32:53 | <dminuoso> | % :t foldMapM |
| 09:32:53 | <yahb> | dminuoso: (Monad m, Monoid b, Foldable t) => (a -> m b) -> t a -> m b |
| 09:34:11 | → | idhugo_ joins (~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) |
| 09:34:35 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 09:37:00 | × | idhugo__ quits (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Ping timeout: 260 seconds) |
| 09:37:28 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 09:38:35 | <Taneb> | Doesn't that just need Applicative? |
| 09:39:11 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 09:40:42 | <edwardk> | TIL java has had support for strictfp all along. |
| 09:42:53 | edwardk | dances. Now I have a version of IO that can hold values of different RuntimeReps |
| 09:43:08 | <edwardk> | the main headache is figuring out how to hang a nice 'Functor' and 'Monad' equivalent off it. |
| 09:43:30 | <Franciman> | can you define strictfp? |
| 09:43:40 | <edwardk> | Franciman: its a stupid joke https://en.wikipedia.org/wiki/Strictfp |
| 09:43:42 | <tomsmeding> | Taneb: :t \f -> fmap fold . traverse f |
| 09:43:46 | <tomsmeding> | :t \f -> fmap fold . traverse f |
| 09:43:48 | <lambdabot> | (Monoid b, Traversable t, Applicative f) => (a -> f b) -> t a -> f b |
| 09:43:54 | <Franciman> | :P |
| 09:43:55 | <Franciman> | thank you |
| 09:44:07 | → | m0rphism1 joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 09:44:14 | edk_ | is now known as e |
| 09:44:14 | <edwardk> | https://twitter.com/viktorklang/status/478096781855973376 |
| 09:44:36 | <Franciman> | ahah |
| 09:44:57 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-kbqvtlxgpvjeokgb) (Quit: Connection closed for inactivity) |
| 09:45:31 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 09:45:36 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 09:45:42 | <tomsmeding> | oh hm that requires Traversable, more than Foldable |
| 09:46:03 | <tomsmeding> | but maybe that's the whole point, you either need Traversable or Monad? |
| 09:46:25 | <edwardk> | class Functor (f :: forall (r :: RuntimeRep). TYPE r -> TYPE s) where |
| 09:46:30 | <edwardk> | this is the future =) |
| 09:46:34 | <tomsmeding> | beautiful |
| 09:47:09 | <Taneb> | :t \f -> getAp . foldMap (Ap . f) |
| 09:47:10 | <lambdabot> | forall k (t :: * -> *) (f :: k -> *) (a1 :: k) a2. (Foldable t, Monoid (Ap f a1)) => (a2 -> f a1) -> t a2 -> f a1 |
| 09:47:19 | <Franciman> | : id |
| 09:47:22 | <Franciman> | :t id |
| 09:47:24 | <lambdabot> | a -> a |
| 09:47:24 | <Taneb> | I'm not sure that's the right ap |
| 09:47:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:48:14 | <Taneb> | It should be :: (Foldable t, Applicative f, Monoid m) => (a -> f m) -> t a -> f m |
| 09:48:29 | <edwardk> | :t \f -> Data.Monoid.getAp . foldMap (Data.Monoid.Ap . f) |
| 09:48:31 | <lambdabot> | forall k (t :: * -> *) (f :: k -> *) (a1 :: k) a2. (Foldable t, Monoid (Ap f a1)) => (a2 -> f a1) -> t a2 -> f a1 |
| 09:48:42 | <edwardk> | weird that isn't simplifying |
| 09:48:49 | <tomsmeding> | we have 'instance (Applicative f, Monoid a) => Monoid (Ap f a)', so should work |
| 09:49:56 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds) |
| 09:50:51 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 265 seconds) |
| 09:50:58 | × | tomsmeding quits (~tomsmedin@tomsmeding.com) (Quit: ZNC 1.8.2 - https://znc.in) |
| 09:51:05 | → | timCF joins (~i.tkachuk@m91-129-99-43.cust.tele2.ee) |
| 09:51:23 | → | BENICHN joins (~BENICHN@2a02-842a-02b8-e801-e055-7050-fee9-2706.rev.sfr.net) |
| 09:51:55 | → | tomsmeding joins (~tomsmedin@tomsmeding.com) |
| 09:53:01 | → | fendor joins (~fendor@178.165.129.157.wireless.dyn.drei.com) |
| 09:57:09 | → | [tby] joins (~tby@193.234.28.91) |
| 09:57:10 | → | Orbstheorem joins (~roosember@hellendaal.orbstheorem.ch) |
| 09:57:43 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 09:57:59 | × | timCF quits (~i.tkachuk@m91-129-99-43.cust.tele2.ee) (Quit: leaving) |
| 09:58:16 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 09:58:26 | × | vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Quit: ZNC - https://znc.in) |
| 09:58:42 | → | vgtw joins (~vgtw@gateway/tor-sasl/vgtw) |
| 09:58:56 | × | tby quits (~tby@unaffiliated/tby) (Ping timeout: 260 seconds) |
| 10:00:36 | → | juri_ joins (~juri@178.63.35.222) |
| 10:00:45 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 10:01:49 | × | BENICHN quits (~BENICHN@2a02-842a-02b8-e801-e055-7050-fee9-2706.rev.sfr.net) (Quit: Quit) |
| 10:02:03 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 10:02:27 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 265 seconds) |
| 10:03:02 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 10:05:04 | → | cgfbee joins (~bot@oc1.itim-cj.ro) |
| 10:05:34 | → | pera joins (~pera@unaffiliated/pera) |
| 10:07:20 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 10:11:17 | <dminuoso> | Taneb: Monad allows us to do this in one swoop |
| 10:11:53 | <dminuoso> | % foldMapM f xs = foldr go pure xs mempty where go x r z = f x >>= \y -> r $! z <> y |
| 10:11:53 | <yahb> | dminuoso: |
| 10:11:57 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 264 seconds) |
| 10:12:07 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@184.22.159.161) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 10:12:07 | <dminuoso> | Im not quite sure whether you can do this as effectively with just applicative |
| 10:13:39 | <dminuoso> | Taneb: Oh and the type looks right. Think its just polykinds getting in the way |
| 10:13:43 | <dminuoso> | % :set -XNoPolykinds |
| 10:13:44 | <yahb> | dminuoso: Some flags have not been recognized: -XNoPolykinds |
| 10:13:57 | <dminuoso> | % :set -XNoPolyKinds |
| 10:13:57 | <yahb> | dminuoso: |
| 10:14:02 | <dminuoso> | % :t \f -> getAp . foldMap (Ap . f) |
| 10:14:02 | <yahb> | dminuoso: (Foldable t, Applicative f, Monoid a1) => (a2 -> f a1) -> t a2 -> f a1 |
| 10:14:44 | <dminuoso> | Not sure how this works with respect to lazyness |
| 10:17:14 | → | timCF joins (~i.tkachuk@m91-129-99-43.cust.tele2.ee) |
| 10:18:01 | <edwardk> | dminuoso: ah! |
| 10:19:44 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 10:20:10 | <tomsmeding> | :t \f -> foldr (\x acc -> liftA2 (<>) (f x) acc) (pure mempty) |
| 10:20:12 | <lambdabot> | (Foldable t1, Applicative f, Monoid c) => (t2 -> f c) -> t1 t2 -> f c |
| 10:20:20 | <tomsmeding> | that's what the Ap solution expands to |
| 10:20:38 | <tomsmeding> | if you unwrap the newtype |
| 10:21:00 | <tomsmeding> | and assume foldMap has been implemented in the default way using foldr |
| 10:21:04 | <timCF> | Hello! Do anybody know any book similar to "Modern compiler implementation in ML" but where compiler is built for functional language? This book itself is ok, as well as ML code examples are quite readable, but Tiger language which is used as example language for building compiler for is quite procedural. For educational purposes it's ok, but I'll probably enjoy building functional compiler much more |
| 10:23:36 | × | syd quits (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 10:24:36 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 10:25:27 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 10:26:11 | → | wz1000 joins (~wz1000@static.11.113.47.78.clients.your-server.de) |
| 10:26:46 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) |
| 10:26:55 | <Franciman> | does anybody do logic programming with haskell? |
| 10:30:14 | <bahamas> | timCF: maybe this helps https://github.com/natefaubion/example-functional-compiler |
| 10:30:27 | <bahamas> | it doesn't have a companion book though |
| 10:30:29 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 10:31:06 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 10:32:42 | <timCF> | bahamas: thanks! |
| 10:33:26 | <tomsmeding> | timCF: this also exists; it's for implementation in Miranda and is relatively old, but it should translate fairly easily to Haskell https://www.microsoft.com/en-us/research/publication/implementing-functional-languages-a-tutorial/ |
| 10:33:43 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 10:34:14 | × | lyxia quits (~lyxia@poisson.chat) (Ping timeout: 256 seconds) |
| 10:36:11 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 10:36:46 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 10:36:53 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 10:40:07 | × | ph88 quits (~ph88@2a02:8109:9e00:7e5c:c0c2:6fb4:8104:9592) (Remote host closed the connection) |
| 10:40:56 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 240 seconds) |
| 10:41:02 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 10:41:36 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 10:42:19 | × | nek0 quits (~nek0@mail.nek0.eu) (Remote host closed the connection) |
| 10:43:55 | <timCF> | tomsmeding: cool, thanks! |
| 10:47:45 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 10:48:58 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 272 seconds) |
| 10:49:49 | × | Stanley00 quits (~stanley00@unaffiliated/stanley00) () |
| 10:53:32 | × | Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Remote host closed the connection) |
| 10:54:00 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 10:54:00 | × | bahamas quits (~lucian@unaffiliated/bahamas) (Quit: leaving) |
| 10:54:04 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 10:54:09 | → | Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck) |
| 10:55:25 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 10:55:37 | → | shad0w_ joins (31249ccd@49.36.156.205) |
| 10:55:42 | → | arpl joins (~ARPL@84-107-171-239.cable.dynamic.v4.ziggo.nl) |
| 10:55:51 | <shad0w_> | hi all! |
| 10:55:55 | × | kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection) |
| 10:56:07 | <shad0w_> | can someone please explain me the Record function syntax? |
| 10:56:27 | × | danso quits (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) (Ping timeout: 272 seconds) |
| 10:56:41 | <shad0w_> | `newtype MaybeT m a = MaybeT { runMaybeT :: m (Maybe a) }` |
| 10:56:59 | <shad0w_> | why is it in there, where do we actually define it ? |
| 10:57:43 | × | joecordingley quits (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) (Ping timeout: 272 seconds) |
| 10:58:14 | × | Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Client Quit) |
| 10:58:50 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Ping timeout: 264 seconds) |
| 10:59:07 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 10:59:13 | → | kritzefitz joins (~kritzefit@fw-front.credativ.com) |
| 10:59:30 | <arahael> | shad0w_: That's the definition. Why is "what" in there? |
| 10:59:54 | → | nek0 joins (~nek0@mail.nek0.eu) |
| 11:00:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 11:00:44 | → | thc202 joins (~thc202@unaffiliated/thc202) |
| 11:00:51 | <shad0w_> | arahael: ? |
| 11:01:22 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:01:22 | <arahael> | shad0w_: What is the "it" you're referring to? |
| 11:01:34 | <shad0w_> | the function runMaybeT |
| 11:01:51 | → | stree joins (~stree@68.36.8.116) |
| 11:02:01 | <arahael> | shad0w_: Ah, you've only defined the type there, you still have to provide it a function when you create it. |
| 11:02:14 | <shad0w_> | it's a type definition. i understand the normal record syntax. |
| 11:02:14 | <shad0w_> | ` data A = A {name :: String, age: Int }` |
| 11:02:29 | → | danso joins (~dan@2001:1970:52e7:d000:96b8:6dff:feb3:c009) |
| 11:02:39 | <shad0w_> | that tell's me A is a type constructor with it's paramters named for convinience. |
| 11:02:44 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 11:02:48 | raoul90 | is now known as raoul |
| 11:02:59 | <arahael> | And you understand `data A a = A { name: :: a, age:: Int }`, as well? |
| 11:03:12 | <shad0w_> | sure |
| 11:03:32 | <arahael> | shad0w_: `data A a = A { name :: Maybe a, age:: Int}` as well? |
| 11:03:49 | <shad0w_> | i guess |
| 11:04:12 | <arahael> | shad0w_: `data A a = A { name :: Maybe (Maybe a), age :: Int}`? |
| 11:04:32 | <mawk> | où es-tu??? |
| 11:05:30 | <shad0w_> | tilts head. i guess ?? the first arguments is either `Just ( Just something)` or `Just (Nothing)` or simply `Nothing` ? |
| 11:05:31 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 11:06:16 | ← | PietPtr parts (~pieter@unaffiliated/pietdagamer) ("WeeChat 2.3") |
| 11:06:16 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 11:06:37 | → | syd joins (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) |
| 11:07:21 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:08:31 | <shad0w_> | arahael: |
| 11:08:38 | → | ddellacosta joins (~ddellacos@86.106.143.137) |
| 11:09:06 | <yushyin> | shad0w_: you are aware that in your `data A = A { name :: String, age :: Int }' haskell provides you with two functions also called field selectors `name :: A -> String' and `age :: A -> Int' same applies to the runMaybeT |
| 11:09:36 | <arahael> | shad0w_: Indeed. |
| 11:10:27 | <shad0w_> | yushyin: vaguely. i think that's the reason record names need to be unique right? |
| 11:10:54 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 11:11:06 | <yushyin> | shad0w_: exactly |
| 11:11:53 | <idnar> | `data A = A {name :: String, age: Int }` creates selector functions `name :: A -> String` and `age :: A -> Int`; similarly `newtype MaybeT m a = MaybeT { runMaybeT :: m (Maybe a) }` creates `runMaybeT :: MaybeT m a -> m (Maybe a)` |
| 11:12:22 | <shad0w_> | idnar: we could do that outside too right ? |
| 11:12:29 | <shad0w_> | like a normal usual function ? |
| 11:12:36 | × | ddellacosta quits (~ddellacos@86.106.143.137) (Ping timeout: 240 seconds) |
| 11:12:37 | <idnar> | shad0w_: yes |
| 11:12:41 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 11:12:58 | <shad0w_> | why do we then paramaterize the data constructor with it ? |
| 11:13:01 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 11:13:36 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:13:37 | → | DavidEichmann joins (~david@234.109.45.217.dyn.plus.net) |
| 11:13:40 | <shad0w_> | pardon the noobness : P |
| 11:14:58 | <olligobber> | so I'm getting `Illegal tuple section', but my only tuple section is `pure $ TH.TupE $ replicate n Nothing', which is basically (,) or (,,) |
| 11:15:56 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 11:15:58 | <idnar> | shad0w_: `newtype MaybeT m a = MaybeT (m (Maybe a)); runMaybeT (MaybeT a) = a` is the same but longer |
| 11:16:50 | <olligobber> | I guess I should use `varE $ mkName $ "(" <> replicate (n-1) ',' <> ")"' instead? |
| 11:17:09 | <shad0w_> | i mean, if now we pattern match on a MaybeT value. won't we also match `runMaybeT` |
| 11:17:20 | <shad0w_> | everytime? |
| 11:17:22 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Remote host closed the connection) |
| 11:17:32 | <shad0w_> | idnar: |
| 11:17:44 | <shad0w_> | i keep forgetting to tag lol. |
| 11:19:04 | <olligobber> | nope, then I get `Illegal variable name: ‘(,)’' |
| 11:19:43 | × | stampirl quits (~stampirl@195-154-112-77.rev.poneytelecom.eu) (Quit: WeeChat 2.3) |
| 11:20:01 | <int-e> | olligobber: try conE instead? |
| 11:20:07 | <olligobber> | oh, I use tupleDataName n |
| 11:20:27 | <idnar> | shad0w_: yes, but `runMaybeT foo` is nicer than `case foo of MaybeT x -> x` |
| 11:20:38 | <int-e> | I was going to say that there may be something special for tuple constructors |
| 11:21:17 | <olligobber> | hmm, still an error |
| 11:21:28 | <olligobber> | how is conE different from varE? |
| 11:22:28 | <int-e> | olligobber: conE (tupleDataName 2) should work |
| 11:22:29 | <olligobber> | oh its for constructors |
| 11:22:57 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 11:24:14 | <int-e> | if the constructor is fully applied, use `tupE` |
| 11:24:14 | <olligobber> | oh god now there's other errors |
| 11:24:19 | <olligobber> | it is not |
| 11:24:20 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 11:25:11 | <int-e> | now there's other errors ==> very often that's progress :) |
| 11:25:23 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:25:32 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 11:26:05 | <shad0w_> | idnar: i see. |
| 11:26:09 | <shad0w_> | Thanks! |
| 11:26:40 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 11:26:44 | <shad0w_> | but we have to pass / define a function for runMaybeT anyway right ? |
| 11:27:12 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 246 seconds) |
| 11:27:36 | <yushyin> | the record syntax defines it |
| 11:27:56 | <shad0w_> | doesn't it declare it? |
| 11:28:06 | <shad0w_> | like that's just a type definition |
| 11:28:30 | <yushyin> | and also a field selector function |
| 11:28:38 | <shad0w_> | a wut |
| 11:29:45 | → | vent joins (~vent@185.62.190.213) |
| 11:29:45 | <yushyin> | if you use the record syntax a function `runMaybeT :: MaybeT m a -> m (Maybe a)' will be created for you |
| 11:31:22 | <shad0w_> | like it automatically figures out what the function should be based on the type sig? |
| 11:31:24 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 11:31:57 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 11:32:43 | <NieDzejkob_> | like, the field of the record is called runMaybeT |
| 11:32:47 | <yushyin> | yes, the only thing it has to do is to pattern match on MaybeT and return you the m (Maybe a) |
| 11:32:50 | <NieDzejkob_> | so the function runMaybeT is the accessor |
| 11:33:21 | <shad0w_> | i think i get it now |
| 11:33:39 | <NieDzejkob_> | are there any clever not-too-painful ways of passing source locations in an AST ADT? |
| 11:33:53 | <shad0w_> | is the mental model of seeing records as objects alright? |
| 11:34:10 | <shad0w_> | like javascript objects. json syntax objects |
| 11:34:29 | <NieDzejkob_> | objects as in OOP, not really. But "thing that holds data" works |
| 11:34:41 | <NieDzejkob_> | it's like a tuple that had its parts named |
| 11:34:45 | <shad0w_> | more like key value pairs |
| 11:34:59 | <shad0w_> | ah, like named tuples |
| 11:35:18 | <NieDzejkob_> | well, javascript's objects are more like a Map, in that the set of keys is decided at runtime |
| 11:35:21 | × | arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 264 seconds) |
| 11:35:41 | <shad0w_> | im running away from javascript |
| 11:35:45 | <shad0w_> | i need new mental models |
| 11:36:14 | <NieDzejkob_> | well in a language as dynamically typed as javascript you're not gonna find an exact equivalent :D |
| 11:36:24 | <merijn> | NieDzejkob_: "add a field to every node in your AST"? :p |
| 11:36:37 | <shad0w_> | thanks guys. |
| 11:36:41 | <shad0w_> | see you folks around. |
| 11:36:52 | × | shad0w_ quits (31249ccd@49.36.156.205) (Quit: Connection closed) |
| 11:37:12 | <NieDzejkob_> | merijn: yeah... |
| 11:37:59 | <NieDzejkob_> | I mostly want to keep locations in the front-end, and then I do lots of manipulations and generation of new AST terms that don't need locations anymore. Is it possible to get a type with and without location from the same definition? |
| 11:37:59 | → | arw joins (~arw@impulse.informatik.uni-erlangen.de) |
| 11:38:41 | <NieDzejkob_> | like, I do Expr Type for fully type-inferred expressions and Expr (Maybe Type) for ones without the annotations, like they come from the parser |
| 11:38:57 | <merijn> | NieDzejkob_: "data AST a = ... " "type SourceAST = AST SourceSpan; type SourcelessAST = AST ()"? :p |
| 11:39:18 | <NieDzejkob_> | I guess I could use a unit type, but then the pattern matching/creating nodes will need to specify () everywhere |
| 11:39:36 | <merijn> | NieDzejkob_: You can use pattern synonyms |
| 11:39:58 | <merijn> | Just specify pattern synonyms that always include () for the SourcelessAST version |
| 11:40:20 | → | forgottenone joins (~forgotten@176.42.20.136) |
| 11:42:52 | → | danvet_ joins (~danvet@212-51-149-181.fiber7.init7.net) |
| 11:44:38 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 11:47:31 | × | finn_elija quits (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) (Remote host closed the connection) |
| 11:47:49 | × | arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 265 seconds) |
| 11:47:53 | → | finn_elija joins (~finn_elij@gateway/tor-sasl/finnelija/x-67402716) |
| 11:48:36 | → | gzj joins (~gzj@unaffiliated/gzj) |
| 11:49:32 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 11:57:23 | × | ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
| 11:57:46 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 11:58:41 | × | timCF quits (~i.tkachuk@m91-129-99-43.cust.tele2.ee) (Quit: leaving) |
| 12:01:37 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 12:03:14 | → | arw joins (~arw@impulse.informatik.uni-erlangen.de) |
| 12:06:24 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 12:06:40 | → | minoru_shiraeesh joins (~shiraeesh@5.101.59.211) |
| 12:07:48 | × | arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 246 seconds) |
| 12:10:47 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Read error: Connection reset by peer) |
| 12:13:56 | → | Sheilong joins (uid293653@gateway/web/irccloud.com/x-xqiuutmfxqpmwhnb) |
| 12:15:17 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 12:17:02 | <NieDzejkob_> | has somebody extracted Elm's error report rendering to a standalone library? |
| 12:17:57 | × | zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving) |
| 12:18:01 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 12:18:45 | × | kafl quits (~kafl@unaffiliated/kafl) (Ping timeout: 265 seconds) |
| 12:19:15 | → | zaquest joins (~notzaques@5.128.210.178) |
| 12:19:45 | → | ddellacosta joins (~ddellacos@86.106.143.72) |
| 12:20:08 | → | GZJ0X_ joins (~gzj@unaffiliated/gzj) |
| 12:20:13 | → | kafl joins (~kafl@unaffiliated/kafl) |
| 12:21:42 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:6d81:661e:8f9e:1f6f) |
| 12:22:45 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 12:23:38 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 12:24:05 | × | ddellacosta quits (~ddellacos@86.106.143.72) (Ping timeout: 240 seconds) |
| 12:25:03 | → | knupfer joins (~Thunderbi@dynamic-046-114-146-074.46.114.pool.telefonica.de) |
| 12:25:54 | × | knupfer quits (~Thunderbi@dynamic-046-114-146-074.46.114.pool.telefonica.de) (Client Quit) |
| 12:26:13 | → | knupfer joins (~Thunderbi@dynamic-046-114-146-074.46.114.pool.telefonica.de) |
| 12:27:17 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 12:27:26 | <olligobber> | I think I found a bug with how template haskell works |
| 12:27:54 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 12:28:19 | × | ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
| 12:28:32 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 12:28:37 | × | plutoniix quits (~q@184.82.193.59) (Quit: Leaving) |
| 12:29:11 | <olligobber> | If you use some operator in a code literal, such as [| f $ a +++ b |] without importing +++ in the file with the template, it assumes things about its associativity, in particular it assumes you mean (f $ a) +++ b |
| 12:29:22 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 12:29:23 | <olligobber> | I think instead it should error saying that +++ is not imported |
| 12:30:32 | <olligobber> | I mean precedence, not associativity |
| 12:31:43 | <merijn> | olligobber: How would it tell? |
| 12:31:56 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
| 12:32:06 | <olligobber> | I don't know how template haskell works, but I thought using other functions in a code literal required them to be imported |
| 12:33:08 | <merijn> | olligobber: Template Haskell generates an AST of Haskell code that gets inserted into the surrounding file and then after all TH splices have been replaced with the produced AST, the resulting code is compiled |
| 12:33:54 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 12:34:03 | <olligobber> | right, but in generating that AST it needs to know the precedence and associativity of the operators, right? |
| 12:34:44 | → | Tario joins (~Tario@201.192.165.173) |
| 12:35:00 | <merijn> | olligobber: Sure, but the quasi quoter [| turns "Haskell syntax into a Haskell AST", it does not do name resolution |
| 12:35:14 | poscat1 | is now known as poscat |
| 12:35:34 | <merijn> | I'm not sure whether that's supposed to work or not |
| 12:35:47 | <olligobber> | well if I import an operator, then [| |] will use the correct precedence and associativity |
| 12:35:55 | <merijn> | I'm pretty sure the [| quasi quoter only consider it's contents, not the outside |
| 12:36:01 | <olligobber> | but if I don't then [| |] just assumes those |
| 12:36:30 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 12:36:31 | <merijn> | olligobber: Well, what would you expect it to do instead? |
| 12:36:48 | <olligobber> | error when an operator is used and not imported |
| 12:37:43 | <olligobber> | or produce a warning at least |
| 12:37:44 | <merijn> | olligobber: tbh, that's probably an unrealistic expectation of TH |
| 12:38:01 | <merijn> | olligobber: Try what happens with [|| ||] (i.e. type TH) |
| 12:38:04 | <nshepperd2> | seems like a bit of a sharp edge if generating an AST without doing name resolution means the AST is associated wrong |
| 12:38:05 | <merijn> | s/type/typed |
| 12:38:18 | <merijn> | nshepperd2: It's not associated wrong, though |
| 12:38:37 | <olligobber> | it is? |
| 12:38:45 | <merijn> | nshepperd2: infixl 9 is the right fixity for unspecified things |
| 12:38:46 | <nshepperd2> | are you supposed to do name resolution later and reassociate it in code or something |
| 12:38:51 | → | bor0 joins (~boro@unaffiliated/boro/x-000000001) |
| 12:38:54 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 12:39:12 | <merijn> | nshepperd2: TH does not guarantee the produced code is valid |
| 12:39:33 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 264 seconds) |
| 12:40:19 | <olligobber> | wait, [|| is a thing?? |
| 12:40:45 | <merijn> | nshepperd2: Basically, the statement is "quasiquoter should fail if name resolution fails", but I don't think (I'm not sure) TH requires name resolution during the TH splice, I think (again, I don't remember the specification) late binding of names is a feature |
| 12:41:16 | <merijn> | Name resolution or late binding, pick one. |
| 12:41:20 | <olligobber> | if [|| does what I think it does, then I don't care how [| works |
| 12:41:47 | <merijn> | olligobber: Typed TH produced, well, typed TH splices which guarantee the resulting splice is type-correct |
| 12:42:10 | <olligobber> | and it does name resolution |
| 12:42:39 | <merijn> | typed TH happens significantly later in the compilation, so I expect it does, yes |
| 12:43:26 | <merijn> | but, uh, consult GHC user guide and/or TH paper to be sure :p |
| 12:43:49 | <nshepperd2> | that sounds like the answer is yes you're meant to manually reassociate the result of [| |] to match what you expect |
| 12:43:50 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:6d81:661e:8f9e:1f6f) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 12:44:21 | → | cur8or joins (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934) |
| 12:44:54 | × | mceier quits (~mceier@89-68-132-187.dynamic.chello.pl) (Ping timeout: 246 seconds) |
| 12:45:57 | → | mceier joins (~mceier@89-68-132-187.dynamic.chello.pl) |
| 12:46:04 | <merijn> | nshepperd2: Well, you're not necessarily meant to, but if [| |] is supposed to generate ASTs in the absence of unresolved names (which, afaict from the docs, it is), the only option when a name is not in scope is "use default fixity" |
| 12:46:13 | <olligobber> | I think using [|| instead of [| is the answer I'm looking for |
| 12:46:19 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 12:46:26 | <merijn> | nshepperd2: It boils down to "do you think late binding is a bug or a feature" |
| 12:47:16 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 12:48:40 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
| 12:50:21 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 12:50:29 | <merijn> | nshepperd2, olligobber: Consider the implications of: https://hackage.haskell.org/package/template-haskell-2.16.0.0/docs/Language-Haskell-TH.html#v:mkName and https://hackage.haskell.org/package/template-haskell-2.16.0.0/docs/Language-Haskell-TH.html#v:lookupTypeName |
| 12:50:48 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 12:51:21 | <olligobber> | oh fun a maybe |
| 12:51:28 | → | mp___ joins (~mp@hell.cx) |
| 12:51:41 | <merijn> | Basically, my comments about [| are basically extrapolation from the behaviour you'd get if you manually write something with an unbound name |
| 12:52:08 | <merijn> | That's why there's newName if you wanna guarantee no capturing |
| 12:52:35 | <merijn> | But TH splices with unbound names are "not a bug", and I extrapolate from that, that "quasiquoters with unbound names" are also "not a bug" |
| 12:52:47 | → | Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck) |
| 12:53:37 | × | cur8or quits (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934) (Ping timeout: 272 seconds) |
| 12:54:08 | <merijn> | otoh, I think Typed TH *can't* allow unbound names, because that, well, wouldn't be typesafe :p |
| 12:54:48 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 12:54:57 | × | knupfer quits (~Thunderbi@dynamic-046-114-146-074.46.114.pool.telefonica.de) (Read error: Connection reset by peer) |
| 12:55:00 | <olligobber> | yeah, that's one down side |
| 12:55:48 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 12:56:17 | <merijn> | Typed TH is critically underrated, tbh |
| 12:56:42 | <olligobber> | oh yeah, I'm switching all my TH to Typed TH now I know I can |
| 12:56:46 | <olligobber> | well, where possible |
| 12:57:11 | <merijn> | You can abuse it to smuggle logic from compile time to TH Haskell time with it :) |
| 12:57:57 | → | cur8or joins (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934) |
| 12:58:15 | <olligobber> | so now I have typed template haskell generating haskell code that generates typed lambda calculus |
| 12:58:26 | <olligobber> | this just got more meta |
| 12:58:51 | <olligobber> | wait it doesn't generate typed lambda calculus, those types are only there at compile time |
| 12:58:59 | <olligobber> | *haskell compile time |
| 12:59:05 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
| 13:00:13 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 13:00:17 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 13:01:15 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 13:01:20 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 13:03:19 | → | Deide joins (~Deide@217.155.19.23) |
| 13:03:26 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 13:03:29 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 13:04:30 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 13:04:34 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 13:05:09 | → | lyxia joins (~lyxia@poisson.chat) |
| 13:05:27 | × | cur8or quits (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934) (Ping timeout: 258 seconds) |
| 13:08:51 | → | arw joins (~arw@impulse.informatik.uni-erlangen.de) |
| 13:08:53 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 13:09:48 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 260 seconds) |
| 13:10:23 | → | son0p joins (~son0p@181.58.39.182) |
| 13:10:55 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection) |
| 13:12:49 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
| 13:13:04 | × | minoru_shiraeesh quits (~shiraeesh@5.101.59.211) (Ping timeout: 260 seconds) |
| 13:13:28 | × | arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 256 seconds) |
| 13:14:05 | → | da39a3ee5e6b4b0d joins (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) |
| 13:14:59 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 13:16:10 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
| 13:17:36 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 13:18:34 | × | arpl quits (~ARPL@84-107-171-239.cable.dynamic.v4.ziggo.nl) (Quit: Leaving.) |
| 13:19:37 | → | vyorkin joins (~vyorkin@91.193.176.30) |
| 13:20:09 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 13:20:48 | → | Tario joins (~Tario@201.192.165.173) |
| 13:22:41 | → | stree joins (~stree@68.36.8.116) |
| 13:24:15 | × | vyorkin quits (~vyorkin@91.193.176.30) (Client Quit) |
| 13:25:20 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Remote host closed the connection) |
| 13:26:36 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 13:26:36 | → | carlomagno joins (~cararell@148.87.23.13) |
| 13:27:33 | → | cur8or joins (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934) |
| 13:27:34 | × | Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1) |
| 13:28:19 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 13:31:00 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 13:31:47 | × | acidjnk_new quits (~acidjnk@p200300d0c7390952fca35b4a28487713.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 13:32:26 | × | xff0x quits (~xff0x@2001:1a81:525a:9700:3f22:5bb3:5062:204b) (Ping timeout: 240 seconds) |
| 13:32:29 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 13:32:34 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 13:33:38 | → | xff0x joins (~xff0x@2001:1a81:525a:9700:e2d:ed0e:1903:82db) |
| 13:34:05 | → | ClaudiusMaximus joins (~claude@191.123.199.146.dyn.plus.net) |
| 13:34:05 | × | ClaudiusMaximus quits (~claude@191.123.199.146.dyn.plus.net) (Changing host) |
| 13:34:05 | → | ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus) |
| 13:36:26 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds) |
| 13:36:41 | × | cur8or quits (~cur8or@2c0f:fbe1:3:17:bda5:e820:dbb3:5934) (Ping timeout: 272 seconds) |
| 13:37:16 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 256 seconds) |
| 13:37:24 | → | Pickchea joins (~private@unaffiliated/pickchea) |
| 13:39:04 | → | bergey joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 13:39:15 | → | motherfsck joins (~motherfsc@unaffiliated/motherfsck) |
| 13:42:11 | → | soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net) |
| 13:42:30 | → | minoru_shiraeesh joins (~shiraeesh@5.101.59.211) |
| 13:42:39 | → | krixec joins (~krixec@5.253.207.204) |
| 13:43:36 | × | raym quits (~ray@45.64.220.3) (Quit: leaving) |
| 13:46:51 | × | bergey quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 246 seconds) |
| 13:47:31 | × | son0p quits (~son0p@181.58.39.182) (Quit: Lost terminal) |
| 13:47:57 | × | ixlun quits (~user@213.205.241.202) (Ping timeout: 264 seconds) |
| 13:48:01 | → | bergey`` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 13:48:03 | × | krixec quits (~krixec@5.253.207.204) (Quit: WeeChat 3.0) |
| 13:48:31 | × | gzj quits (~gzj@unaffiliated/gzj) (Remote host closed the connection) |
| 13:48:55 | → | ep1ctetus joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 13:49:16 | × | GZJ0X_ quits (~gzj@unaffiliated/gzj) (Ping timeout: 240 seconds) |
| 13:50:46 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 13:52:00 | × | danvet_ quits (~danvet@212-51-149-181.fiber7.init7.net) (Ping timeout: 272 seconds) |
| 13:52:01 | <NieDzejkob_> | wait but if you use an undefined operator, it will error out after expansion anyway, won't it? |
| 13:53:25 | <merijn> | NieDzejkob_: Not if the expansion happens in a place where that operator *is* defined |
| 13:54:22 | <merijn> | NieDzejkob_: Consider TH code defined in module Foo which does not import +++, now that TH code is *called* in module Bar that *does* import +++ |
| 13:54:44 | → | son0p joins (~son0p@181.58.39.182) |
| 13:55:32 | × | bergey`` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 260 seconds) |
| 13:56:09 | × | soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Quit: Ping timeout (120 seconds)) |
| 13:59:49 | × | proteusguy quits (~proteusgu@cm-58-10-208-13.revip7.asianet.co.th) (Quit: Leaving) |
| 14:00:11 | → | proteusguy joins (~proteusgu@cm-58-10-208-13.revip7.asianet.co.th) |
| 14:01:33 | → | bergey joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 14:02:40 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 265 seconds) |
| 14:04:37 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 14:05:02 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 14:06:40 | → | acidjnk_new joins (~acidjnk@p200300d0c7390952fca35b4a28487713.dip0.t-ipconnect.de) |
| 14:06:40 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 14:07:01 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 265 seconds) |
| 14:08:50 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 14:09:04 | × | bor0 quits (~boro@unaffiliated/boro/x-000000001) (Quit: Leaving) |
| 14:09:07 | × | ubert quits (~Thunderbi@p200300ecdf25d926855ee11db97a074b.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 14:09:26 | → | ubert joins (~Thunderbi@p200300ecdf25d926e0d56ea876869bf6.dip0.t-ipconnect.de) |
| 14:09:34 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 14:10:00 | <edwardk> | I've also become a big fan of typed TH. |
| 14:10:14 | <Franciman> | mietek has been saying it for a long time |
| 14:10:28 | <Franciman> | macros must be typed too! |
| 14:10:31 | <Franciman> | I did not believe |
| 14:11:03 | <edwardk> | i've been a fan of being able to typecheck name usage in macros at the very least since Dave Herman's old work on that in scheme |
| 14:11:14 | → | dyeplexer joins (~lol@unaffiliated/terpin) |
| 14:11:21 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 264 seconds) |
| 14:11:33 | <edwardk> | the usecase of being able to judge whether two programs are alpha-equivalent without doing macro expansion, and being able to rename through macros is pretty damn useful. |
| 14:11:45 | <Franciman> | I think he does think that modal logic can help with code generation and macros |
| 14:11:48 | <Franciman> | but I don't know |
| 14:11:58 | <Franciman> | I like calling them magroz |
| 14:12:04 | <edwardk> | using a modal [] as a staging tool is handy. |
| 14:12:14 | <Franciman> | it is neat, yes! |
| 14:12:40 | <Franciman> | <edwardk> the usecase of being able to judge whether two programs are alpha-equivalent without doing macro expansion, and being able to rename through macros is pretty damn useful. <- how do you do it? |
| 14:12:45 | <edwardk> | i look at the unlifted code i'm writing right now, and 90% of this would melt away if we could just say that the runtime rep was a parameter that had to be partially evaluted before use |
| 14:12:45 | <Franciman> | ah types |
| 14:12:48 | <Franciman> | and names in types |
| 14:13:12 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 14:13:14 | <edwardk> | similarly being able to say masks for shuffles had to be staged would allow primops for those into the language cleanly |
| 14:13:52 | <edwardk> | (most assembly opcodes for shuffles in simd instructions have to be for a fixed shuffle mask) |
| 14:18:53 | <Franciman> | why is SIMD so attractive? |
| 14:19:03 | <merijn> | gots to go fast! |
| 14:19:04 | <Franciman> | _speed_ ? |
| 14:19:21 | <merijn> | Franciman: No: *purely functional* speed! |
| 14:19:31 | <Franciman> | how so |
| 14:19:47 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 14:20:42 | → | alx741 joins (~alx741@186.178.108.179) |
| 14:20:45 | <merijn> | "trivially from how SIMD works"? |
| 14:21:21 | <merijn> | As opposed to say, threading, which also gets concurrency involved |
| 14:21:59 | <Franciman> | neat |
| 14:22:20 | Franciman | does not know what SIMD |
| 14:22:21 | <kuribas> | you have CPU level concurrency |
| 14:22:35 | <merijn> | Franciman: SIMD = Single Instruction, Multiple Data |
| 14:22:43 | <kuribas> | you need to put instructions in the right order so they can use concurrency. |
| 14:22:45 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 14:22:47 | <dminuoso> | Franciman: Modern CPUs have specialized execution ports for SIMD . |
| 14:23:05 | <dminuoso> | (As opposed to something silly as macro op fusion) |
| 14:23:05 | <merijn> | Franciman: Basically, instead of, say, summing 8 integers one at a time, you get a special instruction that does 8 additions on 8 separate values at once |
| 14:23:32 | → | juri_ joins (~juri@178.63.35.222) |
| 14:24:14 | <nshepperd2> | SIMD lets you do 4 things at once without also having to decode and issue 4 instructions at once, that's not nothing |
| 14:24:17 | <Franciman> | this is cool! |
| 14:24:28 | <dminuoso> | Franciman: So these execution ports don't compute these in multiple steps, but they do them in parallel. |
| 14:24:51 | → | w2321 joins (~user@47.245.54.240) |
| 14:25:04 | <dminuoso> | Consider for instance, adding two (mathematicals) vectors together. |
| 14:25:19 | <merijn> | Franciman: https://hackage.haskell.org/package/ghc-prim-0.6.1/docs/GHC-Prim.html#g:33 |
| 14:25:39 | <dminuoso> | With SIMD, you can add say two 16-vector with a single instruction. |
| 14:25:53 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) |
| 14:25:59 | <dminuoso> | (assuming 8-bit numbers) |
| 14:26:17 | <dminuoso> | Which is much faster than the 16 single instructions you'd need otherwise |
| 14:26:37 | <merijn> | Well, it's not *that* simple, but yeah |
| 14:26:54 | <merijn> | For one, SIMD operations will downclock your CPU |
| 14:27:03 | <merijn> | so sporadically using them can kill your performance |
| 14:27:07 | <w2321> | getCC = callCC (\c -> return $ fix c) |
| 14:27:22 | <dminuoso> | (This improves instruction bandwidth, decoder buffer, instruction queue, decoder bottleneck, execution port starvation) |
| 14:27:23 | <w2321> | main = flip runContT return $ do { goto <- getCC; lift $ print "hello"; goto } |
| 14:27:44 | <dminuoso> | So on average, this can easily be more than just 16 times faster. |
| 14:27:53 | <w2321> | why this fixed-point can create a loop here? |
| 14:28:51 | <[exa]> | hm, is there some useful standalone c-- compiler, ideally suitable for being used as a backend without the rest of ghc? |
| 14:29:16 | → | nbloomf joins (~nbloomf@2600:1700:ad14:3020:6d81:661e:8f9e:1f6f) |
| 14:29:20 | <merijn> | [exa]: Note that GHC use Cmm, which a kinda custom dialect that diverged from C-- |
| 14:29:25 | <geekosaur> | not any more, I think. plus ghc's cmm kinda drifted away from c-- |
| 14:29:33 | <merijn> | [exa]: Also, no |
| 14:30:11 | <merijn> | [exa]: C-- was invented for similar reasons/goals as LLVM ASM, but they lost and C-- as a concept is basically dead |
| 14:30:20 | <[exa]> | guys c'mon don't tell me I'll need to touch llvm again :D |
| 14:30:36 | <merijn> | [exa]: Basically, yes |
| 14:31:14 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:6ca7:44bb:3dbb:61e5) (Ping timeout: 264 seconds) |
| 14:31:37 | <dminuoso> | Franciman: In fact, modern superscalar CPUs might even have 3 SIMD execution ports, which could in good situations be executed in parallel. |
| 14:32:16 | <dminuoso> | (Usually they are interleaved with the regular ALUs, so at the extremes your CPU could either execute 3 single data operations, or 3 multi data operations...) |
| 14:32:48 | × | fendor quits (~fendor@178.165.129.157.wireless.dyn.drei.com) (Remote host closed the connection) |
| 14:33:08 | <dminuoso> | So I guess in heavy numerical situations you could expect a speedup of about 35-40 in well generated code |
| 14:33:26 | <dminuoso> | ideally |
| 14:33:49 | <[exa]> | ^ optimistic |
| 14:34:05 | × | ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Read error: Connection reset by peer) |
| 14:34:18 | <[exa]> | (you'd need to have a really magical compiler) |
| 14:34:57 | <dminuoso> | Intel C++ Compiler is really good :) |
| 14:35:00 | <kuribas> | 35 speedup is very very optimistic... |
| 14:35:14 | <dminuoso> | Well not whole program of course, just talking locally |
| 14:35:55 | <kuribas> | I did a test once, I got 2.5 speedup or so, over an unboxed vector. |
| 14:35:56 | <[exa]> | not saying that there aren't such cases but I haven't seen many algorithms where it would be so efficient |
| 14:36:03 | × | bravespear|2 quits (~Ranhir@157.97.53.139) (Remote host closed the connection) |
| 14:36:17 | <dminuoso> | kuribas: Yeah, with GHC we're not there yet. |
| 14:36:33 | <[exa]> | most often you get stuck on caches and memory throughput much earlier than filling up all SSE op slots |
| 14:36:36 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 260 seconds) |
| 14:36:42 | <dminuoso> | [exa]: in linear algebra you can leverage this well, usually |
| 14:36:46 | → | polyphem joins (~p0lyph3m@2a02:810d:640:776c:76d7:55f6:f85b:c889) |
| 14:37:06 | <[exa]> | well yeah |
| 14:37:26 | <[exa]> | esp. if you have a nice 4x4 matrix and a lot of operations to do to it without loading any extra data |
| 14:37:36 | <dminuoso> | but indeed, getting caches primed properly is a bit difficult |
| 14:37:46 | <[exa]> | and ideally you can do the whole thing 4x in parallel |
| 14:37:55 | <dminuoso> | Ideally your code has to be designed to trigger speculative cache prefetching everywhere |
| 14:37:58 | <kuribas> | unboxed vector: 19.44 ms, C 11.23 ms, SIMD: 3.530 ms |
| 14:38:30 | → | bergey` joins (~user@107.181.19.30) |
| 14:38:41 | <dminuoso> | (intel for example speculatively fetches the next cache line when you have 2 (?) consecutive cache lines fetched in a row |
| 14:39:13 | dminuoso | idly wonders whether this could be used to mount yet-another-sidechannel-attack |
| 14:39:20 | <[exa]> | yes. |
| 14:39:24 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 260 seconds) |
| 14:39:24 | <[exa]> | :] |
| 14:39:40 | <[exa]> | a bit hard though, you'd need a lot of memory borders |
| 14:40:10 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 14:40:20 | × | idhugo_ quits (~idhugo@80-62-117-86-mobile.dk.customer.tdc.net) (Ping timeout: 260 seconds) |
| 14:40:21 | <dminuoso> | The main problem with Haskell SIMD is that you need to use these primops manually |
| 14:40:32 | <dminuoso> | It'd be much nicer if GHC could vectorize on its own |
| 14:40:47 | dminuoso | recalls someone doing research on this, think there was a presentation at Haskell eXchange 2019 |
| 14:40:50 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
| 14:41:00 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Max SendQ exceeded) |
| 14:41:10 | <kuribas> | if you're interested: https://gist.github.com/kuribas/ddd977968c3a56eac505901acb3e8eee |
| 14:41:15 | × | bergey quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 256 seconds) |
| 14:41:37 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 14:41:37 | <Franciman> | dminuoso, merijn all clear, thanks |
| 14:41:43 | <[exa]> | dminuoso: finding simd possibilities in any "generic" code has been a hot research topic for so long that I guess we can safely assume it's pretty hard at least |
| 14:41:48 | <merijn> | dminuoso: carter, probably? :p |
| 14:43:59 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 14:44:51 | <kuribas> | [exa]: it would already be nice to have some sort of polymorphic unboxed vector type. |
| 14:45:19 | → | ddellacosta joins (~ddellacos@86.106.143.228) |
| 14:45:47 | <edwardk> | nshepperd2: 4 things. 8 things, 16 things. depends on the instructions =) |
| 14:46:17 | <edwardk> | [exa]: my preferred model is to turn things sideways like the intel spmd program compiler. change the problem and it becomes easy |
| 14:46:54 | <[exa]> | that's easy if you're the programmer, I wouldn't like to do that as a compiler just by looking at your for-cycles |
| 14:47:01 | <edwardk> | one of my reasons for playing with unlifted data types is i want to unmothball the Int32x8# types, etc. that are sitting in GHC.Prim and use them for stuff without pain or wrappers |
| 14:47:34 | <dminuoso> | merijn: Ah no. It was Abhiroop Sarkar |
| 14:48:01 | <[exa]> | if there could be useful structural hints for the compiler (like what kuribas seems to suggest), all of this can be very trivial |
| 14:48:24 | <[exa]> | (and allow us to hit the memory throughput limit with full force! :] ) |
| 14:48:46 | <edwardk> | that said, i don't think anyone ever tested packInt8X64# :: (# Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, Int#, |
| 14:48:46 | <edwardk> | Int# #) -> Int8X64#Source |
| 14:49:10 | <[exa]> | agree. |
| 14:49:11 | <edwardk> | don't we only supported lifted/unlifted tuples up to 63 or so? |
| 14:49:24 | <dminuoso> | Lifted, at least. |
| 14:49:36 | <dminuoso> | I recall there was an unexplained bug causing segfaults if larger tuples were used. |
| 14:49:41 | <edwardk> | that really needs to use the new Int8# type |
| 14:49:48 | × | ddellacosta quits (~ddellacos@86.106.143.228) (Ping timeout: 256 seconds) |
| 14:49:50 | <geekosaur> | I recall asking that and being told that this kind of usage didn't hit the bug |
| 14:49:57 | <edwardk> | k |
| 14:50:03 | <merijn> | That's also not a tuple |
| 14:50:16 | <merijn> | It's an unboxedtuple, and iirc the issue was with the regular tuple constructor |
| 14:50:27 | <edwardk> | was curious if applied. good to know |
| 14:50:28 | × | Guest75413 quits (~textual@mskresolve-a.mskcc.org) (Remote host closed the connection) |
| 14:50:55 | <edwardk> | on the plus side it doesn't apply. on the minus side i need to consider that larger-than-64-ary unboxed tuples might be fed to me =) |
| 14:51:07 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 14:51:42 | <edwardk> | before i could generally bound the amount of cases to compile to "only" around 17^64. |
| 14:52:18 | <edwardk> | > 17^64 |
| 14:52:20 | <lambdabot> | 5607005320601059253161325667991103602003892399764752527847859167616581809464321 |
| 14:52:27 | <edwardk> | that may take a while to compile. |
| 14:52:38 | → | crobbins joins (~crobbins@2601:2c1:200:ec50:8c08:9db6:71eb:b930) |
| 14:56:00 | → | l8star__ joins (~l8star@business-90-187-113-149.pool2.vodafone-ip.de) |
| 14:56:49 | → | soft-warm joins (44695313@ip68-105-83-19.sd.sd.cox.net) |
| 14:57:23 | → | kw joins (d4662d5d@212.102.45.93) |
| 14:58:22 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 14:58:46 | <kw> | How are folks building stack projects that use nightly or lts-17.* on NixOS? |
| 14:59:48 | <dminuoso> | The same way outside NixOS? |
| 14:59:49 | → | tby joins (~tby@193.234.28.91) |
| 14:59:56 | × | carlomagno quits (~cararell@148.87.23.13) (Ping timeout: 260 seconds) |
| 14:59:57 | × | Pickchea quits (~private@unaffiliated/pickchea) (Ping timeout: 264 seconds) |
| 15:00:24 | × | [tby] quits (~tby@193.234.28.91) (Ping timeout: 260 seconds) |
| 15:00:44 | <kw> | I mean in terms of the GHC version not being in nixpkgs for the current stable version of NixOs. |
| 15:01:05 | <merijn> | kw: Stack downloads it's own copies of GHC... |
| 15:01:35 | × | toorevitimirp quits (~tooreviti@117.182.181.253) (Read error: Connection reset by peer) |
| 15:01:39 | × | geyaeb_ quits (~geyaeb@gateway/tor-sasl/geyaeb) (Remote host closed the connection) |
| 15:01:58 | <kw> | On nix-based systems, stack apparently uses nix to grab ghc. |
| 15:01:59 | → | geyaeb joins (~geyaeb@gateway/tor-sasl/geyaeb) |
| 15:02:56 | → | carlomagno joins (~cararell@148.87.23.13) |
| 15:03:31 | <dminuoso> | kw: Yeah, but it should still be the correct version specified in the resolver. |
| 15:03:48 | <dminuoso> | As it should |
| 15:04:13 | × | ystael quits (~ystael@209.6.50.55) (Quit: leaving) |
| 15:04:30 | → | ystael joins (~ystael@209.6.50.55) |
| 15:04:35 | → | [tby] joins (~tby@193.234.28.91) |
| 15:06:16 | × | tby quits (~tby@193.234.28.91) (Ping timeout: 240 seconds) |
| 15:06:21 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 15:06:45 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 256 seconds) |
| 15:06:52 | <kw> | Sorry, I guess this is more of a nix/nixos question than a haskell question, but their IRC channel seems to be dead except for bets. |
| 15:08:49 | <kw> | I get `error: attribute 'ghc8104' missing, at (string):1:60 (use '--show-trace' to show detailed location information)` (of course '--show-trace' doesn't seem to work with stack). |
| 15:09:16 | <dminuoso> | kw: #nixos is very active. |
| 15:09:17 | <kw> | This, to me, indicates that stack is trying to grab GHC from nix's repo. |
| 15:09:27 | <kw> | And can't find it. |
| 15:10:07 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 15:10:09 | <kw> | Here's what I get from `ghc --version` : |
| 15:10:09 | <kw> | The Glorious Glasgow Haskell Compilation System, version 8.10.4 |
| 15:10:43 | <kw> | So it's not using the system GHC even though it's available and the correct version (because it doesn't match the 'attribute'?). |
| 15:11:08 | → | Alleria joins (~textual@zrcout.mskcc.org) |
| 15:11:32 | Alleria | is now known as Guest30451 |
| 15:11:37 | <kw> | dminuoso: I mean, there is a lot of activity but it seems to be bots posting about updated packages. Haven't had anyone respond to a question I've asked. |
| 15:11:37 | <dminuoso> | kw: There's probably something different in the input. |
| 15:12:00 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 15:12:13 | <kw> | Right. |
| 15:12:51 | <kw> | Stack wants to find a packaged named 'ghc8104', but GHC 8.10.4 is named 'ghc' in nix's unstable repo. |
| 15:13:02 | <kw> | And as far as I know it is in 19.whatever. |
| 15:13:09 | <kw> | *is not in 19.whatever |
| 15:13:51 | <kw> | I'm not really technical enough to fix this myself. Do I just need to write up a nix shell script that names 'ghc' 'ghc8104'? |
| 15:14:07 | <kw> | Please let me know if this is too off-topic for y'all. |
| 15:14:14 | <kw> | I know this is not a tech support channel. |
| 15:14:40 | <dminuoso> | kw: I dont quite understand what your goal here is. |
| 15:15:52 | <kw> | dminuoso: My goal is to be able to download and build stack-based Haskell packages that use the latest LTS or nightly resolver. |
| 15:16:20 | × | son0p quits (~son0p@181.58.39.182) (Quit: Lost terminal) |
| 15:16:21 | <merijn> | kw: Sounds like you'll be adding 8.10.4 support to Nix, then ;) |
| 15:17:13 | <dminuoso> | kw: I see. You probably have to update nixpkgs accordingly |
| 15:17:17 | <kw> | merjin: Yeah, or I'll keep manually editing stack.yamls to use 16.31 and hope that nothing will be broken for folks who use the correct version :9 |
| 15:17:28 | <dminuoso> | Id be surprised if 8.10.4 wasnt in nixpkgs already |
| 15:17:38 | <carter> | One problem I had in simd chats, is that to get the right api you need to have a decent notion of sortah constexpr types and expressions and values. As edwardk has figured out too |
| 15:18:05 | <kw> | It's not: https://search.nixos.org/packages?channel=20.09&from=0&size=50&sort=relevance&query=ghc8104 |
| 15:18:30 | <swarmcollective> | I may be misunderstanding, but it seems that the primary use case or purpose for stack is to curate "the latest that works together seamlessly" and for nix it is "pull in the curated list from nixpkgs" except that you can then "attempt to mix in other things as desired"... |
| 15:18:55 | <dminuoso> | swarmcollective: The latter assessment (about nixpkgs) is incorrect. |
| 15:19:16 | <dminuoso> | nixpkgs is not really a curated list in the same sense, since you can freely intermix things |
| 15:19:16 | <swarmcollective> | but in either case, if you stray from the curated set of packages, then you have to find out whether there is a combination that actually works together nicely. |
| 15:19:20 | <kw> | Yeah, they may be working cross-purposes. But the goal for both seems to be reproducibility. |
| 15:19:49 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 15:20:36 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 15:20:55 | <kw> | Anyway, thanks for the guidance. I'll open a pull request over at nixpkgs when I get the chance. Until then I'll just keep manually editing stack.yaml files. Lower bar. |
| 15:21:18 | × | geowiesnot quits (~user@87-89-181-157.abo.bbox.fr) (Ping timeout: 272 seconds) |
| 15:22:44 | <dminuoso> | swarmcollective: The speciality of nixpkgs, is that you can have multiple nixpkgs concurrently without a problem, and mix packages together. |
| 15:22:52 | <dminuoso> | For the most part, this usually works fine |
| 15:23:16 | × | hekkaidekapus quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 15:23:31 | <swarmcollective> | Oh, good point dminuoso. While I've not tried that, I can understand how it is possible. |
| 15:23:58 | <dminuoso> | swarmcollective: On my system I have multiple nix channels concurrently. :) |
| 15:24:05 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds) |
| 15:24:09 | <dminuoso> | Thought many nixos users would do the same |
| 15:24:34 | <kw> | Yeah, I'm using unstable to get ghc8104 and the latest stable one for pretty much everything else. |
| 15:25:15 | <kw> | Although that's using the hacky 'fetchTarball' method of getting unstable. |
| 15:25:45 | → | arw joins (~arw@impulse.informatik.uni-erlangen.de) |
| 15:26:39 | <kw> | Which, come to think of it, may be why things are breaking. |
| 15:27:31 | × | crobbins quits (~crobbins@2601:2c1:200:ec50:8c08:9db6:71eb:b930) (Remote host closed the connection) |
| 15:28:09 | → | crobbins joins (~crobbins@2601:2c1:200:ec50:1830:7dd4:a8d3:b056) |
| 15:30:44 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 260 seconds) |
| 15:34:39 | × | evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Read error: Connection reset by peer) |
| 15:35:52 | → | conal joins (~conal@64.71.133.70) |
| 15:35:57 | → | evanjs joins (~evanjs@075-129-098-007.res.spectrum.com) |
| 15:36:06 | × | acidjnk_new quits (~acidjnk@p200300d0c7390952fca35b4a28487713.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 15:36:13 | × | arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 256 seconds) |
| 15:36:19 | <swarmcollective> | I've always thought Nix would be most powerful in mid to large size organizations where a small group of people could develop the Nix configuration and the larger group could benefit from the reproducability. However, for a single developer keeping pace with the constantly evolving ecosystem, it seems a harder sell. |
| 15:36:52 | → | knupfer joins (~Thunderbi@200116b82ce9b800d5ff9e8423fb530e.dip.versatel-1u1.de) |
| 15:36:52 | <swarmcollective> | Admittedly, I'm biased by my struggle with learning the Nix language (error messages and all). :D |
| 15:37:35 | × | danza quits (~francesco@151.53.76.37) (Quit: Leaving) |
| 15:37:36 | <[exa]> | swarmcollective: the cost of environment unification grows quadratically with number of people involved |
| 15:39:16 | <kw> | Rebuiliding nixos has given me a lot less grief than upgrading Ubuntu. |
| 15:39:59 | <kw> | Even with a single-user laptop it's been nice. |
| 15:40:47 | × | knupfer quits (~Thunderbi@200116b82ce9b800d5ff9e8423fb530e.dip.versatel-1u1.de) (Client Quit) |
| 15:41:05 | → | arw joins (~arw@impulse.informatik.uni-erlangen.de) |
| 15:41:06 | → | knupfer joins (~Thunderbi@200116b82ce9b800d5ff9e8423fb530e.dip.versatel-1u1.de) |
| 15:41:20 | <dminuoso> | Oh yeah, updating my laptop after a year, just to rollback 10 minutes later.. priceless. :) |
| 15:42:49 | × | syd quits (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) (Ping timeout: 272 seconds) |
| 15:43:33 | → | stree joins (~stree@68.36.8.116) |
| 15:44:15 | → | fendor joins (~fendor@91.141.3.187.wireless.dyn.drei.com) |
| 15:44:21 | <swarmcollective> | Virtualization is making it easier to test "the latest and greatest", though. |
| 15:45:38 | <swarmcollective> | Now I have to decide which docker images to keep and which to delete. Even with GHC there have been more than a couple version updates. |
| 15:46:18 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 15:52:48 | <ezzieyguywuf> | is --allow-newer a cabal-the-executable feature strictly, or is it somehow implemented in cabal-the-library as well? |
| 15:53:46 | <merijn> | ezzieyguywuf: I thought someone figured out Setup.hs supports it too, but I'm not sure? |
| 15:54:05 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 15:56:45 | × | aqd quits (~aqd@87-92-163-238.rev.dnainternet.fi) (Ping timeout: 272 seconds) |
| 15:57:41 | <ezzieyguywuf> | merijn: where might I dig in to try to figure that out? |
| 15:57:46 | → | syd joins (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) |
| 15:57:48 | → | kupi joins (uid212005@gateway/web/irccloud.com/x-eebherdsvusazjal) |
| 15:58:09 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 264 seconds) |
| 15:58:42 | <merijn> | ezzieyguywuf: I mean, you could just try "passing --allow-newer" to Setup.hs? ;) |
| 15:59:03 | <ezzieyguywuf> | lol |
| 15:59:06 | <ezzieyguywuf> | fine |
| 15:59:28 | × | jlamothe quits (~jlamothe@198.251.55.207) (Quit: leaving) |
| 16:00:23 | → | chisui joins (588298cc@88.130.152.204) |
| 16:00:36 | → | hyperisco joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
| 16:00:50 | × | syd quits (~syd@cpc91646-hart11-2-0-cust432.11-3.cable.virginm.net) (Remote host closed the connection) |
| 16:01:38 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 16:02:05 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-xqiuutmfxqpmwhnb) (Quit: Connection closed for inactivity) |
| 16:03:40 | → | Ranhir joins (~Ranhir@157.97.53.139) |
| 16:03:58 | → | vgtw_ joins (~vgtw@gateway/tor-sasl/vgtw) |
| 16:04:28 | × | l8star__ quits (~l8star@business-90-187-113-149.pool2.vodafone-ip.de) (Ping timeout: 258 seconds) |
| 16:04:51 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
| 16:05:12 | × | vgtw quits (~vgtw@gateway/tor-sasl/vgtw) (Ping timeout: 268 seconds) |
| 16:05:13 | vgtw_ | is now known as vgtw |
| 16:05:19 | → | whald joins (~trem@2a02:810a:8100:11a6:15b2:7454:c339:fb18) |
| 16:05:19 | → | l8star__ joins (~l8star@business-90-187-113-149.pool2.vodafone-ip.de) |
| 16:05:23 | → | hseg joins (~gesh@IGLD-84-228-239-97.inter.net.il) |
| 16:06:37 | × | chisui quits (588298cc@88.130.152.204) (Killed (Sigyn (Spam is off topic on freenode.))) |
| 16:08:48 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 16:09:11 | → | jacks2 joins (~bc8134e3@217.29.117.252) |
| 16:09:11 | → | ddellaco_ joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 16:09:23 | <jacks2> | hi. how do you feel about abusing <- to seemingly mutate variables (in reality, we are just shadowing names) |
| 16:09:31 | × | rj_ quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds) |
| 16:10:01 | <glguy> | jacks2, it can be better than risking an old version of something getting updated over and over again getting used by accident |
| 16:10:40 | [tby] | is now known as tby |
| 16:10:47 | × | tby quits (~tby@193.234.28.91) (Changing host) |
| 16:10:47 | → | tby joins (~tby@unaffiliated/tby) |
| 16:10:47 | → | gioyik joins (~gioyik@gateway/tor-sasl/gioyik) |
| 16:11:08 | <dolio> | I think it works well. |
| 16:12:29 | → | frozenErebus joins (~frozenEre@94.128.219.166) |
| 16:12:43 | <dolio> | When you can do it, at least. |
| 16:15:31 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:17:25 | × | Ranhir quits (~Ranhir@157.97.53.139) (Remote host closed the connection) |
| 16:17:44 | <jacks2> | here is an example, quick and dirty way to add a flag when options aren't complex enough to warrant a dedicated library. https://ideone.com/Ec2NTQ |
| 16:18:08 | <jacks2> | what do you think? :) |
| 16:20:03 | <jacks2> | this way I can match positional arguments with case, without worrying position of --some-flag-or-option |
| 16:20:38 | <jacks2> | without worrying about the position of --some-flag-or-option |
| 16:20:55 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 16:21:21 | <monochrom> | Yeah pretty neat. |
| 16:22:35 | <monochrom> | But GHC 8.4 ... |
| 16:23:06 | × | da39a3ee5e6b4b0d quits (~da39a3ee5@2403:6200:8876:c8ae:2c0d:ad79:de13:e3a6) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 16:23:40 | <ezzieyguywuf> | unrecognized 'configure' option `--allow-newer=QuickCheck' |
| 16:23:48 | <ezzieyguywuf> | so I guess it's not in Setup.hs |
| 16:24:05 | <monochrom> | Right, Setup.hs is different. |
| 16:24:36 | <monochrom> | Its features and omissions are made for e.g. ubuntu maintainers who make debs. |
| 16:25:04 | <merijn> | monochrom: Yeah, but I recall last week someone finding it did exist, but maybe my memory is scrambled |
| 16:25:12 | <merijn> | Could also depend on the version in use :p |
| 16:25:49 | <monochrom> | So for example the whole automatic dependency solving is gone. (Actually never there in the first place, I think Setup predates cabal-install?) Because a deb maker is by definition a control freak who hand-solve dependencies... |
| 16:25:52 | → | jlamothe joins (~jlamothe@198.251.55.207) |
| 16:25:53 | <merijn> | https://cabal.readthedocs.io/en/latest/setup-commands.html#cmdoption-runhaskell-Setup.hs-configure-allow-newer |
| 16:26:02 | <merijn> | monochrom: Sure |
| 16:26:12 | <merijn> | monochrom: But you still wanna overide them |
| 16:26:29 | <merijn> | monochrom: If the package bounds say <4.1 you might wanna build it with 4.2 |
| 16:26:30 | → | [tby] joins (~tby@193.234.28.91) |
| 16:26:42 | <monochrom> | A deb maker is also supposed to hand-edit the mypackage.cabal file for this. |
| 16:26:51 | <monochrom> | or hand-patch. |
| 16:27:19 | <monochrom> | They already hand-patch all other "source code files" so why not also this. |
| 16:27:28 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 16:27:36 | × | tby quits (~tby@unaffiliated/tby) (Ping timeout: 240 seconds) |
| 16:28:00 | → | ClaudiusMaximus joins (~claude@191.123.199.146.dyn.plus.net) |
| 16:28:00 | <ezzieyguywuf> | merijn: that link is for cabal-install though |
| 16:28:01 | <geekosaur> | early cabal-install just wrapped Setup.hs |
| 16:28:08 | × | ClaudiusMaximus quits (~claude@191.123.199.146.dyn.plus.net) (Changing host) |
| 16:28:08 | → | ClaudiusMaximus joins (~claude@unaffiliated/claudiusmaximus) |
| 16:28:11 | <ezzieyguywuf> | and yea, I'm like the deb guy, but for gentoo lol. |
| 16:28:16 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds) |
| 16:28:22 | <monochrom> | So put it this way, Setup is designed to be hostile to non-(linux distro workers or chocolatey workers) |
| 16:28:28 | <ezzieyguywuf> | we rolled our own thingy that will relax upperbounds, but I wanted to explore using cabal directly if that feature exists |
| 16:28:33 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 16:29:21 | <ezzieyguywuf> | monochrom: you seem pretty antagonistic against packagers, lol. |
| 16:29:35 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 16:29:45 | <monochrom> | Darn I have to look up antagonistic |
| 16:29:59 | <ezzieyguywuf> | --constraint almost seems like it could work, but it says "additional constraints" (emphasis added by me) |
| 16:30:30 | <ezzieyguywuf> | n. Contending against; acting in opposition; mutually opposing; opposite. |
| 16:30:36 | × | [tby] quits (~tby@193.234.28.91) (Ping timeout: 240 seconds) |
| 16:30:39 | <monochrom> | Heh OK. I'm not, but meh. |
| 16:30:43 | <ezzieyguywuf> | lol ok |
| 16:30:50 | → | tby joins (~tby@193.234.28.91) |
| 16:30:56 | × | cods quits (~fred@82-65-232-44.subs.proxad.net) (Changing host) |
| 16:30:56 | → | cods joins (~fred@unaffiliated/cods) |
| 16:31:20 | <monochrom> | But I think the proper way is to patch the thispackage.cabal file. |
| 16:32:05 | <merijn> | ezzieyguywuf: It is not |
| 16:32:13 | <merijn> | ezzieyguywuf: THat's the entry for Setup.hs |
| 16:32:26 | <monochrom> | You don't ask gcc to have a flag for "suppress every occurence of #include <nonstdio.h>", no? You patch the *.c files to delete them. |
| 16:32:29 | <merijn> | Possibly the docs are wrong, but still |
| 16:32:44 | → | Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 16:32:55 | <ezzieyguywuf> | monochrom: but ghc > gcc |
| 16:33:00 | <ezzieyguywuf> | 😂 |
| 16:33:26 | <ezzieyguywuf> | merijn: well well well |
| 16:33:30 | <ezzieyguywuf> | merijn: perhaps it's my version then |
| 16:33:38 | <monochrom> | Or you patch all the *.hs files to make them compatible to the older base... |
| 16:33:49 | <ezzieyguywuf> | I'm on 3.2.1.0 of cabal-the-library |
| 16:34:07 | <ezzieyguywuf> | monochrom: I'm not saying it's unreasonable to expect the packager to patch the .cabal file |
| 16:34:19 | <ezzieyguywuf> | monochrom: I'm just exploring whether or not I actually have to |
| 16:34:28 | <monochrom> | I am not antagonistic to packagers, I just observe that they have a very different convention from programmers. |
| 16:34:50 | <monochrom> | Ah OK then, sorry, yeah I think you have no other option. |
| 16:34:51 | <ezzieyguywuf> | fair |
| 16:35:41 | <ezzieyguywuf> | merijn: looks like that version of the docs was added with cabal-the-executable version 3.4 |
| 16:35:50 | <ezzieyguywuf> | doesn't specific the cabal-the-library version though |
| 16:36:06 | <ezzieyguywuf> | my cabal-the-executable is version 3.2.0.0, but that shouldn't matter |
| 16:37:54 | <ezzieyguywuf> | OH NICE!!!! |
| 16:37:58 | <ezzieyguywuf> | there's newer releases |
| 16:38:01 | <ezzieyguywuf> | I shall dig in to this |
| 16:38:15 | <geekosaur> | 3.4 just got formally released yesterday |
| 16:39:15 | <ezzieyguywuf> | don't see anything in the changelog |
| 16:39:22 | <ezzieyguywuf> | but I'm going to work on this later and see if it was one of the features added |
| 16:41:35 | → | fresheyeball joins (~isaac@c-71-237-105-37.hsd1.co.comcast.net) |
| 16:43:49 | × | michalz quits (~user@185.246.204.61) (Remote host closed the connection) |
| 16:44:34 | × | mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew) |
| 16:45:05 | × | w2321 quits (~user@47.245.54.240) (Quit: ERC (IRC client for Emacs 26.3)) |
| 16:45:20 | → | justsomeguy joins (~justsomeg@unaffiliated/--/x-3805311) |
| 16:46:42 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 16:46:53 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 16:47:31 | × | ddellaco_ quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 16:47:41 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 16:47:49 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Quit: WeeChat 3.0.1) |
| 16:48:07 | → | Sheilong joins (uid293653@gateway/web/irccloud.com/x-xfxeeejhmtblxsmq) |
| 16:48:48 | → | brkscnce joins (~obaum@2a02:2450:1020:8283:86fd:d1ff:fe73:fb09) |
| 16:50:01 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-gewvwhbittubyvln) |
| 16:51:40 | <brkscnce> | hey, I'm wondering, what are the ' characters in this function for? https://paste.tomsmeding.com/Igfg7P1L |
| 16:52:15 | <tomsmeding> | brkscnce: haskell variable names can include ' characters just like letters |
| 16:52:32 | <tomsmeding> | a'b'c'd is a fine variable name in haskell |
| 16:52:46 | <tomsmeding> | (whether you want a name like that is a different question) |
| 16:52:46 | <brkscnce> | ah, so it's just like f''(x) |
| 16:52:53 | <tomsmeding> | yep |
| 16:57:50 | × | Stephnix quits (~Stephnix@195.140.213.38) (Remote host closed the connection) |
| 16:58:15 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 16:58:52 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 16:59:27 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 16:59:36 | × | evanjs quits (~evanjs@075-129-098-007.res.spectrum.com) (Ping timeout: 240 seconds) |
| 17:00:54 | → | evanjs joins (~evanjs@075-129-098-007.res.spectrum.com) |
| 17:05:34 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
| 17:05:41 | <c_wraith> | this has the amusing side effect of allowing contractions in haskell names. They probably shouldn't be used that way :) |
| 17:05:49 | <minoru_shiraeesh> | are my messages in this going to be visible? |
| 17:05:57 | <minoru_shiraeesh> | *in this chat |
| 17:06:19 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 17:06:31 | <yushyin> | minoru_shiraeesh: we see your messages |
| 17:06:43 | <minoru_shiraeesh> | thanks |
| 17:08:08 | <maerwald> | yeah, sometimes I'm also amazed how the internet works at all with its shi**y protocols |
| 17:08:45 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 17:09:04 | <minoru_shiraeesh> | there was a spam wave today, and ops changed settings, so I wasn't sure |
| 17:09:17 | <maerwald> | yeah, I got a lot of PMs as well |
| 17:09:26 | <c_wraith> | the setting they changed was about receiving PMs from unregistered accounts |
| 17:10:11 | <maerwald> | and the messages were really random, not even any conspiracy theories |
| 17:10:55 | <minoru_shiraeesh> | there was a discussion of twitch streams not so long ago |
| 17:10:56 | → | rj_ joins (~x@gateway/tor-sasl/rj) |
| 17:11:21 | <minoru_shiraeesh> | any twitch stream watchers online? |
| 17:11:23 | <c_wraith> | They felt like messages designed to weaken spam filters by training them on nonsense that targeted spam doesn't have. But I'm not sure any IRC server works like that. |
| 17:13:01 | → | cdb joins (~cdb@185.163.110.108) |
| 17:14:31 | <minoru_shiraeesh> | I need someone to confirm that my stream is visible |
| 17:14:47 | <srk> | mpv <url> :) |
| 17:15:01 | <minoru_shiraeesh> | on twitch |
| 17:15:17 | <srk> | mpv <twitch-url> |
| 17:15:26 | <minoru_shiraeesh> | what's mpv? |
| 17:15:43 | <srk> | video media player |
| 17:16:12 | <minoru_shiraeesh> | and also to discuss cont and contT usage |
| 17:16:36 | × | kritzefitz quits (~kritzefit@fw-front.credativ.com) (Remote host closed the connection) |
| 17:17:04 | <minoru_shiraeesh> | I mean, is my stream going to show up in search results or something |
| 17:18:45 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 17:21:02 | × | borne quits (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb) (Ping timeout: 264 seconds) |
| 17:21:19 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 17:21:25 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 17:21:33 | → | coot joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 17:21:48 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 17:22:28 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:22:56 | <brkscnce> | is it like a haskell stream? |
| 17:23:01 | <brkscnce> | do people stream haskell? |
| 17:24:38 | → | coot_ joins (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) |
| 17:24:38 | × | coot_ quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Remote host closed the connection) |
| 17:24:39 | × | tby quits (~tby@193.234.28.91) (Remote host closed the connection) |
| 17:25:11 | → | tby joins (~tby@193.234.28.91) |
| 17:26:00 | × | coot quits (~coot@37.30.55.141.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 260 seconds) |
| 17:26:32 | × | tby quits (~tby@193.234.28.91) (Remote host closed the connection) |
| 17:26:49 | <minoru_shiraeesh> | there was a discussion of twitch and youtube streamer who stream their haskell coding sessions |
| 17:26:56 | → | tby joins (~tby@193.234.28.91) |
| 17:26:56 | × | tby quits (~tby@193.234.28.91) (Changing host) |
| 17:26:56 | → | tby joins (~tby@unaffiliated/tby) |
| 17:26:58 | <minoru_shiraeesh> | *streamers |
| 17:27:07 | × | tby quits (~tby@unaffiliated/tby) (Remote host closed the connection) |
| 17:27:11 | → | deviantfero joins (~deviantfe@190.150.27.58) |
| 17:27:16 | <EvanR> | there's some functional music synth packages that you should definitely stream |
| 17:28:21 | <minoru_shiraeesh> | hmm, not sure if it's a wordplay |
| 17:29:42 | <EvanR> | aol keyword "live coding" |
| 17:31:06 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) |
| 17:32:57 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 17:34:10 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:34:36 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 240 seconds) |
| 17:34:38 | → | borne joins (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb) |
| 17:36:10 | × | saitamaplus quits (uid272474@gateway/web/irccloud.com/x-qsruztdwynmbeqgd) (Quit: Connection closed for inactivity) |
| 17:36:14 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 17:38:07 | × | chele quits (~chele@ip5b40237d.dynamic.kabel-deutschland.de) (Remote host closed the connection) |
| 17:38:27 | <ezzieyguywuf> | if I start using ghc-9, can I expect to run into a bunch of problems? |
| 17:38:31 | <ezzieyguywuf> | i.e. packages not compiling? |
| 17:39:01 | <ezzieyguywuf> | if I resolve these problems, is there any chance that a user still using ghc-8 might run into issues? (i.e. b/c they're using the same package as me) |
| 17:39:45 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 17:39:55 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:40:36 | ← | rj_ parts (~x@gateway/tor-sasl/rj) () |
| 17:40:54 | <tomsmeding> | ezzieyguywuf: new versions of cabal nicely separate compiled packages for different ghc versions and compilation configurations in ~/.cabal |
| 17:41:32 | <ezzieyguywuf> | tomsmeding: I'm aware, but we don't have a similar feature in gentoo - we're forced to use the same ghc-version across-the-board on any given system |
| 17:41:39 | <tomsmeding> | note that this also means that if you switch ghc versions, you'll be rebuilding the world :p |
| 17:42:02 | <ezzieyguywuf> | so even though I could be developing with ghc-9 on my local machine, the majority of my user-base will remain on ghc-8 until things are sufficiently stable |
| 17:42:05 | <tomsmeding> | okay, so where are you storing those compiled packages? |
| 17:42:10 | → | Jd007 joins (~Jd007@162.156.11.151) |
| 17:42:12 | <tomsmeding> | define user-base |
| 17:42:17 | <ezzieyguywuf> | other gentoo users |
| 17:42:23 | <tomsmeding> | compilation products between ghc versions are incompatible |
| 17:42:31 | × | ubert quits (~Thunderbi@p200300ecdf25d926e0d56ea876869bf6.dip0.t-ipconnect.de) (Quit: ubert) |
| 17:42:49 | <ezzieyguywuf> | yes I'm aware - hrm, I think I've done a poor job phrasing my question. |
| 17:42:53 | <tomsmeding> | what exactly are you sending to those other gentoo users? just haskell source code, or also compiled things? |
| 17:43:14 | × | borne quits (~fritjof@2a06:8782:ffbb:1337:2133:4ed6:e22f:c3eb) (Ping timeout: 264 seconds) |
| 17:43:35 | <ezzieyguywuf> | tomsmeding: neither. similar to a debian package, I'm sending them an "ebuild" that specifies dependencies and how to compile the package. the gentoo package manager uses this to compile the package locally on their systm |
| 17:43:56 | <tomsmeding> | so you're sending them source code and compilation instructions? |
| 17:44:00 | <tomsmeding> | roughly |
| 17:44:07 | <ezzieyguywuf> | tomsmeding: yes roughly. |
| 17:44:24 | → | tby joins (~tby@193.234.28.91) |
| 17:44:24 | × | tby quits (~tby@193.234.28.91) (Changing host) |
| 17:44:24 | → | tby joins (~tby@unaffiliated/tby) |
| 17:44:32 | <tomsmeding> | that depends fully on whether the code, and its dependencies, build on both ghc versions |
| 17:44:32 | <ezzieyguywuf> | so my question is: if I focus on writing these instructions with ghc-9, is there a chance that it won't work when someone follows them ith ghc-8 |
| 17:44:45 | ← | tby parts (~tby@unaffiliated/tby) () |
| 17:44:46 | <ezzieyguywuf> | keeping in mind that I may patch the haskell source files, i.e. to bump dependency versions. |
| 17:44:51 | <ezzieyguywuf> | i see. |
| 17:44:53 | → | borne joins (~fritjof@200116b8644ab70010f2d07664396fd4.dip.versatel-1u1.de) |
| 17:44:54 | <maerwald> | ebuilds don't work well with ghc, why even bother? |
| 17:45:01 | <tomsmeding> | it might not work if you're using a package version in those instructions that only supports ghc 9 |
| 17:45:07 | <ezzieyguywuf> | maerwald: they work all right. |
| 17:45:12 | → | rj_ joins (~x@gateway/tor-sasl/rj) |
| 17:45:13 | <maerwald> | ezzieyguywuf: not really :p |
| 17:45:18 | <ezzieyguywuf> | maerwald: yea huh! |
| 17:45:20 | <ezzieyguywuf> | :) |
| 17:45:20 | <tomsmeding> | which is unlikely at the moment, but it is theoretically an issue |
| 17:45:23 | → | pera joins (~pera@unaffiliated/pera) |
| 17:45:34 | <maerwald> | libraries are pinned to one ghc subslot, that's awful |
| 17:45:51 | × | rj_ quits (~x@gateway/tor-sasl/rj) (Remote host closed the connection) |
| 17:46:00 | <ezzieyguywuf> | maerwald: it's unfortunate. but I don't know that I'd say "awful" - why so awful? |
| 17:46:10 | <tomsmeding> | "why even bother" -- because some people use it, and it's nice to help them |
| 17:46:12 | <tomsmeding> | :) |
| 17:46:13 | → | rj_ joins (~x@gateway/tor-sasl/rj) |
| 17:46:19 | <ezzieyguywuf> | tomsmeding: right! |
| 17:46:20 | <maerwald> | because your experiment forces users to upgrade their entire system to newer ghc |
| 17:46:57 | <tomsmeding> | my understanding was that ezzieyguywuf wanted to create an ebuild that works both for ghc 9 and ghc 8 |
| 17:46:57 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 17:47:01 | <maerwald> | so yes, they will run into problems |
| 17:47:03 | <maerwald> | don't do it |
| 17:47:05 | <tomsmeding> | as far as that's a thing; I have no idea how gentoo works |
| 17:47:12 | <ezzieyguywuf> | maerwald: but what's wrong with that? it actually gives the user a choice "Upgrade ghc, and everything haskell-related, or just keep using the older one" |
| 17:47:31 | × | knupfer quits (~Thunderbi@200116b82ce9b800d5ff9e8423fb530e.dip.versatel-1u1.de) (Remote host closed the connection) |
| 17:47:37 | <ezzieyguywuf> | tomsmeding: yes, that is what I want to do, and your summary of the potential pitfalls is a good one. |
| 17:47:40 | → | knupfer joins (~Thunderbi@200116b82ce9b80069be852dc8e82fbe.dip.versatel-1u1.de) |
| 17:47:48 | <maerwald> | ezzieyguywuf: it's the opposite of flexible (e.g. cabal nix-style builds, stack, nix, ...) |
| 17:48:01 | <ezzieyguywuf> | my main concern is that if I start focusing my ebuild development efforts based on a ghc-9 environment, I wouldn't want to introduce any regressions to those still using ghc-8 |
| 17:48:06 | <tomsmeding> | it's basically like any other programming language where you want a particular project to work with two different compiler/runtime/library/whatever versions |
| 17:48:30 | <tomsmeding> | all components of your dependency tree need to support both versions, and if they do, you're fine |
| 17:48:57 | <tomsmeding> | ghc 9 and new cabal have some newer compilation flags that older ghc may not support, but that's just a special case of the same issue |
| 17:49:35 | <minoru_shiraeesh> | one program can force other programs to recompile? |
| 17:49:38 | <ezzieyguywuf> | honestly, one of my mid-term goals is to figure out how to update the gentoo EAPI so that we can properly implement something similar to what cabal/ghc does, with a unique hash that identifies a dependencie's ABI and then rebuilds or builds a new one as needed. |
| 17:50:00 | × | dyeplexer quits (~lol@unaffiliated/terpin) (Remote host closed the connection) |
| 17:50:11 | <ezzieyguywuf> | minoru_shiraeesh: yes, but to a limited extend within gentoo. |
| 17:50:19 | <maerwald> | ezzieyguywuf: portage isn't built for this, look at nix |
| 17:50:35 | <ezzieyguywuf> | maerwald: isn't built for this yet |
| 17:50:42 | <ezzieyguywuf> | but what's stopping us from making it better. |
| 17:50:51 | <maerwald> | yes and EAPI changes will make it worse, like subslots did |
| 17:51:05 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Remote host closed the connection) |
| 17:51:16 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 240 seconds) |
| 17:51:18 | <maerwald> | anyway, gl getting that through QA/council |
| 17:51:56 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 17:53:05 | → | klardotsh joins (~klardotsh@75-172-17-41.tukw.qwest.net) |
| 17:56:07 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds) |
| 17:57:46 | <ezzieyguywuf> | lol thanks |
| 17:57:55 | <ezzieyguywuf> | working on becoming an official dev first |
| 17:57:57 | <ezzieyguywuf> | then that |
| 17:58:20 | <ezzieyguywuf> | maerwald: I'm interested to hear your thoughts on hwy subslots are so bad. but perhaps this isn't the best forum for that |
| 17:58:36 | <maerwald> | ezzieyguywuf: yes, I could write pages of blog posts about that |
| 17:58:39 | → | Wuzzy joins (~Wuzzy@p57a2f9e0.dip0.t-ipconnect.de) |
| 18:00:31 | → | conal joins (~conal@64.71.133.70) |
| 18:00:42 | <monochrom> | Hey gentoo is all about recompiling. >:) |
| 18:01:03 | <monochrom> | gentoo and xmonad are BFF |
| 18:01:13 | <ezzieyguywuf> | hah, probably more accurately "gentoo is all about doing things exactly the way you want to" |
| 18:01:17 | <ezzieyguywuf> | or something like that. |
| 18:01:29 | <geekosaur> | same could be said of xmonad |
| 18:01:43 | <monochrom> | QED |
| 18:01:50 | <ezzieyguywuf> | i've been meaning to give xmonad another shot |
| 18:01:55 | <ezzieyguywuf> | but i3 Just Works™ |
| 18:01:57 | <ezzieyguywuf> | mostly |
| 18:02:00 | <maerwald> | monochrom: ppl don't understand that most package managers were built in an era of C-libraries... even for python, they only work ok-ish, perl still causes problems, go and rust are hopeless and haskell ... |
| 18:02:30 | <monochrom> | haskell, "the impossible has just happened" |
| 18:02:46 | <monochrom> | @quote impossible.has.just.happened |
| 18:02:46 | <lambdabot> | No quotes match. Abort, Retry, Panic? |
| 18:02:56 | × | thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds) |
| 18:02:56 | <dminuoso> | ezzieyguywuf: The cool thing about xmonad is that you can readily extend xmonad in most places with just plain high level haskell code. |
| 18:02:57 | <maerwald> | so if you really want to do crazy things with haskell, you gotta swallow the bullet and go with nix, no matter how awful it is |
| 18:02:58 | <monochrom> | Hrm, let me find it. |
| 18:03:10 | <maerwald> | (and it is awful) |
| 18:03:39 | <justsomeguy> | What's awful about Nix? |
| 18:03:48 | <monochrom> | @quote autrijus impossible.just |
| 18:03:48 | <lambdabot> | autrijus says: Perl: "Easy things are easy, hard things are possible" <autrijus> Haskell: "Hard things are easy, the impossible just happened" |
| 18:04:06 | <dminuoso> | ezzieyguywuf: Like, I dont even need something like dmenu/rofi - I can do this first class from xmonad with very simplistic code - and its fully programmable. https://gitlab.com/dminuoso/xmonad-config/-/blob/master/lib/Windows.hs#L90-93 |
| 18:04:18 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 18:04:19 | → | thc202 joins (~thc202@unaffiliated/thc202) |
| 18:04:19 | <maerwald> | and then... even when you're using nix for haskell, you gotta realize your builds are still not reproducible :p |
| 18:04:28 | <dminuoso> | (I even built an emacs-style mod-x command for all "commands" my xmonad has) |
| 18:04:44 | <dminuoso> | cant do this in i3 |
| 18:05:08 | → | stree joins (~stree@68.36.8.116) |
| 18:05:14 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 18:07:16 | <swarmcollective> | minoru_shiraeesh, are you streaming now? I can verify that your stream is working, if so. |
| 18:08:21 | <minoru_shiraeesh> | several days ago I heard an old podcast episode discussing go's solution (or a lack thereof) for vendoring. They didn't create a tool deliberately, to see what a community creates instead. |
| 18:08:28 | <minoru_shiraeesh> | but that's old information |
| 18:09:01 | <minoru_shiraeesh> | swarmcollective: thanks, I'm gonna start |
| 18:09:06 | <maerwald> | dminuoso: code as config sux :( |
| 18:09:14 | <maerwald> | because it's a time sink |
| 18:09:20 | <maerwald> | you realize all the cool things you can do |
| 18:09:25 | × | ddellacosta quits (ddellacost@gateway/vpn/mullvad/ddellacosta) (Ping timeout: 240 seconds) |
| 18:09:33 | <maerwald> | so I avoid it whenever I can |
| 18:10:02 | <geekosaur> | it was a time sink when I wrote it; I haven't really touched it since (except to rearrange layouts slightly when switching to my new laptop with its larger screen) |
| 18:10:20 | <maerwald> | i3 config is kinda well designed |
| 18:10:34 | rj_ | is now known as rj |
| 18:10:40 | <maerwald> | and you can still do weird stuff with ibus and shell scripts |
| 18:10:57 | <swarmcollective> | Am I correct in understanding that given: newtype Thing m a b = Thing { runThing :: m (a -> a) } GHC will ignore b since it is not used? |
| 18:11:00 | <dminuoso> | maerwald: Im not convinced that `code as config` sucks. There's no clear separation between the two. :) |
| 18:11:14 | <dminuoso> | swarmcollective: What do you mean by "ignore"? |
| 18:11:17 | <dminuoso> | It will certainly not ignore it. |
| 18:11:24 | <maerwald> | dminuoso: turing complete |
| 18:11:30 | <maerwald> | very clear separation |
| 18:11:32 | <swarmcollective> | I see the error: Couldn't match expected type `a1 -> a1' with actual type `[Char]' when using where y = Thing $ (15, f, "test") |
| 18:11:42 | <dminuoso> | So say, if you have `f :: Thing M A Int -> Bool` and you try to pass it `Thing M A Char` it will complain. |
| 18:12:21 | <dminuoso> | maerwald: The turing argument is deeply flawed, I think. |
| 18:12:49 | × | borne quits (~fritjof@200116b8644ab70010f2d07664396fd4.dip.versatel-1u1.de) (Ping timeout: 272 seconds) |
| 18:12:49 | → | jneira joins (501e6551@gateway/web/cgi-irc/kiwiirc.com/ip.80.30.101.81) |
| 18:12:51 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 18:13:52 | <swarmcollective> | Somehow it is including "test" in the function (a -> a), though `f` is (Int -> Int) |
| 18:14:48 | × | cheater quits (~user@unaffiliated/cheater) (Quit: Killed (einride (Requested by panasync))) |
| 18:16:10 | × | proteusguy quits (~proteusgu@cm-58-10-208-13.revip7.asianet.co.th) (Remote host closed the connection) |
| 18:17:01 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 18:17:32 | <dminuoso> | maerwald: That is, if you dont like the full expressivity of a programming language, you dont have to use it. It's there for your convenience. |
| 18:17:32 | <swarmcollective> | https://paste.tomsmeding.com/dTUU2ZXf |
| 18:17:34 | → | augnun joins (~augnun@2804:14c:658b:41bb:3dc0:3938:a79e:b2ee) |
| 18:17:35 | <minoru_shiraeesh> | swarmcollective: are you here? I started streaming. I noticed that I can't find my stream by the "haskell" keyword, but I can find it by my nickname |
| 18:17:43 | <minoru_shiraeesh> | not sure why |
| 18:18:01 | → | Pickchea joins (~private@unaffiliated/pickchea) |
| 18:18:26 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 18:18:40 | <maerwald> | dminuoso: nope, because you'll have to deal with awful APIs too |
| 18:18:52 | <maerwald> | you get pulled into the turing completeness |
| 18:19:03 | <dminuoso> | maerwald: well the "awful API" is equivalent to "awful config format" |
| 18:19:07 | <dminuoso> | So that's not much of an argument |
| 18:19:10 | <maerwald> | it isn't |
| 18:19:15 | → | cheater joins (~user@unaffiliated/cheater) |
| 18:19:45 | <dminuoso> | We're handrolling "code as config" radius servers because freeradius is just pure madness to configure. |
| 18:20:32 | <monochrom> | My impression is that all things radius are madness. |
| 18:20:52 | <dminuoso> | Dunno, it's a nice pipe fitting protocol in the networking world |
| 18:21:04 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Remote host closed the connection) |
| 18:21:09 | <dminuoso> | Our small radius server combinator framework is usable |
| 18:21:16 | <geekosaur> | but networking is madness |
| 18:21:19 | <maerwald> | there's no way you can build something as easily usable as a good config format once you're sold on a turing complete language, no matter how hard you try |
| 18:21:19 | <dminuoso> | heh |
| 18:21:27 | <monochrom> | OK yeah networking. :) |
| 18:21:32 | <dminuoso> | geekosaur: Fair. Point. |
| 18:21:38 | <dminuoso> | :) |
| 18:21:56 | <maerwald> | look at propellor, they tried.. you'll still end up with magnitudes more complex code |
| 18:22:05 | <maerwald> | compared to awful ansible yaml format |
| 18:22:07 | <dminuoso> | maerwald: A single example is not exhaustive proof of your claim. |
| 18:22:12 | <maerwald> | and both achieve the exact same thing |
| 18:22:20 | <dminuoso> | Consider: |
| 18:22:23 | <maerwald> | dminuoso: I'm not writing a thesis on it :) |
| 18:22:48 | <maerwald> | expressivity is our enemy, not our friend |
| 18:22:51 | <dminuoso> | maerwald: Let's for the sake of argument say that `ini-style` is an acceptable/good config format |
| 18:23:24 | <maerwald> | the more expressivity, the less thought the guy before you put into the problem |
| 18:23:39 | <dminuoso> | If we just find a simple data style embedding in Haskell.. say.. `data Section = Section { fieldA :: Int, ... }`, then `Section { fieldA = 10, ...}` is perfectly equivalent to writing `[Section]; fieldA = 10 ...` |
| 18:23:52 | <dminuoso> | Nothing forces you to use the complete richness of the programming language |
| 18:24:00 | <dminuoso> | The mere presence of Haskell does not devalue this |
| 18:24:00 | <maerwald> | dminuoso: the API may |
| 18:24:02 | <monochrom> | I don't think any inventor of config files intended Turing-completeness. They just took in too many feature requests (each individually not enough for Turing-completeness) and accidentally crossed the line. |
| 18:24:11 | → | martins joins (~martins@81.198.232.69) |
| 18:24:17 | <maerwald> | dminuoso: an API can force you to use linear types, dependent types and whatnot :) |
| 18:24:23 | <dminuoso> | monochrom: Sure, Im not talking about "some config language that accidentally became a turing complete language" |
| 18:24:31 | <dminuoso> | But using a programming langauge for configuration is certainly not horrible.. |
| 18:24:36 | <monochrom> | For support of my belief, just look at Excel and LAMBDA. >:) |
| 18:24:37 | × | martins quits (~martins@81.198.232.69) (Client Quit) |
| 18:24:38 | × | rajivr quits (uid269651@gateway/web/irccloud.com/x-lsothnqwqqfmpidy) (Quit: Connection closed for inactivity) |
| 18:24:43 | <dminuoso> | maerwald: or it does not |
| 18:25:00 | <maerwald> | dminuoso: yeah, so O(x) is? |
| 18:25:05 | <maerwald> | worst case |
| 18:25:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 18:25:18 | <maerwald> | don't rely on hope |
| 18:25:36 | <dminuoso> | monochrom: Or just powerpoint? >:) |
| 18:25:38 | <maerwald> | (or people) |
| 18:25:56 | <dminuoso> | maerwald: Just because an API can be bad, doesnt mean all programming language based configuration styles are horrible. |
| 18:25:57 | <monochrom> | hee hee I love the powerpoint one. |
| 18:26:02 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:26:05 | <dminuoso> | This rather sounds like you had some bad experience with some. |
| 18:26:22 | <maerwald> | dminuoso: no, it's about not allowing ppl to make horrible things |
| 18:26:41 | <dminuoso> | Well, since Im the one writing the config, Im fine wielding a chainsaw. |
| 18:26:43 | <dminuoso> | I can handle it |
| 18:26:50 | <maerwald> | if you give 10 ppl C++, you will get 9 horrible solutions |
| 18:27:02 | geekosaur | guesses you will get 10 |
| 18:27:08 | <maerwald> | ok, fair |
| 18:27:11 | <dolio> | 'Nothing forces you to use all of Haskell,' doesn't help you operate on those configurations, because nothing is preventing the configuration from using all of Haskell. |
| 18:27:16 | monochrom | guesses 12. |
| 18:27:33 | <dminuoso> | dolio: It really depends on whether a seperation between people who configure it and people who program is intended. |
| 18:27:34 | <maerwald> | I'm trying to be diplomatic here :p |
| 18:27:42 | <maerwald> | let's assume there's one good C++ programmer |
| 18:27:46 | monochrom | likes to say "if there are 10 books/people then there are 11 opinions" |
| 18:27:58 | → | knupfer1 joins (~Thunderbi@200116b82c64550001cedb7d844841a5.dip.versatel-1u1.de) |
| 18:28:08 | <dolio> | No, the people don't matter. It is a limitation on tools. |
| 18:28:08 | <monochrom> | because you need to take into account how some people can't even make up their minds. |
| 18:28:49 | <monochrom> | When I have n students I know I'll be getting 1.1n horrible solutions. |
| 18:28:51 | <maerwald> | really... the reason I prefer haskell over C++ is not because it's more expressive, but it's LESS expressive |
| 18:29:04 | <monochrom> | This is known as creativity. |
| 18:29:22 | × | knupfer quits (~Thunderbi@200116b82ce9b80069be852dc8e82fbe.dip.versatel-1u1.de) (Ping timeout: 258 seconds) |
| 18:29:22 | knupfer1 | is now known as knupfer |
| 18:30:14 | <maerwald> | and now you need devs with 20 years of experience, who an navigate through all the problems and pitfalls of C++, while still maintaining there mental health |
| 18:30:37 | <dminuoso> | In our case, we need a radius server that is deeply coupled into code. The code *is* the configuration. |
| 18:30:37 | <maerwald> | or you just use a non-turing complete config format |
| 18:30:45 | <dolio> | It doesn't matter if you are the person writing the configuration and the person operating on the configuration. If you increase the capabilities that the configuration can express, you decrease the abilities that things that operate on the configuration can do (at least, without significant difficulty). |
| 18:31:05 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 18:31:26 | <dminuoso> | dolio: Seeing as in our business we ship code changes on a weekly basis to some products, I'd consider these code changes as configuration changes. |
| 18:31:33 | <dminuoso> | They are changes to the runtime behavior of these applications. |
| 18:31:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:31:41 | <dminuoso> | Is this configuration? Depends on who you ask. |
| 18:31:46 | <monochrom> | #haskell gains a part-time job of tech support for xmonad. That's the evidence I present to this discussion. |
| 18:32:21 | <dminuoso> | monochrom: Many xmonad support seekers appear to be non-haskellers though. |
| 18:32:44 | <dminuoso> | In our (arguably limited) case it's expected that the people interacting with the code are proficient in the language. |
| 18:32:59 | <maerwald> | yes and now they get dragged into a language that many ppl need months to learn and study before they can write a program :> |
| 18:33:04 | <geekosaur> | funny thing, last time you threw a hissyfit about it (a) it wasn't even about xmonad, but xmobar (b) and was more about arch anyway iirc |
| 18:33:11 | <monochrom> | That's a failed expectation. |
| 18:33:16 | <dminuoso> | (And yes, we even have some config file to configure some peripheral stuff, like the binding address/port for the radius server - so that the server guys can tweak it if need be) |
| 18:33:35 | × | frozenErebus quits (~frozenEre@94.128.219.166) (Ping timeout: 256 seconds) |
| 18:34:10 | <maerwald> | I'd say yes... you can ofc design your config format turing complete. But then I'd argue you care little about your users. The power users can modify your code anyway. |
| 18:34:57 | <maerwald> | Not caring about users is fine too. I think XMonad was more of an experiment than a commitment. |
| 18:35:03 | <monochrom> | I am looking like I'm taking side when I am not, but if "expect fluency in Haskell" fails, why can't "expect no abuse of Turing-completeness" fail too? |
| 18:35:26 | <dminuoso> | For something like xmonad.. I quite enjoy it. But I didnt enjoy programming xmonad until I became proficient in Haskell |
| 18:36:34 | <monochrom> | I might even stretch that arch is involved because, only because, xmonad requires so much recompilation... |
| 18:36:36 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 18:37:15 | <dminuoso> | "Tt really depends on whether a seperation between people who configure it and people who program is intended." |
| 18:37:20 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:37:21 | <dminuoso> | (And who the target audience for your config/code is) |
| 18:37:39 | <dminuoso> | If you just want wide-spread haskell-muggle adoption, then yeah, using haskell to configure your program is probably not the best of ideas. |
| 18:37:51 | × | kuribas quits (~user@ptr-25vy0ia1ougr5zd5t67.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 18:38:47 | → | otulp joins (~otulp@ti0187q162-6639.bb.online.no) |
| 18:39:22 | <maerwald> | that's why nix is awful too: it doesn't really have a config format... it's just a turing complete language and everything goes |
| 18:39:39 | <maerwald> | and you can see that by all the stuff that happens in the ecosystem |
| 18:39:49 | <maerwald> | which *forces* you to keep up with all that |
| 18:39:59 | × | fendor quits (~fendor@91.141.3.187.wireless.dyn.drei.com) (Remote host closed the connection) |
| 18:40:04 | <dminuoso> | maerwald: I have mixed feelings about that part. We're starting to reroll our entire infrastructure (encompassing roughly 200 VMs and 20 servers) in all of nixos. |
| 18:40:16 | <dminuoso> | Many of these systems need complex intertwined configuration |
| 18:40:17 | <monochrom> | I also doubt that Turing-completeness is the only factor, FWIW. |
| 18:40:27 | <dminuoso> | nix is the only power tool we think can manage this. |
| 18:40:30 | <maerwald> | monochrom: the other factor is git |
| 18:40:31 | <dolio> | Also SysV init. :þ |
| 18:40:38 | <monochrom> | It increases probability of awfulness, yes. |
| 18:41:09 | <dminuoso> | maerwald: So for that use case, nix is really well suited, with all the negative parts it has. |
| 18:42:04 | <maerwald> | when bugfixing is quick and swift, because you just pushed a new commit... you don't get hate and shame anymore for writing shi**y code. Now everything is agile and open development. No one sleeps a night before doing a release, because you can re-release the next day |
| 18:42:10 | <dolio> | Just because it's the only tool that can solve the problem doesn't mean it couldn't be designed better. |
| 18:42:26 | <dminuoso> | Absolutely, but the turing power is certainly not the negative side here. |
| 18:42:34 | <monochrom> | GHC and Hugs and I believe every published Haskell implementation has unsafePerformIO. maerwald predicted total apocalyse based on that. Somehow it didn't happen. Not even remotely close to awfulness. That's an interesting outcome I can't explain but like to think about. |
| 18:43:04 | <dminuoso> | From my point, nix suffers mainly from 1) lack of types, 2) lack of a strong module system, 3) complete and utter lack of documentation and centralized ways to find documentation, and 4) some syntax quirks that are really annoying. |
| 18:43:32 | <dminuoso> | 3) is perhaps the biggest problem of them all |
| 18:43:38 | <maerwald> | dminuoso: no, it lacks a config format =) |
| 18:43:46 | → | fendor joins (~fendor@91.141.3.187.wireless.dyn.drei.com) |
| 18:43:58 | <dminuoso> | maerwald: Dunno, in nixos you have very specifiable config formats.. |
| 18:44:04 | <dminuoso> | in form of nixos modules |
| 18:44:27 | <dminuoso> | But the tie into software is ugly, and usually needs some intermediate configuration language |
| 18:44:35 | <maerwald> | I mean a non-turing complete one... and a separation between configuration and packaging (there is none) |
| 18:44:57 | × | deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 264 seconds) |
| 18:45:00 | <maerwald> | most distros have a very thick line between packaging and config |
| 18:45:36 | <maerwald> | because packaging is awful |
| 18:46:16 | <maerwald> | and you're sorry about it, but you need more expressiveness, because of the madness you're dealing with (see, someone else forces you into it) |
| 18:47:01 | → | Mrbuck joins (~Mrbuck@gateway/tor-sasl/mrbuck) |
| 18:47:25 | → | jamm_ joins (~jamm@unaffiliated/jamm) |
| 18:47:56 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 240 seconds) |
| 18:47:57 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 18:48:50 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:48:55 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Quit: leaving) |
| 18:52:02 | × | jamm_ quits (~jamm@unaffiliated/jamm) (Ping timeout: 260 seconds) |
| 18:52:05 | <monochrom> | I'll try this theory: Perhaps meaningful names have a much tighter grip on people than I can fathom. People look at the "unsafe" in the name "unsafePerformIO" and are really deterred. Compare to for example I don't know type casting in C and null in Java. They are not spelled "unsafe(int*)" or "unsafeNull", so people use them freely. |
| 18:52:33 | × | jacks2 quits (~bc8134e3@217.29.117.252) (Quit: http://www.okay.uz/ (EOF)) |
| 18:53:33 | → | jhbrown94 joins (32e080ea@50-224-128-234-static.hfc.comcastbusiness.net) |
| 18:53:56 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds) |
| 18:54:36 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 18:54:39 | → | worc3131 joins (~quassel@2a02:c7f:dcc4:6500:217b:6c7a:eac3:3be9) |
| 18:54:58 | <maerwald> | monochrom: I'm not sure if "unsafeFoo" in the nodejs world would make any difference to coding practices |
| 18:55:10 | <swarmcollective> | unsafeNull and unsafeCast would be Excellent! :D |
| 18:56:25 | × | urodna quits (~urodna@unaffiliated/urodna) (Ping timeout: 240 seconds) |
| 18:57:32 | <swarmcollective> | At least they are starting to put Optional<> in java frameworks instead of relying on null. ;) That's a step. |
| 18:58:25 | × | augnun quits (~augnun@2804:14c:658b:41bb:3dc0:3938:a79e:b2ee) (Ping timeout: 272 seconds) |
| 18:58:28 | <ski> | monochrom : syntactic salt has a place, yes |
| 18:59:33 | <maerwald> | monochrom: and in C++ they would probably consider unsaf_foo a faster foo and not worry |
| 18:59:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 19:00:16 | <maerwald> | "only breaks with -O3, so don't use -O3" |
| 19:00:28 | <swarmcollective> | True, safety is "slower". Ha! |
| 19:00:32 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:00:57 | <dolio> | It might be laziness. |
| 19:01:02 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) |
| 19:01:11 | <dolio> | Sprinkling unsafePerformIO around just doesn't work very well. |
| 19:01:22 | × | Jesin quits (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) (Quit: Leaving) |
| 19:01:42 | <dolio> | So it doesn't matter that it exists, it's better to do things the right way. |
| 19:01:44 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 19:02:20 | <maerwald> | well, the only good reason to use it IS in fact performance optimizations hidden under a seemingly pure API surface |
| 19:02:36 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 240 seconds) |
| 19:02:53 | <dolio> | Not seemingly, effectively. |
| 19:02:58 | × | jhbrown94 quits (32e080ea@50-224-128-234-static.hfc.comcastbusiness.net) (Quit: Connection closed) |
| 19:03:15 | <dolio> | If it doesn't actually act pure, it's going to be really annoying. |
| 19:03:16 | <maerwald> | dolio: that probably depends on the compiled, I'd say |
| 19:03:25 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 19:03:31 | <maerwald> | so sure, they'll have tesed it with GHC |
| 19:03:43 | <maerwald> | but I don't bet money that it works somewhere else |
| 19:04:01 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds) |
| 19:04:07 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 272 seconds) |
| 19:05:01 | <maerwald> | my pain is affecting my typing accuracy... it's a good sign to stop and watch netflix :D |
| 19:05:53 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 19:06:17 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:07:06 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 19:07:21 | → | apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net) |
| 19:10:28 | → | Jesin joins (~Jesin@pool-72-66-101-18.washdc.fios.verizon.net) |
| 19:10:45 | × | arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 264 seconds) |
| 19:16:02 | × | geekosaur quits (82650c7a@130.101.12.122) (Ping timeout: 240 seconds) |
| 19:16:16 | × | fryguybob quits (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) (Ping timeout: 240 seconds) |
| 19:17:05 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 19:17:35 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:18:09 | → | pengjiz joins (~user@2601:547:902:6d00::1) |
| 19:20:39 | → | esp32_prog joins (~esp32_pro@185.195.233.147) |
| 19:23:07 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 19:23:20 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:23:31 | → | deviantfero joins (~deviantfe@190.150.27.58) |
| 19:24:48 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 19:25:02 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 19:27:07 | × | kupi quits (uid212005@gateway/web/irccloud.com/x-eebherdsvusazjal) (Quit: Connection closed for inactivity) |
| 19:27:48 | → | arw joins (~arw@impulse.informatik.uni-erlangen.de) |
| 19:28:45 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 19:29:03 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 19:29:05 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:29:19 | × | eyenx quits (~eyenxeyen@unaffiliated/eye/x-1653358) (Remote host closed the connection) |
| 19:31:14 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 19:31:31 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 19:31:50 | → | eyenx joins (~eyenxeyen@unaffiliated/eye/x-1653358) |
| 19:32:21 | × | arw quits (~arw@impulse.informatik.uni-erlangen.de) (Ping timeout: 264 seconds) |
| 19:33:03 | × | eyenx quits (~eyenxeyen@unaffiliated/eye/x-1653358) (Remote host closed the connection) |
| 19:33:30 | → | fryguybob joins (~fryguybob@cpe-74-65-31-113.rochester.res.rr.com) |
| 19:33:38 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 19:34:13 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 19:34:47 | × | tachylyte quits (~tachylyte@host86-142-90-26.range86-142.btcentralplus.com) (Quit: leaving) |
| 19:34:47 | → | geekosaur joins (82650c7a@130.101.12.122) |
| 19:34:50 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:36:13 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 19:39:11 | × | carlomagno quits (~cararell@148.87.23.13) (Remote host closed the connection) |
| 19:39:19 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 19:40:09 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 19:40:47 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 19:41:43 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 19:43:18 | → | aarvar joins (~foewfoiew@2601:602:a080:fa0:49bc:1f9e:3510:3fc5) |
| 19:44:27 | → | [1]MrMobius joins (~MrMobius@208.58.206.154) |
| 19:44:46 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 19:45:02 | × | MrMobius quits (~MrMobius@208.58.206.154) (Ping timeout: 264 seconds) |
| 19:45:03 | [1]MrMobius | is now known as MrMobius |
| 19:48:45 | → | joecordingley joins (~joecordin@2a01:4b00:868e:6b00:b1ca:7352:e00f:e9bd) |
| 19:49:04 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 19:50:26 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
| 19:54:21 | → | contiver joins (~contiver@84-115-64-144.wifi.dynamic.surfer.at) |
| 19:57:16 | × | leo___ quits (~leo@cpc96810-rdng27-2-0-cust409.15-3.cable.virginm.net) (Ping timeout: 240 seconds) |
| 19:59:56 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds) |
| 20:00:21 | × | pera quits (~pera@unaffiliated/pera) (Quit: leaving) |
| 20:01:58 | → | epicte7us joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 20:02:21 | × | contiver quits (~contiver@84-115-64-144.wifi.dynamic.surfer.at) (Ping timeout: 264 seconds) |
| 20:03:51 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 20:04:45 | × | ep1ctetus quits (~epictetus@ip72-194-215-136.sb.sd.cox.net) (Ping timeout: 240 seconds) |
| 20:05:21 | × | petersen quits (~petersen@redhat/juhp) (Ping timeout: 264 seconds) |
| 20:07:29 | × | forgottenone quits (~forgotten@176.42.20.136) (Quit: Konversation terminated!) |
| 20:07:53 | → | petersen joins (~petersen@redhat/juhp) |
| 20:08:25 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 20:08:46 | → | eyenx joins (~eyenxeyen@unaffiliated/eye/x-1653358) |
| 20:10:16 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 240 seconds) |
| 20:10:25 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 240 seconds) |
| 20:10:56 | → | Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 20:11:22 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 272 seconds) |
| 20:11:27 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 20:12:36 | <justsomeguy> | Is it impossible to define an instance of Functor for the type ''data K a b = K a''? I keep on getting type errors if I try something like ''instance Functor (K a) where { fmap f (K a) = K (f a) }''. |
| 20:12:56 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 240 seconds) |
| 20:12:58 | <koz_> | justsomeguy: That's just Const. |
| 20:13:07 | <koz_> | So it is very possible. |
| 20:13:33 | <koz_> | The problem you're having is that 'f' has a different type to what you're thinking. |
| 20:13:41 | <koz_> | It's not a -> c, it's _b_ -> c. |
| 20:14:02 | <koz_> | In Const, the second type parameter is phantom. |
| 20:14:08 | <koz_> | So you can change it to whatever whenever. |
| 20:14:20 | <koz_> | So you just ignore the function and rebuild the Const with the same value 'inside' it always had. |
| 20:14:38 | <koz_> | You can think of 'Const a b' as 'an a pretending to be a b'. |
| 20:14:51 | <koz_> | So we can have it pretend to be a c, and you only pass the function so fmap is happy. |
| 20:14:56 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 20:15:04 | → | carlomagno joins (~cararell@148.87.23.11) |
| 20:16:16 | × | notzmv quits (~zmv@unaffiliated/zmv) (Ping timeout: 240 seconds) |
| 20:17:55 | → | acidjnk_new joins (~acidjnk@p200300d0c73909529c208343cf3ed1b3.dip0.t-ipconnect.de) |
| 20:17:57 | → | __minoru__shirae joins (~shiraeesh@77.94.25.253) |
| 20:18:09 | → | Franciman joins (~francesco@host-82-49-79-189.retail.telecomitalia.it) |
| 20:18:13 | × | minoru_shiraeesh quits (~shiraeesh@5.101.59.211) (Ping timeout: 260 seconds) |
| 20:18:23 | <kw> | How can I convince folks that `fromIntegral` is worse than `unsafePerformIO`? |
| 20:18:24 | <monochrom> | fmap f (K a) = K a |
| 20:19:07 | <monochrom> | You can't. It's falsee. |
| 20:19:24 | <kw> | Any way to get it renamed to `unasafeCoerceIntegral` ? |
| 20:19:36 | <koz_> | kw: Write your own Prelude. |
| 20:19:49 | <monochrom> | Over my dead body and from merijn's cold dead claws. |
| 20:19:53 | <EvanR> | how is fromIntegral bad |
| 20:20:09 | <koz_> | EvanR: I think kw got bitten by implicit narrowing. |
| 20:20:17 | <monochrom> | "I disagree with fromIntegral but I'd defend its rights with my life" |
| 20:20:24 | <koz_> | monochrom: Wait, merijn has claws and not tentacles? |
| 20:20:25 | <kw> | Because it's unsafe coercion of integral types. |
| 20:20:25 | <kw> | koz_: yeah, pretty much. |
| 20:20:36 | <monochrom> | fromIntegral is bad but "worse than unsafePerformIO" are you serious. |
| 20:20:39 | <EvanR> | is unsafe the "unsustainable" |
| 20:20:43 | <EvanR> | the new |
| 20:20:55 | <int-e> | it doesn't break the type system, so it's safe :P |
| 20:20:56 | × | thc202 quits (~thc202@unaffiliated/thc202) (Ping timeout: 240 seconds) |
| 20:21:08 | <monochrom> | s/serious/lunatic/ |
| 20:21:09 | <merijn> | fromIntegral is terrible, but unsafePerformIO is infinitely worse |
| 20:21:25 | <kw> | Yeah, and `unsafePerformIO` is just the natural Comonadic extraction function for the IO monad. |
| 20:21:33 | <EvanR> | in some cases i would like a more targeted conversion function |
| 20:21:35 | × | deviantfero quits (~deviantfe@190.150.27.58) (Quit: WeeChat 3.0) |
| 20:21:36 | <merijn> | kw: Except it's not |
| 20:21:49 | <koz_> | Not least of all because IO isn't a comonad. |
| 20:21:49 | <merijn> | kw: Because IO doesn't obey Comonad laws |
| 20:22:18 | <EvanR> | is quantum mechanics a comonad though? |
| 20:22:24 | <monochrom> | Use https://hackage.haskell.org/package/int-cast if you're concerned. |
| 20:22:24 | <int-e> | impurity aside, unsafePerformIO does break the type system by allowing you to make a polymorphic ioref |
| 20:22:26 | <merijn> | I mean, if IO is a Comonad, then so is literally any type of kind "* -> *" by virtue of unsafeCoerce |
| 20:22:31 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 20:22:39 | <kw> | Let me just put it this way: people get that `unsafePerformIO` is unsafe, but I see `fromIntegral` thrown around like candy with no indication of the intervening types. |
| 20:22:41 | <monochrom> | But call-for-crusades will get you nowhere. |
| 20:22:57 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 20:22:59 | <kw> | Far enough. |
| 20:23:07 | <EvanR> | monochrom: for instance, convert from int to double |
| 20:23:32 | <int-e> | I agree that fromIntegral should make you pause and think. I don't agree with the idea that it's unsafe. |
| 20:23:46 | <merijn> | int-e: I do |
| 20:23:51 | <kw> | monochrom: int-cast looks awesome; thanks! |
| 20:23:52 | <int-e> | it's not even a partial function |
| 20:24:01 | <merijn> | Anything that can be reviewed by 4 people and have bugs is unsafe >.> |
| 20:24:25 | <monochrom> | unsafeUseComputer |
| 20:24:26 | <EvanR> | > fromIntegral (-1) :: Natural |
| 20:24:27 | <lambdabot> | error: |
| 20:24:28 | <lambdabot> | Not in scope: type constructor or class ‘Natural’ |
| 20:24:34 | <kw> | :t fromIntegral :: Integer -> Word |
| 20:24:35 | <lambdabot> | Integer -> Word |
| 20:24:36 | <int-e> | merijn: okay, just prefix all function names wity "unsafe" then |
| 20:25:03 | <int-e> | . o O ( unsafeId :: a -> a ) |
| 20:25:03 | <merijn> | int-e: There's plenty of functions where that's not the case |
| 20:25:23 | <kw> | Is 'Word' even a numeric type? Is it supposed to be a machine-width natural, or just a sequence of bits? |
| 20:25:28 | <monochrom> | I'm pretty sure all shrink-wrap software and downloaded software already says "I am unsafe". |
| 20:25:49 | <fendor> | > fromIntegral (2 ^ 64 :: Integer) :: Int |
| 20:25:51 | <lambdabot> | 0 |
| 20:25:55 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 20:26:20 | <koz_> | kw: It's both. Unfortunately. |
| 20:26:24 | <monochrom> | Except for some IBM software, the EULA of which is 30 pages detailing your rights. |
| 20:26:31 | <kw> | > fromIntegral (-1 :: Int) :: Word |
| 20:26:32 | <lambdabot> | 18446744073709551615 |
| 20:26:37 | → | stree joins (~stree@68.36.8.116) |
| 20:26:42 | <int-e> | > S.length $ iterate (\x -> x <> x) (S.singleton ()) !! 63 |
| 20:26:42 | monochrom | was impressed with OS/2 EULA |
| 20:26:43 | <lambdabot> | error: |
| 20:26:43 | <lambdabot> | Not in scope: ‘S.length’ |
| 20:26:43 | <lambdabot> | Perhaps you meant one of these: |
| 20:26:52 | <EvanR> | Word is a number. Sequence of bits is up to your interpretation |
| 20:27:40 | <justsomeguy> | Thanks for the enlightenment, koz_. |
| 20:27:52 | <int-e> | > Seq.length $ iterate (\x -> x <> x) (Seq.singleton ()) !! 63 -- crusaders take note |
| 20:27:53 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 20:27:53 | <lambdabot> | -9223372036854775808 |
| 20:28:09 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 264 seconds) |
| 20:28:25 | <kw> | At least Seq explicitly has an unchecked maximum size. |
| 20:28:55 | <int-e> | and fromIntegral does modular reduction |
| 20:29:00 | int-e | shrugs |
| 20:29:46 | <koz_> | justsomeguy: No problem. |
| 20:29:57 | <EvanR> | toInteger seems solidly total, fromInteger might not be |
| 20:29:59 | <merijn> | int-e: The problem is that it's API makes it *incredibly* awkward to do what people actually *want* to do |
| 20:30:16 | <merijn> | What people *want* is bounds checked conversion, and that doesn't exist |
| 20:30:23 | <int-e> | I would rather reserve "unsafe" for functions that are almost always dubious... and I think fromIntegral doesn't clear that threshold to my mind. |
| 20:30:26 | × | ClaudiusMaximus quits (~claude@unaffiliated/claudiusmaximus) (Quit: ->) |
| 20:30:28 | <kw> | I love `fromInteger` and `toInteger` . It's `fromIntegral` I can't stand. |
| 20:30:32 | <merijn> | Building your own bounds checked conversion on top of fromIntegral is borderline impossible |
| 20:31:10 | <EvanR> | fromInteger is potentially 'as bad' as head, tail |
| 20:32:50 | × | hekkaidekapus_ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 20:33:25 | × | Narinas quits (~Narinas@187.250.25.111.dsl.dyn.telnor.net) (Read error: Connection reset by peer) |
| 20:33:32 | → | conal joins (~conal@64.71.133.70) |
| 20:34:03 | → | Narinas joins (~Narinas@187.250.25.111.dsl.dyn.telnor.net) |
| 20:34:35 | <justsomeguy> | Why is Functor defined only for type constructors of one argument? Intuitively, I'd think that it's desirable to be able to map over other structures, too, and I think the functor laws can still be upheld for type constructors with more arguments, too. |
| 20:34:57 | <glguy> | :t fmap |
| 20:34:58 | <lambdabot> | Functor f => (a -> b) -> f a -> f b |
| 20:34:59 | <koz_> | justsomeguy: Because Functor means something quite specific. |
| 20:35:02 | <kw> | justsomeguy: How would you define it? |
| 20:35:11 | <merijn> | justsomeguy: N-functors are a thing conceptually, but Haskell doesn't let you define them |
| 20:35:14 | <koz_> | If you're looking for stuff that goes beyond that, consider Bifunctor and Profunctor. |
| 20:35:26 | <koz_> | (however, these are fairly different) |
| 20:35:29 | → | son0p joins (~son0p@181.58.39.182) |
| 20:36:37 | <justsomeguy> | kw: Intuitively: A structure preserving mapping between some container and that same container with some operation performed on the "contained" stuff. |
| 20:36:44 | → | hekkaidekapus_ joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 20:37:13 | <kw> | justsomeguy: And how would you define the operation on multiple types of stuff? |
| 20:37:18 | → | vchlup joins (~vchlup@nat.brnet.cz) |
| 20:37:44 | × | Pickchea quits (~private@unaffiliated/pickchea) (Quit: Leaving) |
| 20:38:09 | <justsomeguy> | The operation would have to be overloaded to support all the types of contained stuff, or it would be invalid. |
| 20:38:27 | <kw> | Like, say I have `xy :: (String, Int)`. What does mapping over that look like? |
| 20:39:25 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 20:40:59 | <kw> | Does your ` fmap'` take a `(String -> a, Int -> b)` ? |
| 20:41:03 | × | worc3131 quits (~quassel@2a02:c7f:dcc4:6500:217b:6c7a:eac3:3be9) (Remote host closed the connection) |
| 20:42:01 | <kw> | Could maybe do something like that with a type family. |
| 20:42:17 | → | worc3131 joins (~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20) |
| 20:42:32 | <kw> | But working with type-level tuples always seems like a huge pain in the ass. |
| 20:42:43 | × | DTZUZU quits (~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer) |
| 20:43:00 | → | DTZUZU joins (~DTZUZU@205.ip-149-56-132.net) |
| 20:43:12 | <justsomeguy> | Hmm... let's say the code is ''fmap (\x -> take 3 $ repeat x)'', and it's applied to ''xy''. ("this",3) would become (["this","this","this"],[3,3,3]). Does that make sense? |
| 20:43:25 | → | ixlun joins (~user@213.205.241.202) |
| 20:43:59 | <kw> | justsomeguy: But then it would be useless for, say, adding 1 to the Int. |
| 20:44:15 | <brkscnce> | hey, if I'm defining a static chessboard I'm going to be traversing to perform checks, should I go with immutable arrays as a data structure? |
| 20:44:21 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 20:44:26 | <koz_> | In fact, the only reason this works is because 'take 3 . repeat' doesn't care whatsoever about the type of its argument. |
| 20:44:46 | <koz_> | So instead of (a -> b), your fmap would have to take '(forall a . a -> b)'. |
| 20:44:58 | <justsomeguy> | kw: If the tuple was instead (1 :: Int, 2 :: Float), then you can do ''fmap (+3) (1 :: Int, 2 :: Float)'' and get ''(4,5.0)''. |
| 20:44:58 | × | klardotsh quits (~klardotsh@75-172-17-41.tukw.qwest.net) (Read error: Connection reset by peer) |
| 20:45:13 | <koz_> | justsomeguy: Yeah, except now what signature to give fmap? |
| 20:45:23 | <koz_> | 'Do the sensible thing' is not a signature. |
| 20:45:32 | <koz_> | Neither is 'allow every special case I can come up with'. |
| 20:46:59 | <justsomeguy> | Yeah, I haven't thought it through. I don't see why it isn't possible to create a new type signature that's polymorphic, though. |
| 20:47:08 | → | klardotsh joins (~klardotsh@75-172-17-41.tukw.qwest.net) |
| 20:47:10 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Remote host closed the connection) |
| 20:48:12 | <koz_> | You could come up with variants - I provided two. But for arbitrary N, N-functors aren't really something you can define in Haskell without resorting to really gory methods. |
| 20:48:13 | <kw> | In the end, it's much simpler and easier to have 'things that are functors in their rightmost type parameter' and 'things that are functors in ther rightmost two type parameters' than to try to define 'things that are functors in a type-level tuple of their type parameters'. |
| 20:49:01 | <koz_> | Since your fmap becomes a dependent type on how many type parameters you feel like having, and their types. |
| 20:49:11 | <koz_> | s/a dependent type/dependently typed/ |
| 20:49:29 | → | deviantfero joins (~deviantfe@190.150.27.58) |
| 20:49:34 | <justsomeguy> | Oh, I guess it is. |
| 20:49:38 | <koz_> | Since you'd need the equivalent of '[arbitrary tuple of these types] -> [arbitrary tuple of same shape, but different types]'. |
| 20:49:55 | <koz_> | _Can_ you spell that in Haskell? If you use GHC, throw a tonne of extensions at it, then ladle ten kinds of gore on top, yes. |
| 20:50:10 | <koz_> | Will that be usable, give sensible error messages, and not compile forever? Don't count on it. |
| 20:50:52 | <justsomeguy> | Is is possible instead to just not have our hypothetical NaryFunctor defined for tuples, but only for types like [] a or Map. |
| 20:50:55 | <justsomeguy> | ? |
| 20:51:02 | <koz_> | justsomeguy: See what I said above. |
| 20:51:07 | <koz_> | It still applies here. |
| 20:51:20 | <koz_> | This is not a problem of what instances you allow. |
| 20:51:26 | <koz_> | It's a problem of spelling the type class itself. |
| 20:52:53 | <EvanR> | are you trying to lift multiple functions at once |
| 20:53:00 | <EvanR> | like bifunctor |
| 20:53:03 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) |
| 20:54:09 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 20:54:14 | <EvanR> | because that by itself already leads you to variadic functions |
| 20:54:31 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) |
| 20:55:35 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 20:57:59 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:2ab7:7f35:48a1:8515) (Client Quit) |
| 20:58:12 | <justsomeguy> | EvanR: I was just curious as to why Functor is implemented the way it is. I don't have a particular use case in mind. |
| 20:59:44 | <monochrom> | Are you forgetting that "instance Functor ((,) a)" pretty much ties your hands? Is that already covered? |
| 21:00:05 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 21:00:19 | <monochrom> | For conceptuallly "fmap f (x, y) = (f x, f y)", don't use (,), write your own "data Pair = MkPair a a". |
| 21:00:35 | <monochrom> | err data Pair a = MkPair a a |
| 21:01:08 | <monochrom> | Extra credit for seeing how to make it a lawful Monad instance. |
| 21:01:32 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 21:01:38 | <monochrom> | An MSc certificate for seeing why it is the only choice for a lawful Monad instance. |
| 21:01:51 | <monochrom> | (I just got it last night.) |
| 21:02:35 | <EvanR> | yes master |
| 21:05:18 | <monochrom> | Or rather, "∀b. (x->y) -> (a,x) -> (a,y)" pretty much ties your hands. |
| 21:05:43 | × | hiroaki_ quits (~hiroaki@2a02:8108:8c40:2bb8:4e81:bfc6:428b:4821) (Ping timeout: 272 seconds) |
| 21:06:15 | <monochrom> | err, ∀x,y . (x->y) -> (a,x) -> (a,y) |
| 21:06:25 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) |
| 21:07:26 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Remote host closed the connection) |
| 21:08:02 | × | aplainzetakind quits (~johndoe@captainludd.powered.by.lunarbnc.net) (Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net) |
| 21:08:56 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 21:09:30 | <EvanR> | are there 4 ways to make Pair a monad |
| 21:09:53 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 21:11:25 | × | carlomagno quits (~cararell@148.87.23.11) (Ping timeout: 260 seconds) |
| 21:11:53 | → | aplainzetakind joins (~johndoe@captainludd.powered.by.lunarbnc.net) |
| 21:13:04 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 21:14:42 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 21:14:43 | × | klardotsh quits (~klardotsh@75-172-17-41.tukw.qwest.net) (Read error: Connection reset by peer) |
| 21:14:48 | → | pavonia^\_^\ joins (~user@unaffiliated/siracusa) |
| 21:15:01 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 21:15:28 | <Ferdirand> | interesting |
| 21:16:18 | <ezzieyguywuf> | dminuoso: but why reimplement dmenu/rofi in xmonad, if it's already a great standalone? #unix-philosophy, no? |
| 21:16:35 | <Ferdirand> | if List is a monad, and lists of at least two elements are a closed subset under join/pure/fmap |
| 21:16:53 | <Ferdirand> | and if pairs are projections of the first and last element of such lists |
| 21:17:23 | → | hiroaki_ joins (~hiroaki@2a02:8108:8c40:2bb8:4773:d7d4:420a:eae0) |
| 21:17:45 | × | nhs quits (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) (Ping timeout: 240 seconds) |
| 21:18:09 | → | nhs joins (~nhs@c-67-180-177-103.hsd1.ca.comcast.net) |
| 21:18:16 | <Ferdirand> | non-empty lists, rather |
| 21:20:31 | <dolio> | Why reimplement dwm in Haskell and call it xmonad? |
| 21:21:04 | <geekosaur> | because C is a lousy language for EDSLs |
| 21:21:16 | <koz_> | s/for EDSLs// |
| 21:21:31 | <geekosaur> | (I'm more or less quoting sjanssen) |
| 21:22:41 | → | klardotsh joins (~klardotsh@75-172-17-41.tukw.qwest.net) |
| 21:24:16 | × | apache8080 quits (~rishi@wsip-70-168-153-252.oc.oc.cox.net) (Ping timeout: 240 seconds) |
| 21:31:00 | × | ixlun quits (~user@213.205.241.202) (Remote host closed the connection) |
| 21:31:20 | × | Franciman quits (~francesco@host-82-49-79-189.retail.telecomitalia.it) (Quit: Leaving) |
| 21:31:46 | → | apache8080 joins (~rishi@wsip-70-168-153-252.oc.oc.cox.net) |
| 21:34:35 | × | Mrbuck quits (~Mrbuck@gateway/tor-sasl/mrbuck) (Quit: WeeChat 1.9.1) |
| 21:36:13 | × | son0p quits (~son0p@181.58.39.182) (Quit: leaving) |
| 21:36:33 | × | deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 246 seconds) |
| 21:38:01 | × | danvet quits (~Daniel@2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa) (Ping timeout: 272 seconds) |
| 21:41:40 | × | geekosaur quits (82650c7a@130.101.12.122) (Quit: Connection closed) |
| 21:42:33 | × | esp32_prog quits (~esp32_pro@185.195.233.147) (Ping timeout: 264 seconds) |
| 21:42:49 | × | fresheyeball quits (~isaac@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9) |
| 21:43:50 | → | son0p joins (~son0p@181.136.122.143) |
| 21:44:21 | × | worc3131 quits (~quassel@2a02:c7f:dcc4:6500:cf0e:3346:8766:ab20) (Ping timeout: 272 seconds) |
| 21:45:18 | → | esp32_prog joins (~esp32_pro@185.195.233.147) |
| 21:45:19 | × | kw quits (d4662d5d@212.102.45.93) (Quit: Connection closed) |
| 21:47:03 | × | alx741 quits (~alx741@186.178.108.179) (Ping timeout: 246 seconds) |
| 21:48:10 | × | nbloomf quits (~nbloomf@2600:1700:ad14:3020:6d81:661e:8f9e:1f6f) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 21:48:30 | → | kw joins (d4662d5d@212.102.45.93) |
| 21:49:30 | → | deviantfero joins (~deviantfe@190.150.27.58) |
| 21:52:26 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
| 21:54:12 | → | irc_user joins (uid423822@gateway/web/irccloud.com/x-fajfitegppdbkpgx) |
| 21:54:20 | → | fendor_ joins (~fendor@91.141.0.220.wireless.dyn.drei.com) |
| 21:55:58 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 21:56:39 | <monochrom> | EvanR: No, there is only one way. Check the monad identity laws, they force your hands. |
| 21:57:25 | → | ddellacosta joins (~ddellacos@86.106.143.111) |
| 21:57:31 | <monochrom> | In this case I think the join version of the monad definition is the easiest to work with. |
| 21:57:47 | × | fendor quits (~fendor@91.141.3.187.wireless.dyn.drei.com) (Ping timeout: 265 seconds) |
| 21:58:51 | × | infinisil quits (~infinisil@NixOS/user/infinisil) (Quit: Configuring ZNC, sorry for the joins/quits!) |
| 21:59:14 | × | soft-warm quits (44695313@ip68-105-83-19.sd.sd.cox.net) (Quit: Connection closed) |
| 21:59:14 | <dolio> | Ferdirand: It is not closed under pure. The monad on `Pair` is different than the one for lists. |
| 21:59:23 | → | infinisil joins (~infinisil@NixOS/user/infinisil) |
| 22:00:12 | → | alx741 joins (~alx741@181.196.69.27) |
| 22:00:34 | → | Rudd0 joins (~Rudd0@185.189.115.108) |
| 22:02:06 | <monochrom> | This is such a litmus test of how much you really "understand" monads. :) |
| 22:03:08 | × | dhouthoo quits (~dhouthoo@ptr-eitgbj2w0uu6delkbrh.18120a2.ip6.access.telenet.be) (Quit: WeeChat 3.0) |
| 22:03:08 | <monochrom> | I.e., you are not done just because you have coded up a candidate that type-checks and adds no bottom. |
| 22:03:09 | × | ddellacosta quits (~ddellacos@86.106.143.111) (Remote host closed the connection) |
| 22:04:25 | <monochrom> | To be fair, being able to code up total, type-checked functions is already better than the level of "I have read a blog that says monads are about sequencing". |
| 22:04:54 | × | DTZUZU quits (~DTZUZU@205.ip-149-56-132.net) (Read error: Connection reset by peer) |
| 22:05:27 | → | DTZUZU joins (~DTZUZU@205.ip-149-56-132.net) |
| 22:05:53 | × | vk3wtf quits (~doc@203.221.224.44) (Quit: WeeChat 2.7.1) |
| 22:06:12 | → | vk3wtf joins (~doc@203.221.224.44) |
| 22:07:50 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) |
| 22:08:13 | <EvanR> | i have basic category theory by tom leinster. It doesn't even cover monads! |
| 22:08:20 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 22:08:23 | <infinisil> | I wouldn't be surprised if idris could write a monad instance automatically |
| 22:08:25 | × | deviantfero quits (~deviantfe@190.150.27.58) (Ping timeout: 240 seconds) |
| 22:08:40 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 22:10:11 | × | vk3wtf quits (~doc@203.221.224.44) (Client Quit) |
| 22:12:38 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Ping timeout: 264 seconds) |
| 22:12:45 | → | vk3wtf joins (~doc@203.221.224.44) |
| 22:13:05 | <NieDzejkob_> | I want to make my expressions compare as equal when they're alpha-equivalent. Is there a more concise way of writing this Eq instance? https://paste.tomsmeding.com/jWzci40D |
| 22:13:53 | wpcarro_ | is now known as wpcarro |
| 22:14:11 | × | vk3wtf quits (~doc@203.221.224.44) (Client Quit) |
| 22:14:23 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 22:14:30 | <monochrom> | If Lam doesn't have the Symbol field, then it's "deriving Eq". :) |
| 22:14:32 | → | vk3wtf joins (~doc@203.221.224.44) |
| 22:15:31 | <int-e> | well, thius looks wrong... |
| 22:15:39 | → | zmv- joins (~zmv@191.255.89.231) |
| 22:16:00 | <int-e> | wouldn't it make \x. x = \y. x |
| 22:16:58 | <int-e> | Or is "Bound" a de Bruijn index? |
| 22:19:17 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 22:20:38 | → | Tops2 joins (~Tobias@dyndsl-091-249-082-052.ewe-ip-backbone.de) |
| 22:20:56 | × | knupfer quits (~Thunderbi@200116b82c64550001cedb7d844841a5.dip.versatel-1u1.de) (Ping timeout: 240 seconds) |
| 22:23:00 | <koz_> | What is the kind of IsList's type parameter? |
| 22:23:31 | <koz_> | I assume Type - am I right? |
| 22:23:34 | <int-e> | NieDzejkob_: Anyway, no, I don't think it gets more concise than that... well, not without resorting to silly things like using generics to replace all the Symbol values in Lam constructors by a fixed dummy symbol and then comparing the results... which does *not* improve readability. |
| 22:23:42 | × | __minoru__shirae quits (~shiraeesh@77.94.25.253) (Read error: Connection reset by peer) |
| 22:24:04 | → | heatsink joins (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) |
| 22:24:07 | × | alx741 quits (~alx741@181.196.69.27) (Quit: alx741) |
| 22:24:25 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 22:24:56 | → | carlomagno joins (~cararell@148.87.23.11) |
| 22:24:59 | → | arw joins (~arw@impulse.informatik.uni-erlangen.de) |
| 22:26:06 | × | hyperisco quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Disconnected by services) |
| 22:26:07 | → | hyperisco_ joins (~hyperisco@d192-186-117-226.static.comm.cgocable.net) |
| 22:27:31 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Remote host closed the connection) |
| 22:27:32 | × | rj quits (~x@gateway/tor-sasl/rj) (Ping timeout: 268 seconds) |
| 22:27:39 | <dolio> | koz_: I think so. |
| 22:27:45 | <koz_> | OK, cool. |
| 22:28:20 | → | __minoru__shirae joins (~shiraeesh@77.94.25.253) |
| 22:30:25 | × | jess quits (jess@freenode/staff/jess) (Quit: Leaving) |
| 22:31:02 | <int-e> | NieDzejkob_: With syb, it would be something like s == t = let normalize = everywhere (\t -> case cast t of Just (Lam _ t e) -> Lam dummySymbol t e; _ -> t) in normalize s == normalize t -- untested, and it's been a while since I used generics |
| 22:31:19 | → | adium joins (adium@unaffiliated/adium) |
| 22:32:20 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 22:32:32 | <int-e> | Anyway I think I'd prefer the explicit recursion. |
| 22:33:32 | × | motherfsck quits (~motherfsc@unaffiliated/motherfsck) (Quit: quit) |
| 22:34:57 | × | stree quits (~stree@68.36.8.116) (Ping timeout: 260 seconds) |
| 22:36:34 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 22:38:18 | <dolio> | It seems unfortunate that the work rewriting the tree could just be checking equality instead. :) |
| 22:38:51 | → | conal joins (~conal@64.71.133.70) |
| 22:39:27 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 22:41:15 | × | son0p quits (~son0p@181.136.122.143) (Quit: Lost terminal) |
| 22:41:57 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 260 seconds) |
| 22:42:15 | <ukari> | I want to know how to use reflex primitives (not reflex-dom) but drown in the complex. And I try to write an example which print "test" every second but fails. Could anyone shows the right example? https://gist.github.com/ukari/22b75e7fde47d1ff0c11d8d6affcc290 |
| 22:42:20 | <monochrom> | "Let fusion optimize that." |
| 22:42:54 | <dolio> | What fusion? :þ |
| 22:44:39 | → | neiluj joins (~jco@91-167-203-101.subs.proxad.net) |
| 22:44:45 | × | neiluj quits (~jco@91-167-203-101.subs.proxad.net) (Changing host) |
| 22:44:45 | → | neiluj joins (~jco@unaffiliated/neiluj) |
| 22:44:45 | → | hseg_ joins (~gesh@IGLD-84-228-239-97.inter.net.il) |
| 22:45:45 | <Axman6> | Thanks VMWare |
| 22:47:30 | → | stree joins (~stree@68.36.8.116) |
| 22:48:00 | × | hseg quits (~gesh@IGLD-84-228-239-97.inter.net.il) (Ping timeout: 260 seconds) |
| 22:48:50 | <int-e> | NieDzejkob_: also this is not applicable because we can't get at the derived Eq instance's code and also define our own Eq instance. So never mind |
| 22:49:39 | → | mputz joins (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) |
| 22:49:47 | × | conal quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 22:49:57 | <int-e> | Do we have generic schemes for zip-like functions somewhere? |
| 22:51:14 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 22:53:43 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 22:55:25 | → | conal joins (~conal@64.71.133.70) |
| 22:55:26 | → | rj joins (~x@gateway/tor-sasl/rj) |
| 22:55:44 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 22:56:01 | × | hyperisco_ quits (~hyperisco@d192-186-117-226.static.comm.cgocable.net) (Quit: Curry, you fools!) |
| 22:56:16 | × | mputz quits (~Thunderbi@dslb-088-064-063-125.088.064.pools.vodafone-ip.de) (Ping timeout: 240 seconds) |
| 22:57:47 | <dolio> | One could consider a newtype around Symbol such that (==) is always true. Then use that in the spots where symbol equality is unnecessary. |
| 22:57:59 | → | conal_ joins (~conal@64.71.133.70) |
| 22:57:59 | <Axman6> | with singletonsa, is there a way to go from a Int (or Word, or Natural etc.) to a an expression which knows which Nat that is equivalent to at runtime? |
| 22:58:44 | <Axman6> | it's been too long since I've looked at how you use singletons and can't remember what to look for (and there are _so many instances_ D: ) |
| 22:59:21 | <dolio> | Or just a parameterized newtype for ignoring anything. |
| 23:01:14 | → | jess joins (jess@freenode/staff/jess) |
| 23:01:28 | <dolio> | Axman6: It might not be an instance that you're looking for. But `Word -> (forall n. KnownNat n => r) -> r` |
| 23:01:50 | <Axman6> | yeah that seems like the right thing |
| 23:02:32 | <dolio> | Although perhaps just `Nat -> ...` because having one of those for every type with some kind of embedding into Nat would be a lot of functions. |
| 23:03:26 | × | Yumasi quits (~guillaume@2a01:e0a:5cb:4430:b7bd:1d78:9a4c:6909) (Ping timeout: 240 seconds) |
| 23:03:30 | → | henninb joins (~henninb@63-228-50-251.mpls.qwest.net) |
| 23:03:33 | <dolio> | Could also be a GADT version of that, though. |
| 23:03:49 | <dolio> | Nat -> SomeKnownNat |
| 23:04:16 | × | bergey` quits (~user@107.181.19.30) (Ping timeout: 240 seconds) |
| 23:04:57 | <Axman6> | I'm trying to see if there's a type safe optimisation for the NS coinstructor in generics-sop (/sop-core) which could avoid the use of unsafeCoerce; replace the implementation with data NS f xs = NS Word Any, so also need to ensure the Nat is < length xs at the type level |
| 23:05:36 | → | random_learner joins (2fe3acc8@047-227-172-200.res.spectrum.com) |
| 23:05:58 | <Axman6> | there's a PR at the moment to maake the construction of NP more efficient and it'd be nice to also have NS allow for constant time decision of which constructor is represented in the sum type |
| 23:08:40 | × | ukari quits (~ukari@unaffiliated/ukari) (Remote host closed the connection) |
| 23:09:07 | → | ukari joins (~ukari@unaffiliated/ukari) |
| 23:10:09 | → | borne joins (~fritjof@200116b8644ab70010f2d07664396fd4.dip.versatel-1u1.de) |
| 23:13:34 | → | tromp joins (~tromp@dhcp-077-249-230-040.chello.nl) |
| 23:14:04 | × | random_learner quits (2fe3acc8@047-227-172-200.res.spectrum.com) (Quit: Connection closed) |
| 23:14:24 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection) |
| 23:14:40 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 23:17:55 | hseg_ | is now known as hseg |
| 23:18:06 | × | tromp quits (~tromp@dhcp-077-249-230-040.chello.nl) (Ping timeout: 256 seconds) |
| 23:18:08 | → | skregas joins (~skregas@201.89-10-150.nextgentel.com) |
| 23:18:24 | × | zmv- quits (~zmv@191.255.89.231) (Ping timeout: 246 seconds) |
| 23:19:24 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 23:19:31 | skregas | is now known as skregas_ |
| 23:19:44 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 23:20:24 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 23:20:55 | × | neiluj quits (~jco@unaffiliated/neiluj) (Quit: leaving) |
| 23:21:18 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 23:23:57 | × | fendor_ quits (~fendor@91.141.0.220.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
| 23:24:21 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds) |
| 23:24:30 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
| 23:25:05 | × | justan0theruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 240 seconds) |
| 23:25:46 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 23:27:53 | × | henninb quits (~henninb@63-228-50-251.mpls.qwest.net) (Quit: Lost terminal) |
| 23:28:03 | → | geowiesnot joins (~user@87-89-181-157.abo.bbox.fr) |
| 23:28:48 | × | heatsink quits (~heatsink@2600:1700:bef1:5e10:e8f2:5182:6f8d:ab15) (Remote host closed the connection) |
| 23:36:26 | → | slack1256 joins (~slack1256@45.4.2.52) |
| 23:37:28 | → | bergey` joins (~user@pool-74-108-99-127.nycmny.fios.verizon.net) |
| 23:37:49 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds) |
| 23:38:07 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 23:38:27 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-116-244.w86-198.abo.wanadoo.fr) |
| 23:41:56 | × | bergey` quits (~user@pool-74-108-99-127.nycmny.fios.verizon.net) (Ping timeout: 240 seconds) |
| 23:42:16 | × | elfets quits (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) (Ping timeout: 240 seconds) |
| 23:42:32 | × | pacak quits (~pacak@bb116-14-220-91.singnet.com.sg) (Remote host closed the connection) |
| 23:43:15 | × | nehsou^ quits (dsrt@ip98-184-89-2.mc.at.cox.net) () |
| 23:44:33 | → | pacak joins (~pacak@bb116-14-220-91.singnet.com.sg) |
| 23:44:55 | → | ddellacosta joins (ddellacost@gateway/vpn/mullvad/ddellacosta) |
| 23:56:11 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 23:57:35 | → | seneca joins (~epictetus@ip72-194-215-136.sb.sd.cox.net) |
| 23:58:09 | × | maerwald quits (~maerwald@mail.hasufell.de) (Ping timeout: 264 seconds) |
All times are in UTC on 2021-02-24.