Home liberachat/#haskell: Logs Calendar

Logs on 2021-07-29 (liberachat/#haskell)

00:04:42 × retro_ quits (~retro@5ec19a54.skybroadband.com) (Ping timeout: 245 seconds)
00:05:28 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
00:07:57 <Axman6> I wonder how efficient the generated code for that is, given all the types are fixed
00:09:11 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
00:12:02 × Brianmancer quits (~Neuromanc@user/briandamag) (Ping timeout: 255 seconds)
00:13:27 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
00:19:13 × jess quits (~jess@libera/staff/jess) ()
00:23:21 <Axman6> % Foo 1 2 & partsOf template %~ (reverse @Int)
00:23:21 <yahb> Axman6: Foo {a = 2, b = 1}
00:24:37 <Axman6> % Foo 1 2 & partsOf template %~ (reverse @Int . map (*10))
00:24:37 <yahb> Axman6: Foo {a = 20, b = 10}
00:28:12 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de) (Ping timeout: 250 seconds)
00:33:50 × MQ-17J quits (~MQ-17J@8.6.144.192) (Ping timeout: 265 seconds)
00:34:18 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
00:35:55 × Deide1 quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
00:36:02 Deide1 joins (~Deide@217.155.19.23)
00:36:38 Deide2 joins (~Deide@217.155.19.23)
00:40:10 × Deide1 quits (~Deide@217.155.19.23) (Ping timeout: 240 seconds)
00:45:24 Erutuon joins (~Erutuon@user/erutuon)
00:45:39 × Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.)
00:46:46 × renzhi quits (~xp@142.184.90.63) (Ping timeout: 272 seconds)
00:48:13 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 268 seconds)
00:51:00 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
00:52:26 × peterhil quits (~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi) (Ping timeout: 258 seconds)
00:54:22 cjb joins (~cjb@user/cjb)
00:55:53 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
00:56:06 yilin joins (~yilin@2601:400:c100:6330:6b23:fdc1:34d0:ae01)
00:58:27 chris_ joins (~chris@81.96.113.213)
01:03:14 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2)
01:03:33 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
01:04:15 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
01:09:04 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
01:12:18 × xff0x quits (~xff0x@2001:1a81:52b7:d000:8a03:e207:89f6:6456) (Ping timeout: 240 seconds)
01:14:33 xff0x joins (~xff0x@2001:1a81:52ef:f900:65e4:872c:1a09:47)
01:17:17 jeslie0 joins (~user@135-23-172-182.cpe.pppoe.ca)
01:17:51 × TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8)
01:19:19 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
01:21:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:22:20 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
01:23:16 jeslie0 parts (~user@135-23-172-182.cpe.pppoe.ca) (ERC (IRC client for Emacs 28.0.50))
01:26:06 × davros quits (~davros@host86-185-61-40.range86-185.btcentralplus.com) (Ping timeout: 276 seconds)
01:28:17 sridonhiatus[m] is now known as srid[m]
01:29:40 neurocyte4 joins (~neurocyte@212.232.80.209)
01:29:40 × neurocyte4 quits (~neurocyte@212.232.80.209) (Changing host)
01:29:40 neurocyte4 joins (~neurocyte@user/neurocyte)
01:33:12 × neurocyte quits (~neurocyte@user/neurocyte) (Ping timeout: 250 seconds)
01:33:13 neurocyte4 is now known as neurocyte
01:33:26 euouae joins (~euouae@user/euouae)
01:38:18 davros joins (~davros@host86-184-180-96.range86-184.btcentralplus.com)
01:50:35 × Null_A quits (~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Remote host closed the connection)
01:50:57 juhp joins (~juhp@bb116-14-48-29.singnet.com.sg)
01:51:11 Null_A joins (~null_a@2601:645:8700:2290:2910:fbd1:f882:3730)
01:52:56 × alx741 quits (~alx741@181.196.69.4) (Quit: alx741)
01:53:46 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
01:55:17 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
01:55:22 × Null_A quits (~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Ping timeout: 240 seconds)
01:56:24 × Topsi quits (~Tobias@dyndsl-037-138-065-120.ewe-ip-backbone.de) (Read error: Connection reset by peer)
01:57:55 trent joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
02:05:18 Null_A joins (~null_a@2601:645:8700:2290:2910:fbd1:f882:3730)
02:09:10 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
02:09:54 × goepsilongo quits (~chacho@2603-7000-ab00-62ed-0000-0000-0000-0bd0.res6.spectrum.com) (Quit: Konversation terminated!)
02:12:10 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:19:22 × yilin quits (~yilin@2601:400:c100:6330:6b23:fdc1:34d0:ae01) (Ping timeout: 240 seconds)
02:23:54 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 250 seconds)
02:26:59 wei2912 joins (~wei2912@112.199.250.21)
02:27:54 × boxscape_ quits (~boxscape_@p4ff0b769.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
02:28:44 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:28:44 FinnElija is now known as Guest8697
02:28:44 × Guest8697 quits (~finn_elij@user/finn-elija/x-0085643) (Killed (tungsten.libera.chat (Nickname regained by services)))
02:28:44 finn_elija is now known as FinnElija
02:33:20 × dmwit quits (~dmwit@pool-108-18-198-142.washdc.fios.verizon.net) (Ping timeout: 255 seconds)
02:34:55 dmwit joins (~dmwit@pool-108-18-198-142.washdc.fios.verizon.net)
02:37:00 × Deide2 quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
02:45:08 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 258 seconds)
02:46:38 × slycelote_ quits (~slycelote@user/slycelote) (Quit: Leaving)
02:48:42 × derelict quits (~derelict@user/derelict) (Ping timeout: 240 seconds)
02:59:48 × td_ quits (~td@muedsl-82-207-238-200.citykom.de) (Ping timeout: 265 seconds)
03:00:05 × wei2912 quits (~wei2912@112.199.250.21) (Ping timeout: 258 seconds)
03:00:41 wei2912 joins (~wei2912@112.199.250.21)
03:01:18 td_ joins (~td@94.134.91.37)
03:01:23 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:03:30 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
03:03:44 Cajun joins (~Cajun@ip98-163-211-112.no.no.cox.net)
03:04:03 × euouae quits (~euouae@user/euouae) (Quit: Client closed)
03:05:05 derelict joins (~derelict@user/derelict)
03:05:47 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
03:06:10 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 256 seconds)
03:12:13 × obs\ quits (~obscur1ty@user/obs/x-5924898) (Quit: Leaving)
03:13:15 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
03:13:16 wrunt joins (~ajc@vmx14030.hosting24.com.au)
03:18:57 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
03:20:24 geekosaur joins (~geekosaur@xmonad/geekosaur)
03:29:53 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
03:30:57 ishutin_ joins (~ishutin@92-249-150-169.static.digikabel.hu)
03:34:36 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:34:43 × ishutin quits (~ishutin@193-110-63-61.cable-modem.hdsnet.hu) (Ping timeout: 268 seconds)
03:36:06 × xff0x quits (~xff0x@2001:1a81:52ef:f900:65e4:872c:1a09:47) (Ping timeout: 276 seconds)
03:36:44 xff0x joins (~xff0x@2001:1a81:52ef:f900:f86e:7128:132:6c84)
03:41:55 × Null_A quits (~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Remote host closed the connection)
03:46:18 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 240 seconds)
03:46:26 × trent quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 268 seconds)
03:46:54 Null_A joins (~null_a@2601:645:8700:2290:2910:fbd1:f882:3730)
03:46:58 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds)
03:47:18 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
03:52:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:53:56 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
04:01:05 nate3 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
04:02:32 × derelict quits (~derelict@user/derelict) (Quit: WeeChat 3.2)
04:04:39 anandprabhu joins (~anandprab@45.83.220.218)
04:06:55 pe200012 joins (~pe200012@183.236.83.77)
04:08:47 × cjb quits (~cjb@user/cjb) (Ping timeout: 256 seconds)
04:12:48 notzmv joins (~zmv@user/notzmv)
04:16:31 cjb joins (~cjb@user/cjb)
04:23:54 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
04:25:00 × koala_man quits (~vidar@157.146.251.23.bc.googleusercontent.com) (Quit: RIP Freenode lenge leve libera.katt)
04:25:41 ccc joins (~ccc@dynamic-acs-24-112-153-241.zoominternet.net)
04:26:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
04:26:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
04:28:11 × arkho quits (~ccc@dynamic-acs-24-112-153-241.zoominternet.net) (Ping timeout: 252 seconds)
04:29:15 koala_man joins (~vidar@157.146.251.23.bc.googleusercontent.com)
04:29:49 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
04:33:21 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
04:33:37 × nate3 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 258 seconds)
04:41:50 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
04:42:56 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
04:44:46 cjb joins (~cjb@user/cjb)
04:45:32 KM4MBG is now known as jackhill
04:46:22 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
04:48:04 × trufas quits (~trufas@177.240.218.218) (Ping timeout: 265 seconds)
04:48:29 trufas joins (~trufas@177.240.218.218)
04:49:04 × jneira_ quits (~jneira_@28.red-80-28-169.staticip.rima-tde.net) (Ping timeout: 250 seconds)
04:50:48 bitmapper joins (uid464869@id-464869.tooting.irccloud.com)
04:56:10 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds)
04:56:11 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
04:57:17 qbt joins (~edun@user/edun)
04:57:20 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
04:58:01 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:00:36 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
05:03:08 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 258 seconds)
05:05:23 × Null_A quits (~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Remote host closed the connection)
05:06:43 Null_A joins (~null_a@2601:645:8700:2290:2910:fbd1:f882:3730)
05:09:31 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
05:16:29 × Null_A quits (~null_a@2601:645:8700:2290:2910:fbd1:f882:3730) (Remote host closed the connection)
05:20:58 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
05:21:02 × xff0x quits (~xff0x@2001:1a81:52ef:f900:f86e:7128:132:6c84) (Ping timeout: 256 seconds)
05:21:53 xff0x joins (~xff0x@2001:1a81:52ef:f900:4116:e67f:3dc9:5c87)
05:24:38 jneira joins (~jneira@212.8.115.226)
05:29:18 img joins (~img@user/img)
05:30:46 retroid_ joins (~retro@5ec19a54.skybroadband.com)
05:33:01 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 265 seconds)
05:36:26 trent joins (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea)
05:36:49 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 268 seconds)
05:37:19 cjb joins (~cjb@user/cjb)
05:43:43 dhil joins (~dhil@195.213.192.47)
05:48:00 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds)
05:52:40 hyiltiz joins (~quassel@31.220.5.250)
05:59:23 tenniscp25 joins (~textual@cm-171-101-115-139.revip11.asianet.co.th)
06:03:22 × tenniscp25 quits (~textual@cm-171-101-115-139.revip11.asianet.co.th) (Client Quit)
06:06:19 thiross joins (~thiross@39.170.37.82)
06:12:09 <Xnuk> :t (%~)
06:12:10 <lambdabot> ASetter s t a b -> (a -> b) -> s -> t
06:12:17 Erutuon_ joins (~Erutuon@user/erutuon)
06:12:23 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
06:14:15 gehmehgeh joins (~user@user/gehmehgeh)
06:14:21 hendursaga joins (~weechat@user/hendursaga)
06:16:17 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 268 seconds)
06:19:58 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
06:20:34 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 258 seconds)
06:21:12 Lord_of_Life_ is now known as Lord_of_Life
06:25:53 × ridcully quits (~ridcully@p508ac428.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
06:26:10 ridcully joins (~ridcully@p508ac428.dip0.t-ipconnect.de)
06:26:34 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
06:28:48 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Quit: bye bye)
06:37:36 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
06:37:51 lavaman joins (~lavaman@98.38.249.169)
06:37:59 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
06:43:02 × xff0x quits (~xff0x@2001:1a81:52ef:f900:4116:e67f:3dc9:5c87) (Ping timeout: 250 seconds)
06:44:04 xff0x joins (~xff0x@2001:1a81:52ef:f900:318a:5cee:26ae:a4f9)
06:44:26 chele joins (~chele@user/chele)
06:47:13 lortabac joins (~lortabac@2a01:e0a:541:b8f0:388d:2d63:2508:1711)
06:47:26 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:48:50 spruit11_ joins (~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344)
06:49:43 × spruit11_ quits (~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344) (Client Quit)
06:50:43 spruit11_ joins (~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344)
06:51:10 × pe200012 quits (~pe200012@183.236.83.77) (Remote host closed the connection)
06:51:11 × spruit11 quits (~quassel@2a02:a467:ccd6:1:c892:977a:b4bf:318c) (Ping timeout: 252 seconds)
06:51:24 × spruit11_ quits (~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344) (Client Quit)
06:51:43 spruit11 joins (~quassel@2a02:a467:ccd6:1:91b8:870a:fb3:8344)
06:51:44 pe200012 joins (~pe200012@113.105.10.33)
06:51:51 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
06:55:45 × pe200012 quits (~pe200012@113.105.10.33) (Remote host closed the connection)
06:56:10 pe200012 joins (~pe200012@218.107.49.28)
06:58:18 × xff0x quits (~xff0x@2001:1a81:52ef:f900:318a:5cee:26ae:a4f9) (Ping timeout: 240 seconds)
06:58:20 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 252 seconds)
06:58:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:59:15 xff0x joins (~xff0x@2001:1a81:52ef:f900:5eb1:ed8e:7709:10d6)
06:59:33 × thiross quits (~thiross@39.170.37.82) (Remote host closed the connection)
06:59:38 mikoto-chan joins (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be)
07:00:47 thiross joins (~thiross@39.170.37.82)
07:05:54 vysn joins (~vysn@user/vysn)
07:08:17 × anandprabhu quits (~anandprab@45.83.220.218) (Quit: Leaving)
07:11:05 × trent quits (~trent@2001:8003:340d:d00:b2de:b98:7a93:b0ea) (Ping timeout: 252 seconds)
07:17:36 × thiross quits (~thiross@39.170.37.82) ()
07:18:03 × shredder quits (~user@user/shredder) (Quit: quitting)
07:18:35 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:19:35 aegon joins (~mike@174.127.249.180)
07:19:39 × aerona quits (~aerona@2600:6c54:4600:f300:d46d:5152:c0fc:6ad9) (Read error: Connection reset by peer)
07:19:48 <aegon> how does one use a local dependency with stack :?
07:19:49 shredder joins (~user@user/shredder)
07:20:06 <aegon> i tried putting the folder in my stack project but it doesn't seem happy with that
07:20:17 delYsid joins (~user@84-115-55-45.cable.dynamic.surfer.at)
07:20:34 <Axman6> you need to add it to the stack.yaml... in the exra-deps I think?
07:20:40 <Axman6> extra-deps*
07:21:45 <Axman6> might njust need to add it to the packages clause
07:21:56 <Axman6> https://docs.haskellstack.org/en/stable/yaml_configuration/#packages
07:22:09 acidjnk_new3 joins (~acidjnk@p200300d0c72b95049518cd6c04553bbc.dip0.t-ipconnect.de)
07:22:13 fendor joins (~fendor@178.165.161.179.wireless.dyn.drei.com)
07:24:47 <aegon> Axman6: thanks, i was confused by only seeing git options, totally glossed over just adding a relative path :X
07:25:12 <Axman6> all good, I agree it is confusing
07:29:41 epolanski joins (uid312403@id-312403.brockwell.irccloud.com)
07:29:57 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
07:29:58 peterhil joins (~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi)
07:30:18 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
07:30:21 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
07:31:08 × azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 250 seconds)
07:32:02 azeem joins (~azeem@176.201.32.30)
07:32:04 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
07:32:35 zeenk joins (~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38)
07:36:19 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
07:38:29 × azeem quits (~azeem@176.201.32.30) (Ping timeout: 252 seconds)
07:39:23 azeem joins (~azeem@176.201.32.30)
07:39:52 chris_ joins (~chris@81.96.113.213)
07:42:24 Obo joins (~roberto@79.red-79-153-119.dynamicip.rima-tde.net)
07:43:46 geekosaur joins (~geekosaur@xmonad/geekosaur)
07:45:38 × azeem quits (~azeem@176.201.32.30) (Read error: Connection reset by peer)
07:46:37 azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
07:54:42 jippiedoe joins (~david@84-84-122-154.fixed.kpn.net)
07:56:52 × Cajun quits (~Cajun@ip98-163-211-112.no.no.cox.net) (Ping timeout: 246 seconds)
07:59:28 × jippiedoe quits (~david@84-84-122-154.fixed.kpn.net) (Ping timeout: 258 seconds)
07:59:46 × Erutuon_ quits (~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
08:00:06 Erutuon joins (~Erutuon@user/erutuon)
08:04:27 jakalx joins (~jakalx@base.jakalx.net)
08:04:50 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 258 seconds)
08:05:24 hendursa1 joins (~weechat@user/hendursaga)
08:08:38 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 244 seconds)
08:10:38 kayprish joins (~kayprish@cable-188-2-229-172.dynamic.sbb.rs)
08:10:55 jumper149 joins (~jumper149@80.240.31.34)
08:11:56 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
08:17:03 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
08:17:30 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:31 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:32 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
08:17:33 allbery_b is now known as geekosaur
08:18:02 cfricke joins (~cfricke@user/cfricke)
08:19:05 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Read error: Connection reset by peer)
08:19:17 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
08:20:35 × bitmapper quits (uid464869@id-464869.tooting.irccloud.com) (Quit: Connection closed for inactivity)
08:20:57 × azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 245 seconds)
08:22:08 azeem joins (~azeem@176.201.32.30)
08:23:34 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
08:28:52 × Obo quits (~roberto@79.red-79-153-119.dynamicip.rima-tde.net) (Quit: WeeChat 2.8)
08:29:04 Erutuon joins (~Erutuon@user/erutuon)
08:34:24 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
08:34:50 Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi)
08:37:29 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
08:40:45 chris_ joins (~chris@81.96.113.213)
08:44:25 × hnOsmium0001 quits (uid453710@id-453710.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
08:45:22 × azeem quits (~azeem@176.201.32.30) (Ping timeout: 240 seconds)
08:46:11 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2)
08:46:41 × cjb quits (~cjb@user/cjb) (Quit: rcirc on GNU Emacs 28.0.50)
08:47:48 azeem joins (~azeem@176.201.32.30)
08:53:52 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
08:56:48 × pe200012 quits (~pe200012@218.107.49.28) (Read error: Connection reset by peer)
08:56:54 pe200012_ joins (~pe200012@218.107.49.28)
08:59:12 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
09:04:03 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
09:05:41 cfricke joins (~cfricke@user/cfricke)
09:06:19 × cfricke quits (~cfricke@user/cfricke) (Client Quit)
09:07:03 cfricke joins (~cfricke@user/cfricke)
09:07:10 × aegon quits (~mike@174.127.249.180) (Quit: leaving)
09:08:05 × azeem quits (~azeem@176.201.32.30) (Read error: Connection reset by peer)
09:08:22 azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
09:08:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
09:09:33 fossdd joins (~fossdd@sourcehut/user/fossdd)
09:09:35 kuribas joins (~user@ptr-25vy0i6v77tuc30f7h8.18120a2.ip6.access.telenet.be)
09:15:38 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2)
09:17:15 cfricke joins (~cfricke@user/cfricke)
09:17:51 × cfricke quits (~cfricke@user/cfricke) (Client Quit)
09:18:01 cfricke joins (~cfricke@user/cfricke)
09:18:14 × cfricke quits (~cfricke@user/cfricke) (Client Quit)
09:18:57 cfricke joins (~cfricke@user/cfricke)
09:23:29 Obo joins (~roberto@79.red-79-153-119.dynamicip.rima-tde.net)
09:24:04 chomwitt joins (~chomwitt@2a02:587:dc01:5c00:12c3:7bff:fe6d:d374)
09:37:18 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
09:37:39 michalz joins (~michalz@185.246.204.57)
09:40:40 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:388d:2d63:2508:1711) (Ping timeout: 272 seconds)
09:41:28 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
09:43:51 geekosaur joins (~geekosaur@xmonad/geekosaur)
09:44:57 × peterhil quits (~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi) (Read error: Connection reset by peer)
09:45:19 peterhil joins (~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi)
09:46:48 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 244 seconds)
09:49:09 lortabac joins (~lortabac@2a01:e0a:541:b8f0:9f62:d831:3528:c2cf)
09:49:17 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
09:50:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
09:50:53 fossdd joins (~fossdd@sourcehut/user/fossdd)
09:56:45 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:57:49 __monty__ joins (~toonn@user/toonn)
10:02:37 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
10:03:10 chris_ joins (~chris@81.96.113.213)
10:07:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
10:11:14 × azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer)
10:18:11 × turlando quits (~turlando@user/turlando) (Ping timeout: 265 seconds)
10:21:01 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
10:21:56 bontaq joins (~user@ool-18e47f8d.dyn.optonline.net)
10:22:04 × Obo quits (~roberto@79.red-79-153-119.dynamicip.rima-tde.net) (Ping timeout: 258 seconds)
10:22:18 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:9f62:d831:3528:c2cf) (Ping timeout: 250 seconds)
10:22:49 azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
10:25:30 × thonkpod quits (~thonkpod@user/thonkpod) (Ping timeout: 240 seconds)
10:25:41 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 252 seconds)
10:30:59 lortabac joins (~lortabac@2a01:e0a:541:b8f0:956a:ab48:7c29:9877)
10:31:06 fossdd joins (~fossdd@sourcehut/user/fossdd)
10:36:40 × ormaaj quits (~ormaaj@user/ormaaj) (Quit: Bridge terminating on SIGTERM)
10:36:40 × MatrixTravelerbo quits (~voyagert2@2001:470:69fc:105::22) (Quit: Bridge terminating on SIGTERM)
10:36:40 × siraben quits (~siraben@user/siraben) (Quit: Bridge terminating on SIGTERM)
10:36:40 × kadoban quits (~kadoban@user/kadoban) (Quit: Bridge terminating on SIGTERM)
10:36:40 × peddie quits (~peddie@2001:470:69fc:105::25d) (Quit: Bridge terminating on SIGTERM)
10:36:40 × ServerStatsDisco quits (~serversta@2001:470:69fc:105::1a) (Quit: Bridge terminating on SIGTERM)
10:36:40 × ac quits (~aloiscoch@2001:470:69fc:105::65) (Quit: Bridge terminating on SIGTERM)
10:36:40 × sm quits (~sm@plaintextaccounting/sm) (Quit: Bridge terminating on SIGTERM)
10:36:40 × rednaZ[m] quits (~r3dnazmat@2001:470:69fc:105::ba70) (Quit: Bridge terminating on SIGTERM)
10:36:40 × maralorn quits (~maralorn@2001:470:69fc:105::251) (Quit: Bridge terminating on SIGTERM)
10:36:40 × hsiktas[m] quits (~hsiktasma@2001:470:69fc:105::30d4) (Quit: Bridge terminating on SIGTERM)
10:36:40 × ericson2314 quits (~ericson23@2001:470:69fc:105::70c) (Quit: Bridge terminating on SIGTERM)
10:36:40 × bitonic quits (~bitonic@2001:470:69fc:105::1812) (Quit: Bridge terminating on SIGTERM)
10:36:40 × boxscape quits (~boxscape@user/boxscape) (Quit: Bridge terminating on SIGTERM)
10:36:40 × vaibhavsagar[m] quits (~vaibhavsa@2001:470:69fc:105::ffe) (Quit: Bridge terminating on SIGTERM)
10:36:40 × inkbottle[m] quits (~inkbottle@2001:470:69fc:105::2ff5) (Quit: Bridge terminating on SIGTERM)
10:36:40 × unrooted quits (~unrooted@2001:470:69fc:105::a4a) (Quit: Bridge terminating on SIGTERM)
10:36:40 × hjulle[m] quits (~hjullemat@2001:470:69fc:105::1dd) (Quit: Bridge terminating on SIGTERM)
10:36:41 × bryan[m] quits (~bchreekat@2001:470:69fc:105::16b5) (Quit: Bridge terminating on SIGTERM)
10:36:41 × fgaz quits (~fgaz@2001:470:69fc:105::842) (Quit: Bridge terminating on SIGTERM)
10:36:41 × smichel17[m] quits (~smichel17@2001:470:69fc:105::2d32) (Quit: Bridge terminating on SIGTERM)
10:36:41 × Deewiant quits (~deewiant@2001:470:69fc:105::2fd3) (Quit: Bridge terminating on SIGTERM)
10:36:41 × polykernel quits (~polykerne@user/polykernel) (Quit: Bridge terminating on SIGTERM)
10:36:41 × cdsmith quits (~cdsmithma@2001:470:69fc:105::284) (Quit: Bridge terminating on SIGTERM)
10:36:41 × Tisoxin quits (~ikosit@user/ikosit) (Quit: Bridge terminating on SIGTERM)
10:36:41 × Las[m] quits (~lasmatrix@2001:470:69fc:105::74e) (Quit: Bridge terminating on SIGTERM)
10:36:41 × lwe[m] quits (~dendrumat@2001:470:69fc:105::2f9b) (Quit: Bridge terminating on SIGTERM)
10:36:41 × ru0mad[m] quits (~ru0madmat@2001:470:69fc:105::9b2) (Quit: Bridge terminating on SIGTERM)
10:36:41 × jaror[m] quits (~jaror@2001:470:69fc:105::265) (Quit: Bridge terminating on SIGTERM)
10:36:41 × ixlun quits (~ixlun@2001:470:69fc:105::41b3) (Quit: Bridge terminating on SIGTERM)
10:36:41 × jophish quits (~jophish@2001:470:69fc:105::670) (Quit: Bridge terminating on SIGTERM)
10:36:41 × unclechu quits (~unclechu@2001:470:69fc:105::354) (Quit: Bridge terminating on SIGTERM)
10:36:41 × marinelli[m] quits (~marinelli@2001:470:69fc:105::2d8) (Quit: Bridge terminating on SIGTERM)
10:36:41 × alexfmpe[m] quits (~alexfmpem@2001:470:69fc:105::38ba) (Quit: Bridge terminating on SIGTERM)
10:36:42 × srid[m] quits (~sridmatri@2001:470:69fc:105::1c2) (Quit: Bridge terminating on SIGTERM)
10:36:42 × Orbstheorem quits (~orbstheor@2001:470:69fc:105::a56) (Quit: Bridge terminating on SIGTERM)
10:36:42 × fabfianda[m] quits (~fabfianda@2001:470:69fc:105::6db) (Quit: Bridge terminating on SIGTERM)
10:36:42 × hughjfchen[m] quits (~hughjfche@2001:470:69fc:105::c29d) (Quit: Bridge terminating on SIGTERM)
10:36:42 × bb010g quits (~bb010g@2001:470:69fc:105::9a5) (Quit: Bridge terminating on SIGTERM)
10:36:44 × amesgen[m] quits (~amesgenm]@2001:470:69fc:105::82b) (Quit: Bridge terminating on SIGTERM)
10:36:44 × infinisil quits (~infinisil@2001:470:69fc:105::ff8) (Quit: Bridge terminating on SIGTERM)
10:36:46 × dualinverter[m] quits (~dualinver@2001:470:69fc:105::16a7) (Quit: Bridge terminating on SIGTERM)
10:36:46 × oak- quits (~oakuniver@2001:470:69fc:105::fcd) (Quit: Bridge terminating on SIGTERM)
10:36:46 × RohitGoswami[m] quits (~rgoswamim@2001:470:69fc:105::16cc) (Quit: Bridge terminating on SIGTERM)
10:36:46 × wallymathieu[m] quits (~wallymath@2001:470:69fc:105::16ae) (Quit: Bridge terminating on SIGTERM)
10:36:46 × fakehacker[m] quits (~fakehacke@2001:470:69fc:105::b5f0) (Quit: Bridge terminating on SIGTERM)
10:36:46 × Guest6263 quits (~sylveonma@2001:470:69fc:105::2d95) (Quit: Bridge terminating on SIGTERM)
10:36:46 × adziahel[m] quits (~adziahelm@2001:470:69fc:105::b4d) (Quit: Bridge terminating on SIGTERM)
10:36:46 × kosmikus[m] quits (~andresloe@2001:470:69fc:105::95d) (Quit: Bridge terminating on SIGTERM)
10:36:46 × octeep[m]1 quits (~octeepmoc@2001:470:69fc:105::695e) (Quit: Bridge terminating on SIGTERM)
10:36:46 × justosophy[m] quits (~justosoph@2001:470:69fc:105::572f) (Quit: Bridge terminating on SIGTERM)
10:36:46 × autrim64[m] quits (~autrim64m@2001:470:69fc:105::16a1) (Quit: Bridge terminating on SIGTERM)
10:36:46 × dminuoso[m] quits (~dminuosom@2001:470:69fc:105::33bb) (Quit: Bridge terminating on SIGTERM)
10:36:46 × jakefromstatefar quits (~jakefroms@2001:470:69fc:105::15ef) (Quit: Bridge terminating on SIGTERM)
10:36:47 × yin[m] quits (~zwromatri@2001:470:69fc:105::1d4) (Quit: Bridge terminating on SIGTERM)
10:36:47 × jellz[m] quits (~jellzmatr@2001:470:69fc:105::2daa) (Quit: Bridge terminating on SIGTERM)
10:36:47 × CyrusT[m] quits (~cyrustcru@2001:470:69fc:105::306e) (Quit: Bridge terminating on SIGTERM)
10:36:47 × ecameron[m] quits (~ecameronm@2001:470:69fc:105::35df) (Quit: Bridge terminating on SIGTERM)
10:36:48 × zfnmxt quits (~zfnmxtzfn@user/zfnmxt) (Quit: Bridge terminating on SIGTERM)
10:36:48 × jchia[m] quits (~jchiamatr@2001:470:69fc:105::c50b) (Quit: Bridge terminating on SIGTERM)
10:36:48 × deuslambda[m] quits (~deuslambd@2001:470:69fc:105::c749) (Quit: Bridge terminating on SIGTERM)
10:36:48 × Morrow[m] quits (~morrowmma@2001:470:69fc:105::1d0) (Quit: Bridge terminating on SIGTERM)
10:36:48 × kar1[m] quits (~kar1matri@2001:470:69fc:105::c308) (Quit: Bridge terminating on SIGTERM)
10:36:48 × Soft quits (~soft-matr@2001:470:69fc:105::c75) (Quit: Bridge terminating on SIGTERM)
10:36:48 × Drezil quits (~drezilkif@2001:470:69fc:105::7f8) (Quit: Bridge terminating on SIGTERM)
10:36:48 × PotatoHatsue quits (~berberman@2001:470:69fc:105::b488) (Quit: Bridge terminating on SIGTERM)
10:36:48 × andreabedini[m] quits (~andreabed@2001:470:69fc:105::c821) (Quit: Bridge terminating on SIGTERM)
10:36:48 × Deide quits (~deide@user/deide) (Quit: Bridge terminating on SIGTERM)
10:36:48 × carmysilna quits (~brightly-@2001:470:69fc:105::2190) (Quit: Bridge terminating on SIGTERM)
10:36:49 × drewefenwick[m] quits (~drewefenw@2001:470:69fc:105::c8c4) (Quit: Bridge terminating on SIGTERM)
10:36:49 × maerwald[m] quits (~maerwaldm@2001:470:69fc:105::1ee) (Quit: Bridge terminating on SIGTERM)
10:36:49 × afotgkmnzj7asv3r quits (~afotgkmnz@2001:470:69fc:105::c24b) (Quit: Bridge terminating on SIGTERM)
10:36:49 × aveltras[m] quits (~aveltrasm@2001:470:69fc:105::3ef9) (Quit: Bridge terminating on SIGTERM)
10:36:49 × Ollie[m] quits (~ollieocha@2001:470:69fc:105::41a5) (Quit: Bridge terminating on SIGTERM)
10:36:49 × jkachmar quits (~jkachmar@2001:470:69fc:105::c72d) (Quit: Bridge terminating on SIGTERM)
10:36:49 × the-coot[m] quits (~the-cootm@2001:470:69fc:105::95f) (Quit: Bridge terminating on SIGTERM)
10:36:50 × reza[m] quits (~rezaphone@2001:470:69fc:105::3eda) (Quit: Bridge terminating on SIGTERM)
10:36:50 × SimonWeiss[m] quits (~weiss-dma@2001:470:69fc:105::bebd) (Quit: Bridge terminating on SIGTERM)
10:36:50 × vbeatrice[m] quits (~vbeatrice@2001:470:69fc:105::3ebf) (Quit: Bridge terminating on SIGTERM)
10:36:50 × OndejSkup[m] quits (~mimivxmat@2001:470:69fc:105::c300) (Quit: Bridge terminating on SIGTERM)
10:36:50 × thomasjm[m] quits (~thomasjmm@2001:470:69fc:105::c6d9) (Quit: Bridge terminating on SIGTERM)
10:37:11 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
10:37:40 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 272 seconds)
10:38:13 × kayprish quits (~kayprish@cable-188-2-229-172.dynamic.sbb.rs) (Remote host closed the connection)
10:38:33 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
10:39:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:39:57 maerwald[m] joins (~maerwaldm@2001:470:69fc:105::1ee)
10:42:26 agua joins (~agua@2804:18:40:39f8:1:0:64c7:dff1)
10:42:29 acidjnk_new joins (~acidjnk@p200300d0c72b95075c335839612ea8d0.dip0.t-ipconnect.de)
10:43:54 × berberman quits (~berberman@user/berberman) (Ping timeout: 240 seconds)
10:44:41 Gurkenglas joins (~Gurkengla@dslb-002-203-144-156.002.203.pools.vodafone-ip.de)
10:44:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
10:45:03 berberman joins (~berberman@user/berberman)
10:45:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:45:22 × acidjnk_new3 quits (~acidjnk@p200300d0c72b95049518cd6c04553bbc.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
10:45:27 × peterhil quits (~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi) (Ping timeout: 258 seconds)
10:45:54 Obo joins (~roberto@79.red-79-153-119.dynamicip.rima-tde.net)
10:46:25 × troydm quits (~troydm@host-176-37-124-197.b025.la.net.ua) (Quit: What is Hope? That all of your wishes and all of your dreams come true? To turn back time because things were not supposed to happen like that (C) Rau Le Creuset)
10:46:34 × michalz quits (~michalz@185.246.204.57) (Ping timeout: 240 seconds)
10:47:59 troydm joins (~troydm@host-176-37-124-197.b025.la.net.ua)
10:48:55 ac joins (~aloiscoch@2001:470:69fc:105::65)
10:48:55 sm joins (~sm@plaintextaccounting/sm)
10:48:55 MatrixTravelerbo joins (~voyagert2@2001:470:69fc:105::22)
10:48:55 hjulle[m] joins (~hjullemat@2001:470:69fc:105::1dd)
10:48:55 jaror[m] joins (~jaror@2001:470:69fc:105::265)
10:48:55 fgaz joins (~fgaz@2001:470:69fc:105::842)
10:48:55 peddie joins (~peddie@2001:470:69fc:105::25d)
10:48:55 cdsmith joins (~cdsmithma@2001:470:69fc:105::284)
10:48:56 thomasjm[m] joins (~thomasjmm@2001:470:69fc:105::c6d9)
10:48:56 ru0mad[m] joins (~ru0madmat@2001:470:69fc:105::9b2)
10:48:56 jakefromstatefar joins (~jakefroms@2001:470:69fc:105::15ef)
10:48:56 fabfianda[m] joins (~fabfianda@2001:470:69fc:105::6db)
10:48:56 bb010g joins (~bb010g@2001:470:69fc:105::9a5)
10:48:56 Las[m] joins (~lasmatrix@2001:470:69fc:105::74e)
10:48:56 ServerStatsDisco joins (~serversta@2001:470:69fc:105::1a)
10:48:56 amesgen[m] joins (~amesgenm]@2001:470:69fc:105::82b)
10:48:56 the-coot[m] joins (~the-cootm@2001:470:69fc:105::95f)
10:48:56 vaibhavsagar[m] joins (~vaibhavsa@2001:470:69fc:105::ffe)
10:48:56 zfnmxt joins (~zfnmxtzfn@2001:470:69fc:105::2b32)
10:48:56 bitonic joins (~bitonic@2001:470:69fc:105::1812)
10:48:56 kadoban joins (~kadoban@user/kadoban)
10:48:56 carmysilna joins (~brightly-@2001:470:69fc:105::2190)
10:48:56 jophish joins (~jophish@2001:470:69fc:105::670)
10:48:56 ericson2314 joins (~ericson23@2001:470:69fc:105::70c)
10:48:56 ixlun joins (~ixlun@2001:470:69fc:105::41b3)
10:48:56 siraben joins (~siraben@user/siraben)
10:48:56 PotatoHatsue joins (~berberman@2001:470:69fc:105::b488)
10:48:56 unclechu joins (~unclechu@2001:470:69fc:105::354)
10:48:56 Deewiant joins (~deewiant@2001:470:69fc:105::2fd3)
10:48:56 bryan[m] joins (~bchreekat@2001:470:69fc:105::16b5)
10:48:56 unrooted joins (~unrooted@2001:470:69fc:105::a4a)
10:48:56 rednaZ[m] joins (~r3dnazmat@2001:470:69fc:105::ba70)
10:48:56 maralorn joins (~maralorn@2001:470:69fc:105::251)
10:48:57 lwe[m] joins (~dendrumat@2001:470:69fc:105::2f9b)
10:48:57 inkbottle[m] joins (~inkbottle@2001:470:69fc:105::2ff5)
10:48:57 reza[m] joins (~rezaphone@2001:470:69fc:105::3eda)
10:48:57 marinelli[m] joins (~marinelli@2001:470:69fc:105::2d8)
10:48:57 hsiktas[m] joins (~hsiktasma@2001:470:69fc:105::30d4)
10:48:57 boxscape joins (~boxscape@user/boxscape)
10:48:57 infinisil joins (~infinisil@2001:470:69fc:105::ff8)
10:48:57 Orbstheorem joins (~orbstheor@2001:470:69fc:105::a56)
10:48:57 jkachmar joins (~jkachmar@2001:470:69fc:105::c72d)
10:48:57 Tisoxin joins (~ikosit@user/ikosit)
10:48:57 Deide joins (~deide@user/deide)
10:48:57 smichel17[m] joins (~smichel17@2001:470:69fc:105::2d32)
10:48:57 polykernel joins (~polykerne@user/polykernel)
10:48:57 srid[m] joins (~sridmatri@2001:470:69fc:105::1c2)
10:48:57 hughjfchen[m] joins (~hughjfche@2001:470:69fc:105::c29d)
10:48:57 OndejSkup[m] joins (~mimivxmat@2001:470:69fc:105::c300)
10:48:57 kar1[m] joins (~kar1matri@2001:470:69fc:105::c308)
10:48:57 alexfmpe[m] joins (~alexfmpem@2001:470:69fc:105::38ba)
10:48:57 ormaaj joins (~ormaaj@user/ormaaj)
10:48:57 andreabedini[m] joins (~andreabed@2001:470:69fc:105::c821)
10:49:07 dualinverter[m] joins (~dualinver@2001:470:69fc:105::16a7)
10:49:07 jchia[m] joins (~jchiamatr@2001:470:69fc:105::c50b)
10:49:07 Morrow[m] joins (~morrowmma@2001:470:69fc:105::1d0)
10:49:08 dminuoso[m] joins (~dminuosom@2001:470:69fc:105::33bb)
10:49:08 Ollie[m] joins (~ollieocha@2001:470:69fc:105::41a5)
10:49:08 yin[m] joins (~zwromatri@2001:470:69fc:105::1d4)
10:49:08 SimonWeiss[m] joins (~weiss-dma@2001:470:69fc:105::bebd)
10:49:08 jellz[m] joins (~jellzmatr@2001:470:69fc:105::2daa)
10:49:08 RohitGoswami[m] joins (~rgoswamim@2001:470:69fc:105::16cc)
10:49:08 Drezil joins (~drezilkif@2001:470:69fc:105::7f8)
10:49:08 wallymathieu[m] joins (~wallymath@2001:470:69fc:105::16ae)
10:49:08 adziahel[m] joins (~adziahelm@2001:470:69fc:105::b4d)
10:49:08 Soft joins (~soft-matr@2001:470:69fc:105::c75)
10:49:08 kosmikus[m] joins (~andresloe@2001:470:69fc:105::95d)
10:49:08 autrim64[m] joins (~autrim64m@2001:470:69fc:105::16a1)
10:49:09 drewefenwick[m] joins (~drewefenw@2001:470:69fc:105::c8c4)
10:49:09 ecameron[m] joins (~ecameronm@2001:470:69fc:105::35df)
10:49:09 octeep[m] joins (~octeepmoc@2001:470:69fc:105::695e)
10:49:09 CyrusT[m] joins (~cyrustcru@2001:470:69fc:105::306e)
10:49:09 justosophy[m] joins (~justosoph@2001:470:69fc:105::572f)
10:49:09 aveltras[m] joins (~aveltrasm@2001:470:69fc:105::3ef9)
10:49:09 afotgkmnzj7asv3r joins (~afotgkmnz@2001:470:69fc:105::c24b)
10:49:09 deuslambda[m] joins (~deuslambd@2001:470:69fc:105::c749)
10:49:09 fakehacker[m] joins (~fakehacke@2001:470:69fc:105::b5f0)
10:49:09 vbeatrice[m] joins (~vbeatrice@2001:470:69fc:105::3ebf)
10:49:10 oak- joins (~oakuniver@2001:470:69fc:105::fcd)
10:49:10 Sylveon joins (~sylveonma@2001:470:69fc:105::2d95)
10:49:32 michalz joins (~michalz@185.246.204.62)
10:49:33 Sylveon is now known as Guest2540
10:49:48 thonkpod joins (~thonkpod@user/thonkpod)
10:50:07 xkuru joins (~xkuru@user/xkuru)
10:51:20 × Obo quits (~roberto@79.red-79-153-119.dynamicip.rima-tde.net) (Ping timeout: 250 seconds)
10:51:26 × xkuru quits (~xkuru@user/xkuru) (Client Quit)
10:52:32 Deide1 joins (~Deide@217.155.19.23)
10:52:39 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
10:53:08 Obo joins (~roberto@94.191.137.235.mobile.tre.se)
10:54:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
10:56:11 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:56:40 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:956a:ab48:7c29:9877) (Ping timeout: 272 seconds)
11:01:14 × Deide1 quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa)
11:01:35 × fluffyballoon quits (~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
11:01:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:01:56 fluffyballoon joins (~fluffybal@pat-verona-h.epic.com)
11:01:58 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
11:02:08 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:04:21 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
11:07:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:07:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
11:07:32 fossdd joins (~fossdd@sourcehut/user/fossdd)
11:07:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:13:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
11:13:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:15:48 ubert joins (~Thunderbi@178.165.190.122.wireless.dyn.drei.com)
11:18:02 × favonia quits (~favonia@user/favonia) (Ping timeout: 258 seconds)
11:20:40 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
11:24:28 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
11:24:28 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
11:24:28 turlando joins (~turlando@user/turlando)
11:25:44 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
11:26:21 <merijn> hmm, any suggestions on how to best represent a case of "0, 1, or 2" args for a function?
11:27:08 lortabac joins (~lortabac@2a01:e0a:541:b8f0:d518:334f:85c4:8d2d)
11:27:47 pesada joins (~agua@2804:14c:8793:8e2f:3944:8017:7f63:8e28)
11:28:32 <sshine> merijn, data Args a b = Args { argsOne :: Maybe a, argsTwo :: Maybe b }?
11:29:23 <sm> maerwald: congrats on the ghcup release!
11:29:27 <sshine> merijn, i.e. Data.These
11:30:16 ikex1 joins (~ash@user/ikex)
11:30:21 <maerwald> sm: thanks
11:30:29 <sshine> oh, data These a b = This a | That b | These a b. I guess that's more canonical. :)
11:30:30 × agua quits (~agua@2804:18:40:39f8:1:0:64c7:dff1) (Ping timeout: 256 seconds)
11:30:30 × ikex quits (~ash@user/ikex) (Ping timeout: 256 seconds)
11:30:48 <sm> maerwald: I think a better answer needs to be found for that good question at https://www.reddit.com/r/haskell/comments/ottx21/ann_ghcup01161_released
11:30:56 <merijn> These doesn't cover 0 arguments case, though
11:30:56 ikex1 is now known as ikex
11:31:03 <merijn> At least, not nicely
11:31:41 <sm> (the current answer sounds like a bunch of negatives, it doesn't motivate)
11:31:42 <sshine> merijn, but another interpretation is Maybe (a, Maybe b)
11:31:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
11:32:14 <maerwald> sm: what do you propose?
11:32:15 fossdd joins (~fossdd@sourcehut/user/fossdd)
11:32:28 <merijn> sshine: In my case it's just representing a commandline that takes 0, 1, or 2 paths and I'm trying to avoid adding separate constructors for each case
11:32:38 <sm> nothing unfortunately, I'd like to know the answer too
11:33:42 <merijn> sshine: Which question as you referring to?
11:33:44 <merijn> eh
11:33:47 <merijn> s/sshine/sm
11:34:42 <maerwald> sm: I think the answer is that stack shouldn't do an in-place upgrade by default, but install into e.g. ~/.local/bin or whatever is configured
11:35:34 <maerwald> ghcup by default does that too... you have to pass `--inplace` if you want that
11:36:28 <sm> merijn: "I'm new to this. Why should I choose it over stack?" at https://www.reddit.com/r/haskell/comments/ottx21/ann_ghcup01161_released/
11:37:08 <maerwald> sm: ah, you mean that
11:37:20 <maerwald> I think my answer is pretty accurate.
11:37:50 <merijn> The answer is "because lots of people don't like stack and lots of linux distros fuck up the packaging of GHC/cabal"
11:38:01 <sm> merijn: "you should choose ghcup because it doesn't overwrite itself, unlike stack upgrade" ?
11:38:13 <maerwald> sm: what?
11:38:16 <sshine> merijn, if one or two paths are missing, will the program supply a default path or will a section of code not run?
11:38:25 <drewefenwick[m]> If you only want to use the Stack workflow with no system GHC then GHCup doesn't give you that much extra AFAIK at the moment. If you want straight GHC or a cabal workflow then GHCup is very handy.
11:38:45 <merijn> sshine: It's basically diffing configs, so either diff two specified configs or diff one specified config to the default
11:39:09 <merijn> sm: "you should choose ghcup because you think figuring out which GHC bindist to download is to complex"
11:39:16 <sshine> merijn, what does zero config paths mean then?
11:39:17 <sm> OP asks a very simple question and ghcup should have a simple and clear answer to this if it's to succeed with new folks
11:39:27 <maerwald> sm: there is a simple and clear answer
11:39:29 <merijn> sshine: Just dumping out the diff of the default
11:39:32 <maerwald> did you read my response?
11:39:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
11:39:48 <sm> maerwald: which response ?
11:39:52 <maerwald> sm: on reddit
11:40:17 <sm> maerwald: https://www.reddit.com/r/haskell/comments/ottx21/ann_ghcup01161_released/h6xsowf/ ?
11:40:50 fossdd joins (~fossdd@sourcehut/user/fossdd)
11:40:50 <sshine> makes sense.
11:40:50 <maerwald> Yes
11:42:18 × chomwitt quits (~chomwitt@2a02:587:dc01:5c00:12c3:7bff:fe6d:d374) (Ping timeout: 276 seconds)
11:43:27 <sshine> I understand this as a step on the way. the things snoyberg wrote about having a shared library for managing GHC installations seems like a nice future goal. I guess pushing GHC management responsibility out of Stack and into a library, only so that either Stack or GHCup can refer to this, is the way forward from having competing tools? kinda like having cabal as a format, and not just a tool. :)
11:43:38 <sm> maerwald: yes I read it, I just pinged you and gave you feedback about it. I think it's not very motivating and a better answer is needed for folks like the OP. Take it FWIW.
11:44:18 <maerwald> sm: I don't understand what other answer you expect
11:44:23 <sshine> whether 'stack upgrade' eventually runs a sub-command that triggers this code, or 'ghcup ...' does, should be a CLI preference.
11:45:21 <maerwald> sshine: there was never an attempt to write a shared library and the blog post you mentioned also didn't have this as a motivation
11:45:35 <sshine> maerwald, oh, okay.
11:46:06 <merijn> sm: tbh, I think the question there has a whole bunch of built in assumptions that run counter to the target audience of ghcup
11:46:18 <merijn> sm: You say "this person needs a better answer to be convinced to use ghcup"
11:46:30 <maerwald> then my answer is: don't :)
11:46:31 <merijn> sm: I say "this person sounds like they're not in the target audience of ghcup"
11:46:39 <maerwald> yep
11:46:58 <sshine> maerwald, yeah, https://www.snoyman.com/blog/2021/05/unified-haskell-installer/ -- the section called "The Goal": What I'd like to see is a well maintained Haskell library for installing Haskell toolchains, generally acknowledged as the de facto standard way to install GHC and other tools. It should be Haskell, so that it's easy for Haskellers to maintain. It should support as many operating systems as
11:47:04 <sshine> possible. It should provide an easy-to-use Haskell API that other tooling can leverage.
11:47:27 <sshine> maerwald, of course, I interpreted with some degree of freedom. :)
11:47:28 <sm> maerwald: you said "not a replacement for stack", "supports installing and managing stack versions", "does the same for cabal, GHC and HLS", "doesn't make a workflow choice for you" - I'm just pointing out that to a new haskeller, especially one already using stack, these sound obscure or like disadvantages. I hope that makes sense. I don't expect anything, I'm just trying to help.
11:47:37 <merijn> sm: The target audience of ghcup is "grumpy unix curmudgeons who dislike package manager induced breackage of haskell tooling"
11:47:41 viluon joins (uid453725@id-453725.brockwell.irccloud.com)
11:48:17 <sshine> merijn, grumpy unix curmudgeons don't like Stack?
11:48:37 <merijn> I don't and maerwald doesn't and I consider us prototypical grumpy unix curmudgeons :p
11:49:05 <maerwald> I was talked into supporting stack... so don't blame me
11:49:07 sshine wonders if prototype inheritance will solve this.
11:49:57 <drewefenwick[m]> IIRC Snoyman hasn't approached anyone to make GHCup this unified GHC installer that Stack uses to install GHC.
11:49:57 <sm> merijn, is that really true ? maerwald seems to push it as the haskell install tool
11:49:58 <merijn> sm: ghcup came from "people don't like stack, but installing the bindists from the website is guess work which version you need and package managers like Arch keep breaking tools" -> "ghcup reliably and predictably install correct bindist for you"
11:50:14 <maerwald> sm: no, the HF did
11:50:15 <sshine> maerwald, so, just to understand: if I install stack with ghcup, besides not running 'stack upgrade' to confuse ghcup, should I always use a system-ghc?
11:50:25 <maerwald> sm: HF wanted windows support, HF wanted stack support
11:50:29 <maerwald> I didn't want either of those
11:50:39 <viluon> can Hoogle search for types or typeclasses by kind signature?
11:51:12 <maerwald> sshine: doesn't matter, does it? You'll just have potentially multiple instances of one GHC version installed
11:51:34 × Obo quits (~roberto@94.191.137.235.mobile.tre.se) (Ping timeout: 250 seconds)
11:51:36 <merijn> viluon: No clue, try it? :p
11:51:51 <viluon> merijn: tried on the online instance, didn't work
11:52:07 <sm> maerwald: I'm thinking of a proposal from snoyman about making stack more universal which you kind of shot down and pushed full speed ahead with ghcup
11:52:12 <sshine> maerwald, well, I suppose it mattered slightly if 1) ghcup installs system-ghc, 2) running stack the first time installs another ghc. -- seems kinda silly. but I guess just bundling stack with a system-ghc that isn't necessarily the stack ghc is still sort of useful.
11:52:21 <viluon> I'm wondering if the commandline tool can do it, if there's a flag or config option or something
11:52:24 <maerwald> sm: "shot down"?
11:52:26 <viluon> (I don't have Hoogle locally)
11:52:38 <sm> yes
11:52:45 <maerwald> sm: that's untrue
11:52:57 <sm> I am certainly be confused about ghcup's goals now, so others will be too
11:53:15 <sshine> maerwald, I'm just thinking, if two tools refer to the same GHC installation, doing so with a shared library would make a lot of sense. :-D that's why I assumed this was a step on the way to something similar to what Snoyman described.
11:53:17 <merijn> sm: ghcup's goals are: install GHC/cabal/hls
11:53:34 <sshine> merijn, /stack now?
11:53:36 <merijn> sm: Including managing installs of multiple versions
11:53:54 <merijn> sshine: Well, according to maerwald that's not a goal, merely something demanded from externally
11:54:07 <sshine> merijn, who's demanding?
11:54:24 <merijn> Haskell Foundation, per maerwald's words, like, 30 seconds ago :p
11:54:51 <merijn> "13:50 < maerwald> sm: HF wanted windows support, HF wanted stack support"
11:55:03 <sm> merijn: ok, I understand that as far as it goes. I'm still curious what's a good answer to "I'm new to this. Why should I choose it over stack?"
11:55:22 <merijn> sm: "Because you don't like stack's mandated workflow"
11:55:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
11:56:00 fossdd joins (~fossdd@sourcehut/user/fossdd)
11:57:24 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
11:58:00 <merijn> Stack is very opinionated and many people strongly disagree with its opinions, but some people find installing cabal/GHC bindists to tricky/annoying, so ghcup takes care of that for you. Your question (and the original one) are predicated on "stack is a good default tool, therefore argumentation to use something else is required"
11:58:01 <maerwald> sm: 1. the proposal you mentioned was nothing but confusing and didn't represent the current state of the ecosystem correctly, 2. Stack team never collaborated with me and doesn't until today (despite multiple attempts to improve integration, including several patches), 3. I didn't "shoot" down anything. I was correcting the misrepresentation.
11:59:20 <sm> maerwald: that's how it read to me, again take it FWIW
11:59:21 <merijn> sm: There are many people (including myself) who do not think stack is a good tool. Therefore there is no reason for me to argue "why use this over stack?". I didn't ever consider stack an option to begin with
11:59:29 <maerwald> sm: well, you're incorrect
11:59:30 <sm> I'm just some crackpot on the internet
12:00:00 <sshine> oh, you're also a simon, sm.
12:00:13 <merijn> The value proposition of ghcup isn't "what does this provide over stack?", the value proposition is "what does ghcup provide over manually downloading bindists/using apt-get?"
12:00:37 <sm> merijn: isn't there a simpler, calmer answer ? a newbie friendly one, without the drama ? that's the one I'd like to read
12:00:46 <merijn> sm: What drama?
12:00:57 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
12:00:59 <maerwald> the only drama I read is from you right now :p
12:01:33 <sm> alright. Thanks for the chat, anyway
12:01:35 <merijn> sm: The value proposition of ghcup over downloading bindists is "no need to guess which bindist you need for your obscure distro"
12:02:11 <merijn> sm: The value proposition of ghcup over apt-get/Arch's package manager is: ability to manage multiple concurrent versions, get predictable tooling across distros (i.e. avoiding arch's broken packages)
12:02:12 <sm> night all
12:02:40 <merijn> Which seem perfectly clear goals/value propositions
12:02:49 <maerwald> I wonder when there'll be a release where I don't have to get into these kind of discussions. They happen *every* release.
12:03:12 <merijn> maerwald: Well, you don't *have* to get into these discussions :)
12:03:22 <merijn> You can just leave them unanswered/addressed :p
12:03:38 <sshine> or maybe refer back to previous discussion if it's the same?
12:03:42 <yushyin> btw. stack annoyingly does not support mixins in stack repl. it was the reason why i used cabal (and ghcup) again
12:03:46 <dminuoso> Im going to argue that the majority of stack users use stack for no reason other than they started out with stack and never bothered to consider their choices after the newbie phase.
12:04:05 × bontaq quits (~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 268 seconds)
12:04:08 <dminuoso> Not saying that there's people who genuinely prefer stack, but Im not sure that this is the majority
12:04:16 <merijn> dminuoso: And they mostly started with it due to FP Complete's beginner writings asserting it is good :p
12:04:23 <dminuoso> Sure
12:04:34 <maerwald> there are already some users who use ghcup in conjunction with stack and they prefer that over letting stack manage GHC versions
12:04:56 <drewefenwick[m]> dminuoso: And they read a tutorial written before Cabal 3 or even Cabal nix-style builds that said that Stack was better
12:04:57 <merijn> maerwald: That just strikes me as weird, tbh
12:05:08 <maerwald> merijn: well, you save disk space, sorta
12:05:16 slowButPresent joins (~slowButPr@user/slowbutpresent)
12:05:17 <maerwald> merijn: e.g. HLS devs always need cabal and stack
12:05:21 <maerwald> they have to test with both
12:05:26 <dminuoso> As if disk spave is an issue in 2021. :-)
12:05:50 <maerwald> yah, no idea
12:05:51 <dminuoso> 1TiB in a laptop is a regular thing already
12:06:22 <dminuoso> If I was really short on disk space, I wouldn't be writing Haskell to begin with.
12:06:35 <viluon> dminuoso: I'm writing Haskell and have a 256 GB SSD
12:06:47 drewefenwick[m] is now known as Drew[m]
12:07:18 <viluon> it is a pain, esp. with multiple local installations of GHC *and* a couple local clones
12:07:25 <dminuoso> viluon: Let me guess. Macbook and no interest in throwing away money? :p
12:07:34 <viluon> ThinkPad
12:07:39 <dminuoso> Curious
12:07:54 <dminuoso> Why not buy a 1TiB SSD for a hundred bucks?
12:08:20 <maerwald> dminuoso: well, one GHC install is 2GB
12:08:24 <viluon> you were right about the "no interest in throwing away money." I also lack the tools for a DIY upgrade though.
12:08:41 <dminuoso> Im a thinkpad user.. you dont have a screwdriver?
12:08:47 <viluon> nope
12:09:32 <viluon> I'd require more than just a screwdriver though, I need a way to transfer my data
12:10:23 <dminuoso> Mmm, well you can just buy a USB SATA interface for 5 bucks alongside the SSD. :p
12:10:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
12:10:38 <dminuoso> But anyway, not trying to convince you
12:10:51 <viluon> I should definitely upgrade, hopefully next month
12:10:59 fossdd joins (~fossdd@sourcehut/user/fossdd)
12:11:17 <viluon> I suppose I can't just `dd` a mounted partition and expect everything to work though
12:11:58 <dminuoso> Well, you can just reboot onto a usb stick, and then `dd` the internal disk to the new SSD connected via the USB SATA interface
12:12:04 <dminuoso> Or some such
12:12:29 <viluon> true
12:12:35 <viluon> maybe I even have a USB stick
12:13:13 <viluon> anyway: anecdotal evidence that drive space can still be an issue in 2021
12:13:14 <Drew[m]> The whole moving drive procedure gives me data loss anxiety
12:13:24 <viluon> Drew[m]: smae
12:13:26 <viluon> same*
12:15:40 × pschorf quits (~user@c-73-77-28-188.hsd1.tx.comcast.net) (Remote host closed the connection)
12:16:05 <Drew[m]> What if I lose all my loose markdown files containing barely started story ideas and incoherent ramblings about technical topics
12:16:20 <sshine> dminuoso, "the majority of stack users use stack for no reason other than they started out with stack and never bothered to consider their choices after the newbie phase." -- I suppose my newbie phase has been 9 years now, but I did set up cabal on CI, and every time I have to bump the version constraints, I'm reminded of why I'm apparently still a noob. :P
12:16:40 <merijn> sshine: How so?
12:17:05 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 265 seconds)
12:17:25 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
12:18:18 <sshine> merijn, I'll ping you when it's time to do it again. ;-) I ended up in some weird dependency equation where I couldn't find packages that worked together.
12:18:42 <yushyin> viluon: it sure is. you wouldn't believe how often people complain in #latex that they are missing latex package xy and still refuse to just install texlive-full because they don't feel like sacrificing the 4-6GB for it. :D
12:19:51 <sshine> dminuoso, or rather: I'm a fan of stackage. and I'm a fan of having a file in my project directory that says which GHC to use, and that that GHC is located somewhere manageable by non-root. that's pretty much why I'm a stack user, I think...
12:20:35 <viluon> yushyin: I wish a day will come when package managers and build systems are things of the past and a compilation process only fetches and caches the objects it truly needs, garbage-collecting long unused "dependencies."
12:20:35 pschorf joins (~user@c-73-77-28-188.hsd1.tx.comcast.net)
12:20:36 <sshine> dminuoso, I *think* that the moment I put anything besides 'resolver: lts-...' in stack.yaml, I'm sort of screwing myself over. (I learned recently that extra-deps do not propagate.)
12:20:50 <merijn> sshine: You can have a file in your directory saying which GHC to use ;)
12:21:14 <sshine> merijn, such that 'ghc build' will infer the content of that file?
12:21:29 <merijn> sshine: When using ghc manually?
12:21:34 <merijn> Then no
12:21:41 <sshine> merijn, not necessarily. I'm not bent on calling my wrapper "stack".
12:22:03 <merijn> sshine: I mean in the sense that cabal.project already lets you specify arbitrary ghc to use
12:22:09 <sshine> merijn, I just think that having a prefix to my build tools is nicer than having something like python's virtualenv where I have to remember to type something before I enter a directory in order to fix PATH.
12:22:30 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
12:22:54 <maerwald> One of the reasons I switched from stack to cabal at one workplace was that bumping versions in stack is just incredibly difficult. And nix people might not like this, but: practical software security is mainly just "bump your deps as often as possible".
12:22:56 <merijn> sshine: Both cabal and GHC already support multiple parallel installs out-of-the-box (well, of different GHC versions, multiple installs of the same GHC version might give issues, but then you deserve it :p)
12:23:00 <sshine> merijn, ah. I don't think I've used cabal.project files. what command would I type to build a project with the GHC specified there?
12:23:19 <maerwald> migrating from one major solver to another is just too much work... better update regularly
12:23:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
12:23:41 <maerwald> you want to keep the impact low, not get a whole set of surprises when updating the solver
12:23:49 <maerwald> you can't do that with stack
12:23:51 <merijn> sshine: cabal has a -w flag to specify which compiler to use and the cabal.project file can persist that so you don't have to manually pass it
12:23:53 <maerwald> it doesn't support this workflow
12:24:15 fossdd joins (~fossdd@sourcehut/user/fossdd)
12:24:38 <maerwald> if you don't care about software security, all these things might not matter
12:24:59 <merijn> sshine: You can use "cabal configure --with-compiler=path/to/ghc" to persist it
12:25:03 <sshine> maerwald, right. I'd rather bump rarely and deal with it then. but I guess there are drawbacks with that. I haven't had to maintain something big in Haskell over a long time. the projects that I've worked on commercially have had few unchanging dependencies and never propagated much back to the ecosystem.
12:25:24 <merijn> sshine: Personally I have 4-8 parallel installs of GHC in my user dir (most recent version first in path, so ghc default to that)
12:25:46 <maerwald> sshine: I mean... if you use npm and don't update for 6 months
12:25:46 <merijn> sshine: Since the bin dirs include version tagged executable for ghc (i.e. ghc-8.2, ghc-9.0, etc)
12:25:57 × Morrow quits (~Morrow@bzq-110-168-31-106.red.bezeqint.net) (Ping timeout: 245 seconds)
12:26:00 <maerwald> you're gonna have a thousand high-risk vulnerabilities
12:26:02 <merijn> sshine: So I can just use "cabal -w ghc-8.2" to use a non-default GHC version
12:26:11 Morrow joins (~Morrow@bzq-110-168-31-106.red.bezeqint.net)
12:26:14 <maerwald> *known* ones
12:26:23 <merijn> maerwald: Whether that matters depends on the security model
12:26:36 <merijn> maerwald: Like, a commandline tool its gonna matter less than a webserver :p
12:26:47 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
12:26:55 <maerwald> what about a blockchain
12:26:57 <sshine> merijn, I'll give the cabal.project approach a go the next time I bump my CIs.
12:27:20 <sshine> blockchain that depends on arbitrary npm packages deserve whatever they have coming for them.
12:27:34 <merijn> sshine: Note that that doesn't install it, though. So that assumes you have all relevant versions of GHC installed on your system
12:27:48 <sshine> merijn, sure, okay.
12:27:50 <merijn> sshine: otoh, ghcup can fix that for you ;)
12:27:54 <maerwald> sshine: lol, no... I mean blockchain depending on haskell
12:29:36 <sshine> merijn, yeah, I mean, I understand that it's sliced-and-diced differently; I suppose the big difference is whether or not to maintain package sets, or not. but I've learned now that this evidently also relates to how frequently one maintains dependencies.
12:30:11 <maerwald> You'd think PVP was invented exactly for that purpose... so you can move forward freely without such stuff as a fixed package set and then bump major versions occasionally
12:30:16 <maerwald> but in practice, PVP failed
12:30:32 <merijn> sshine: I have an RSS feed that notifies me when my direct dependencies release out-of-bounds version, so I just bump and test when that happens
12:31:03 <sshine> merijn, ok.
12:31:59 <sshine> maerwald, because people don't follow the PVP?
12:32:02 <merijn> sshine: https://packdeps.haskellers.com/feed?needle=microlens for example
12:32:26 <merijn> you can just take that as RSS feed to keep track
12:32:29 <maerwald> sshine: hm... maybe. I'm not sure the idea is a good one to begin with. PVP assumes ppl backport bugfixes and security patches. But most don't.
12:33:20 <maerwald> In fact, I believe you can do fine without PVP. If you rewrite your entire API, go write a new package. That's what many ecosystem do. Even if it's called foo2
12:33:50 <maerwald> But haskellers tend to constantly experiment with their API
12:34:06 <sshine> first-class modules!
12:34:15 <sshine> then version can be derived!
12:34:17 <merijn> People can get a stable API from me when they pay me >.<
12:38:09 × azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Read error: Connection reset by peer)
12:38:26 <Drew[m]> I mean recently I encountered a package on Hackage that something appeared to require as a dependency (which actually didn't need it), and the package had no dependency bounds and it failed while building because of an ambiguous occurence error...
12:38:28 <Drew[m]> I presume there was a particular set of dependencies the package was originally built under. I have no idea how I discover what they are.
12:38:52 <merijn> Drew[m]: Brute force and guess work
12:38:57 azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
12:39:36 <merijn> Drew[m]: There is a contigent of "never specify upperbounds" people on Hackage (with significant overlap with the "you should use stackage to ensure things work!" people)
12:39:49 lavaman joins (~lavaman@98.38.249.169)
12:40:00 <Drew[m]> I know
12:40:08 <Drew[m]> I've been thinking about it
12:40:28 <Drew[m]> I feel like different people are trying to communicate different things through the bounds
12:40:55 <merijn> Drew[m]: This is part of the reason cabal has the new ^>= bounds and allow-newer support
12:41:22 <Drew[m]> yeah
12:41:37 <Drew[m]> Has it fixed the contention though?
12:42:05 <merijn> Can't force people to do the right thing, sadly >.>
12:43:41 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:d518:334f:85c4:8d2d) (Quit: WeeChat 2.8)
12:43:59 <yushyin> cargo (rust) has done it right. If you specify "1.2.3" as the version, it is implicitly "^1.2.3" which is similar to our ^>=.
12:44:17 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
12:44:55 fendor_ joins (~fendor@178.165.162.84.wireless.dyn.drei.com)
12:45:10 <merijn> yushyin: Yeah, but that's benefit of hindsight
12:45:15 Cajun joins (~Cajun@ip98-163-211-112.no.no.cox.net)
12:45:36 <viluon> merijn: it is, but it's still a way of forcing people to do the right thing
12:45:53 <merijn> viluon: Maybe in cabal-version 4.0 we can make that the new default :p
12:46:04 <merijn> And then 20 years from now we can rely on it :p
12:46:09 <yushyin> :D
12:46:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
12:46:43 <merijn> At least we have our forwards-compat story sorted in cabal files now
12:46:44 fossdd joins (~fossdd@sourcehut/user/fossdd)
12:46:55 <merijn> That's more than many other tools can say :p
12:47:22 × fendor quits (~fendor@178.165.161.179.wireless.dyn.drei.com) (Ping timeout: 240 seconds)
12:47:25 <viluon> the Unison language does it even better in my opinion, content-addressable code means that the issue of naming is essentially trivial. The issue of updating, i.e. replacing one definition with another, persists, but there's no ad-hoc versioning scheme / package manager / build system you have to rely on in order to specify what your code depends on.
12:53:55 Obo joins (~roberto@94.191.137.235.mobile.tre.se)
12:56:08 oxide joins (~lambda@user/oxide)
12:56:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
12:57:06 fossdd joins (~fossdd@sourcehut/user/fossdd)
12:59:05 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
13:00:17 chris_ joins (~chris@81.96.113.213)
13:00:20 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
13:00:40 fendor_ is now known as fendor
13:01:05 alx741 joins (~alx741@181.196.69.4)
13:02:48 × jneira quits (~jneira@212.8.115.226) (Quit: Client closed)
13:03:04 <maerwald> what does "1.2.3" being implicitly "^1.2.3" get you when the dependency doesn't actually follow semver
13:03:33 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
13:05:29 Sgeo joins (~Sgeo@user/sgeo)
13:09:04 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
13:09:35 × jolly quits (~jolly@208.180.97.158) (Quit: Connection closed)
13:14:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
13:14:28 fossdd joins (~fossdd@sourcehut/user/fossdd)
13:15:15 Null_A joins (~null_a@2601:645:8700:2290:44f7:81a6:341:7abe)
13:16:42 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
13:19:52 × Null_A quits (~null_a@2601:645:8700:2290:44f7:81a6:341:7abe) (Ping timeout: 256 seconds)
13:20:13 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
13:21:18 Lycurgus joins (~juan@cpe-45-46-140-49.buffalo.res.rr.com)
13:21:22 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
13:21:33 img joins (~img@user/img)
13:22:46 <zzz> i just found out there's a function called zipLazy which is the same as zip "but lazy on the second list". isn't zip lazy by default?
13:23:27 <Lycurgus> extra
13:24:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
13:24:22 fossdd joins (~fossdd@sourcehut/user/fossdd)
13:25:35 <zzz> it seems to me that it'a not lazy, it's irrefutable on the pattern match for the second list, throwing an error if the first list's length is greater
13:25:59 <zzz> how is this useful?
13:26:50 <boxscape> zzz: FWIW base docs say `zip is right-lazy: zip [] _|_ = []
13:26:51 <boxscape> which sounds very much like the description of zipLazy
13:27:01 <boxscape> I inserted the / accidentally
13:27:02 <boxscape> wait
13:27:11 <boxscape> I don't know if matrix is displaying this correctly
13:27:23 <boxscape> it's supposed to be `zip [] undefined = []`, basically
13:27:54 <zzz> so my question is, how is zipLazy different from zip in a useful way?
13:28:37 <boxscape> (Oh.. matrix displays | as a | in italic, not a slash, I see)
13:28:56 <boxscape> s/matrix/element
13:29:21 <Drew[m]> zzz: Say you have two lists and the second one is infinite. With zip you have to somewhat evaluate the second list to get the first element of the zipped list. I believe with this zipLazy you could access all the first elements without evaluating any of the second list
13:30:35 <zzz> > map fst $ zip [0..7] [9..]
13:30:37 <lambdabot> [0,1,2,3,4,5,6,7]
13:31:19 <Drew[m]> I "first element" but I meant "fst value of the first element"
13:31:33 <Drew[m]> I said*
13:31:36 <zzz> > map fst $ zip [0..7] (undefined : [9..])
13:31:37 <lambdabot> [0,1,2,3,4,5,6,7]
13:31:57 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:32:14 <Drew[m]> That could save some work in some circumstances
13:32:37 <zzz> maybe i'm not understanding your point, but zip seems to work just fine for that
13:33:00 peterhil joins (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi)
13:33:16 <Drew[m]> Probably because I'm wrong
13:33:20 × Obo quits (~roberto@94.191.137.235.mobile.tre.se) (Ping timeout: 252 seconds)
13:34:39 <Drew[m]> Oh wait
13:34:48 <Drew[m]> Your example still requires evaluating some of the second list
13:34:57 <Drew[m]> Namely the `:` constructor
13:35:20 <zzz> yes
13:35:31 <zzz> when would it be useful not to?
13:36:09 <zzz> > map fst $ zip [0..7] undefined
13:36:11 <lambdabot> *Exception: Prelude.undefined
13:36:13 <zzz> > map fst $ zipLazy [0..7] undefined
13:36:15 <lambdabot> error:
13:36:15 <lambdabot> Variable not in scope: zipLazy :: [a0] -> t0 -> [(b, b0)]
13:36:20 <zzz> > map fst $ Util.zipLazy [0..7] undefined
13:36:21 <lambdabot> error:
13:36:21 <lambdabot> Not in scope: ‘Util.zipLazy’
13:36:22 <lambdabot> No module named ‘Util’ is imported.
13:36:30 <zzz> how do i do this?
13:37:04 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
13:37:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
13:38:11 <zzz> % map fst $ Util.zipLazy [0..7] undefined
13:38:11 <yahb> zzz: ; <interactive>:27:11: error:; Not in scope: `Util.zipLazy'; No module named `Util' is imported.
13:38:19 <zzz> oh well
13:38:43 × qbt quits (~edun@user/edun) (Ping timeout: 258 seconds)
13:39:01 <Drew[m]> zzz: So I'm not sure I've ever encountered such a situation, but imagine a hypothetical situation where you have a list defined by a computation that must do a lot of work just to determine whether the list is empty or not, but for whatever reason you know ahead of time that not only will the list not be empty, it will be longer than the first list you give to `zipLazy`. Under this situation you could avoid having to do that work while still
13:39:02 <Drew[m]> being able to extract the fst values of the zipped list
13:39:54 <zzz> the point is zipLazy works here but I can't imagine a situation where that's useful
13:40:02 <zzz> Drew[m]: zip works fine for that
13:40:24 Toast52 joins (~Toast52@151.192.167.120)
13:40:57 <zzz> oh i see now
13:41:05 <Drew[m]> You can't access any values of the zipped list with `zip` without first case matching both lists to make sure neither is empty though, right?
13:41:20 <zzz> yes i see what you mean
13:41:22 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
13:42:30 <zzz> that is a very weird hypothetical though. if the list is empty you'll end up with an error as soon as you try to evaluate it
13:43:00 <zzz> and why would you zip something you have no intention of evaluating?
13:43:24 <zzz> but i see now
13:43:30 <Drew[m]> I'd love to hear what the situation was that made someone put it in the `ghc` package
13:43:57 <Drew[m]> I guess that implies that it's used in GHC somewhere
13:44:46 <zzz> there's also a zipWithLazy
13:44:49 <zzz> which is scary
13:46:17 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
13:46:48 hendursaga joins (~weechat@user/hendursaga)
13:48:39 <Toast52> actually i got a question
13:48:57 <Toast52> often theres some helper function that I realise is in the GHC library
13:49:34 <Toast52> e.g. IIRC theres applyN and some others
13:49:45 Brianmancer joins (~Neuromanc@user/briandamag)
13:50:24 <Toast52> if I import the GHC library does that inflate my binary with the entire size of GHC
13:50:30 <geekosaur> yes
13:55:42 <Toast52> right. I figured. thanks a lot!
13:56:18 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
13:57:16 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
13:58:49 zelmac joins (~zelmac@host86-188-117-120.range86-188.btcentralplus.com)
14:00:33 oni123 joins (~oni123@cpe-70-121-244-14.neb.res.rr.com)
14:03:24 Obo joins (~roberto@94.191.137.235.mobile.tre.se)
14:03:38 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
14:05:55 × acidjnk_new quits (~acidjnk@p200300d0c72b95075c335839612ea8d0.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
14:06:31 × kuribas quits (~user@ptr-25vy0i6v77tuc30f7h8.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
14:10:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
14:10:24 fossdd joins (~fossdd@sourcehut/user/fossdd)
14:10:40 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
14:11:17 chomwitt joins (~chomwitt@athedsl-32041.home.otenet.gr)
14:11:52 chris_ joins (~chris@81.96.113.213)
14:12:33 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:13:49 jakalx parts (~jakalx@base.jakalx.net) ()
14:14:01 × oni123 quits (~oni123@cpe-70-121-244-14.neb.res.rr.com) (Quit: Client closed)
14:14:48 × Lycurgus quits (~juan@cpe-45-46-140-49.buffalo.res.rr.com) (Quit: Exeunt)
14:14:56 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
14:14:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
14:15:24 fossdd joins (~fossdd@sourcehut/user/fossdd)
14:15:33 zebrag joins (~chris@user/zebrag)
14:15:50 jakalx joins (~jakalx@base.jakalx.net)
14:20:32 son0p joins (~ff@181.136.122.143)
14:20:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
14:21:17 fossdd joins (~fossdd@sourcehut/user/fossdd)
14:23:37 jippiedoe joins (~david@84-84-122-154.fixed.kpn.net)
14:24:08 shriekingnoise joins (~shrieking@186.137.144.80)
14:25:07 favonia joins (~favonia@user/favonia)
14:25:13 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
14:26:23 chris_ joins (~chris@81.96.113.213)
14:26:37 jakalx parts (~jakalx@base.jakalx.net) ()
14:27:36 × chris_ quits (~chris@81.96.113.213) (Remote host closed the connection)
14:28:20 jakalx joins (~jakalx@base.jakalx.net)
14:30:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
14:31:45 motle joins (~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net)
14:31:53 fossdd joins (~fossdd@sourcehut/user/fossdd)
14:32:07 <motle> hi, im trying to get some graphics applications running in windows
14:32:35 <motle> iv been trying to build gtk or opengl (inc freeglut)
14:32:42 × jippiedoe quits (~david@84-84-122-154.fixed.kpn.net) (Remote host closed the connection)
14:32:49 <motle> using msys, or ubuntu on wsl
14:33:22 <motle> i found a common dependency with lesah, which wont build either for the same reason
14:33:40 <motle> it fails at; pacman -S mingw-w64-x86_64-webkitgtk3
14:34:56 <motle> this apparently according to some thread i cant find anymore "no longer works, and has been depreciated"
14:35:13 <motle> this seems like it affects most of the haskell graphics ecosystem on windows
14:35:39 <motle> does anyone have a currently working windows setup for GUIs or graphics?
14:35:58 <motle> leksah*
14:36:45 <motle> anyway, that depreciated library is from msys - which was the windows way to build the graphics library dependencies like with unix
14:37:05 <motle> not sure whats up with wsl, couldnt fathom the x-forwarding i think...
14:37:32 <motle> i think this means cairo is broken on windows too, as well as gloss
14:37:40 sedeki joins (~textual@user/sedeki)
14:38:02 <motle> though mostly this problem is encountered when trying to build gtk
14:38:06 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
14:38:06 chris_ joins (~chris@81.96.113.213)
14:38:16 <motle> which on windows i think is totally dead
14:39:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
14:39:30 <motle> cant get any of the solutions such as freeglut to work either - probably if anyone has up to date installation instructions for this it might work - considering building from source, but with just putting the dlls it seems to break
14:40:18 fossdd joins (~fossdd@sourcehut/user/fossdd)
14:42:34 × chris_ quits (~chris@81.96.113.213) (Ping timeout: 240 seconds)
14:43:35 <Toast52> does msys link with window's opengl32.dll
14:43:53 <Toast52> or does it come with its own set of shared libs
14:49:03 <Toast52> I believe ghc on windows is able to locate shared libs on PATH which includes %systemroot%\system32 (where opengl32.dll is located)
14:50:24 <kritzefitz> motle, a few week ago I was able to build GTK3 applications based on gi-gtk after installing mingw-w64-x86_64-{pkgconf,gtk3,gobject-introspection}.
14:50:59 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
14:51:52 × sedeki quits (~textual@user/sedeki) (Quit: Textual IRC Client: www.textualapp.com)
14:52:03 <motle> yeah, gobject is what led me to leksah, i thought it would install that for me, since i couldnt get the install to supress the error
14:52:23 × jmorris quits (uid433911@id-433911.stonehaven.irccloud.com) (Quit: Connection closed for inactivity)
14:54:24 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
14:55:07 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 245 seconds)
14:57:56 zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
14:58:40 <zava> writing me a haskell exam tmrw. fuckin monads and some of the types make me head hurt
14:58:41 lortabac joins (~lortabac@2a01:e0a:541:b8f0:9d14:637c:254d:7940)
14:58:59 <motle> :t (>>)
14:59:00 <lambdabot> Monad m => m a -> m b -> m b
14:59:04 <motle> :t (>>=)
14:59:05 <lambdabot> Monad m => m a -> (a -> m b) -> m b
14:59:14 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds)
14:59:33 <zava> which is also used in parsing
14:59:50 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 268 seconds)
15:00:08 <zava> I really have no reason to complain. I'll pass
15:00:22 <zava> those are the only things that I struggle with
15:01:06 <zava> and when I write a function with where and 4 lines of nested helperfunctions and my mate achieves the same with a 2 liner :)
15:01:16 × michalz quits (~michalz@185.246.204.62) (Remote host closed the connection)
15:02:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
15:02:51 fossdd joins (~fossdd@sourcehut/user/fossdd)
15:02:55 <kritzefitz> motle, I don't think I understand your problem. Can you be more specific what GUI toolkit you were trying to build? You say you couldn't use GTK, because you couldn't install <mingw-prefix>-webkitgtk3, but GTK itself doesn't actually need webkit.
15:03:18 <zava> \o
15:03:21 × zava quits (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.0)
15:05:18 × sweater2 quits (~sweater@206.81.18.26) (Quit: WeeChat 2.8)
15:05:38 <dsal> :t (*>)
15:05:39 <lambdabot> Applicative f => f a -> f b -> f b
15:06:04 <dsal> I should get in the habit of using that more.
15:06:35 <dminuoso> Also cute:
15:06:41 <dminuoso> % :t (<$)
15:06:41 <yahb> dminuoso: Functor f => a -> f b -> f a
15:06:51 <dminuoso> Really grown to like that one.
15:08:36 <dsal> Yeah. I use these things in parsers, but outside of parsers, I never think to use them.
15:09:24 <dminuoso> `() <$` I find more comfortable than `void` which needs an extra import
15:09:41 <dminuoso> Also in some custom monads it can be handy
15:10:29 <dminuoso> One of our projects has a large compilation monad with various failures (that get promoted to fatal at certain stages). So I regularly do something like: True <$ configErr "this and that failed"
15:10:46 <dminuoso> Allowing me to produce some temporary result while setting an eventually fatal error
15:11:04 <motle> krizefitz: i was trying to install gobject which leksah had a .bash file to do, but *it* failed because it needed webkitgtk3
15:12:09 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:12:15 × peterhil quits (~peterhil@dsl-hkibng32-54fb52-57.dhcp.inet.fi) (Ping timeout: 258 seconds)
15:12:23 × averell quits (~averell@user/averell) (Quit: .)
15:13:26 <dsal> Oh, looks like I use `$>` a lot, but not `<$` hmm...
15:14:35 <dminuoso> Guess it depends a bit on the emphasis.
15:15:02 <dminuoso> <$ on longer lines immediately shows you the result ahead of the line, with $> I feel like I run out of mental stack space by the time I get to the other side
15:16:16 <Drew[m]> motle: From my not very clear understanding of what gobject is, I doubt it requires webkitgtk
15:16:28 <lechner> Hi, with JSON.eitherDecode on known JSON data I get: "Error in $: Failed reading: Cannot decode input: Data.Text.Internal.Encoding.decodeUtf8: Invalid UTF-8 stream. Expecting object value at ',' " What does that mean, please? Is that a JSON problem (missing object value) or a UTF-8 encoding problem? Thanks!
15:16:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
15:16:57 <lechner> or decoding problem, to be more exact
15:17:49 peterhil joins (~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi)
15:17:51 <dminuoso> I suspect there's some escape character issue
15:18:02 <lechner> it happens on all files, though
15:18:13 <geekosaur> Drew[m],motle: leksah uses webkitgtk, so it installs it at the same time as gtk. that does not mean gtk itself requires webkit
15:18:54 <motle> sure
15:19:15 <Drew[m]> Right, and from my research trying to get reflex-dom to work, webkitgtk3 didn't seem like a thing that was available on windows
15:19:36 <motle> but i did pacman -S ... gobject-introspection, and it still throws an error
15:19:54 <motle> i was trying to get a leksah build to get that to work for me
15:19:58 <kritzefitz> motle, what error does it throw?
15:20:00 × Obo quits (~roberto@94.191.137.235.mobile.tre.se) (Ping timeout: 256 seconds)
15:20:23 <motle> but your right, the depreciated dependency which kills leksah shouldnt actually stop the gtk build, i shall try again
15:21:34 <motle> the package gobject version something something required but not found
15:22:04 <motle> from stack run on a project with gi-gtk dependencies in the stack yaml
15:23:31 <kritzefitz> Stack does not install C dependencies for you.
15:23:46 <kritzefitz> You need to install the gobject C library before running stack
15:23:58 <Drew[m]> Yeah but it sounds like motle has tried installing that
15:24:16 <kritzefitz> Yes, but they never told us, why it didn't work.
15:24:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
15:25:06 <Drew[m]> Well I think what they said was ambiguous. Was pacman throwing an error when they tried to install gobject-introspection, or did it succeed and stack threw an error when they tried to use it
15:25:07 fossdd joins (~fossdd@sourcehut/user/fossdd)
15:25:55 <kritzefitz> motle, maybe you can clarify? Did you run `pacman -S mingw-w64-x86_64-object-introspection`? Did that work? If not, what was the error message?
15:25:57 <Drew[m]> Clarification would be handy!
15:26:48 × peterhil quits (~peterhil@mobile-access-5d6aaf-196.dhcp.inet.fi) (Ping timeout: 256 seconds)
15:27:53 <motle> i think the gobject-introspection install "succeded" but didnt make the lib available, maybe PATH
15:28:53 <motle> error: target not found: mingw-w64-x86_64-object-introspection
15:28:57 LukeHoersten joins (~LukeHoers@user/lukehoersten)
15:29:10 <kritzefitz> You're missing a `g` in front of `object`.
15:29:31 <motle> derp, just copy pasted it from the comment
15:29:50 <kritzefitz> OOps
15:30:22 <motle> hmm, might be building ok now, have to wait a sec
15:30:54 × pe200012_ quits (~pe200012@218.107.49.28) (Ping timeout: 272 seconds)
15:32:42 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:32:52 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:33:57 × zelmac quits (~zelmac@host86-188-117-120.range86-188.btcentralplus.com) (Remote host closed the connection)
15:35:44 danielam joins (~daniel@cpe-67-247-21-112.nyc.res.rr.com)
15:37:11 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 265 seconds)
15:38:07 agua joins (~agua@2804:18:40:39f8:1:0:64c7:dff1)
15:39:02 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
15:39:36 × danielam quits (~daniel@cpe-67-247-21-112.nyc.res.rr.com) (Quit: leaving)
15:39:44 × LukeHoersten quits (~LukeHoers@user/lukehoersten) (Ping timeout: 252 seconds)
15:40:07 × pesada quits (~agua@2804:14c:8793:8e2f:3944:8017:7f63:8e28) (Ping timeout: 245 seconds)
15:42:36 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:43:22 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
15:43:49 yilin1 joins (~yilin@2601:400:c100:6330:6b23:fdc1:34d0:ae01)
15:44:12 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 272 seconds)
15:44:33 × yilin1 quits (~yilin@2601:400:c100:6330:6b23:fdc1:34d0:ae01) (Client Quit)
15:46:21 × motle quits (~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net) (Quit: Connection closed)
15:46:43 <Drew[m]> if you're going through gi-gtk, I wouldn't trust the windows instructions there to be up to date and good practice
15:46:58 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
15:47:38 pesada joins (~agua@2804:14c:8793:8e2f:3944:8017:7f63:8e28)
15:50:47 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
15:51:23 × agua quits (~agua@2804:18:40:39f8:1:0:64c7:dff1) (Ping timeout: 252 seconds)
15:51:33 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:9d14:637c:254d:7940) (Quit: WeeChat 2.8)
15:53:07 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 244 seconds)
15:53:23 hnOsmium0001 joins (uid453710@id-453710.stonehaven.irccloud.com)
15:54:43 motle joins (~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net)
15:54:53 <motle> now it complains about; libcairo-gobject2
15:55:09 × rmoe quits (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net) (Ping timeout: 276 seconds)
15:55:10 <motle> so i guess that fixed the original gobject issue
15:55:38 <motle> ie pacman -S mingw-w64-x86_64-gobject-introspection
15:55:39 <motle> worked
15:55:43 <kritzefitz> motle, did you also `pacman -S mingw-w32-x86_64-gtk3`?
15:56:04 <kritzefitz> That should pull in the rest of the dependencies you need for gi-gtk.
15:56:28 <kritzefitz> (assuming you're using gt-gtk version 3.x and not 4.x)
15:56:31 <motle> error: target not found: mingw-w32-x86_64-gtk3
15:56:54 <kritzefitz> err, mingw-w64-x86_64-gtk3
15:57:08 rmoe joins (~rmoe@c-71-236-207-44.hsd1.wa.comcast.net)
15:57:27 <motle> yah, that works
15:58:32 <motle> ahh, iv just got to get used to putting that prefix on the dependencies normally listed because of msys
15:59:22 <motle> still complains about 'libcairo-gobject-2.dll though
15:59:32 drd joins (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4)
16:01:06 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
16:01:10 jpds joins (~jpds@gateway/tor-sasl/jpds)
16:01:29 <kritzefitz> That sounds like an issue with PATH
16:03:30 <kritzefitz> IIRC libcairo-gobject-2.dll should be in you msys environment inside /mingw64/bin or similar. Can you find it there?
16:03:49 <motle> i thought that before when it couldnt resolve gobject after gobject-introspect installed
16:04:41 <kritzefitz> Yeah, but that was a different error message. When stack complains about not finding a library, its usually because pkg-config can't even find the definition for the file.
16:05:10 <kritzefitz> If you get complaints about a .dll, pkg-config probably found the definition, but now the linker can't find the .dll one the PATH.
16:06:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
16:06:12 <motle> the only dlls in the bin dir at ../.. in a msys prompt are prefixed by msys-
16:06:22 <motle> not the right ones
16:07:04 <kritzefitz> Are you sure ../.. is the same as /mingw64?
16:07:09 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
16:07:09 fossdd joins (~fossdd@sourcehut/user/fossdd)
16:07:30 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 276 seconds)
16:08:04 <motle> C:\msys64\mingw64\bin has the gtk dll
16:08:49 <kritzefitz> That sounds about right, but...
16:08:59 <motle> aha, and the libcairo-gobject-2.dll
16:09:00 <kritzefitz> you're using a system installation of msys?
16:09:18 <motle> yeah, i installed stack within it not the other way round
16:09:20 <motle> using curl
16:09:53 <kritzefitz> Are you sure stack didn't install its own msys environment? It's not exactly straightforward to keep it from doing that.
16:11:22 × azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 268 seconds)
16:11:41 <motle> im not sure if its just the windows installer that does that?
16:11:56 <motle> the curl option being for the unix environemnt
16:12:02 <kritzefitz> Nah, `stack setup` does it much like it does with GHC.
16:12:32 <motle> oh yeah fair, probably it has some msys dir somewhere like ghc
16:12:49 <motle> but if those are like sandboxed things...
16:12:54 azeem joins (~azeem@176.201.11.200)
16:13:04 <kritzefitz> You can check the output of `stack path`. If the items of bin-path point to some obscure location, it's probably using the wrong msys environment.
16:13:18 <maerwald[m]> https://docs.haskellstack.org/en/stable/yaml_configuration/#skip-msys
16:13:34 × Cajun quits (~Cajun@ip98-163-211-112.no.no.cox.net) (Quit: Client closed)
16:13:59 pavonia joins (~user@user/siracusa)
16:14:10 <motle> idk i added that directory and started a new msys session and it seems like its building ok now
16:14:20 <motle> to the PATH
16:14:44 <motle> cant tell if its some intermittent thing like to do with starting the new session
16:14:48 neceve joins (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f)
16:14:57 <motle> something like that could be quite confusing!
16:15:25 <motle> or running stack several times in a row changing something, idk
16:15:36 <motle> seems to be working now anyhow
16:15:38 <kritzefitz> If C:\msys64\mingw64\bin is on your path when you start stack, it will probably not remove it, so everything should still work.
16:16:04 <Drew[m]> What's fun is that installing msys yourself, installing it through chocolatey, installing it through chocolatey's haskell-dev package, installing it through GHCup and Stack installing it all put things in different locations and some of those methods don't clean up after themselves reliably in my experience.
16:16:59 <kritzefitz> But at least in the long run you should consider setting skip-msys and removing stack's installation of msys. Its great for your own sanity, as long as you remember to only call stack from the correct MSYS environment.
16:17:55 <motle> yeah, i keep refreshing windows too
16:18:14 <kritzefitz> Also: you have to remember to start it from the correct MSYS shell. Last time I installed MSYS, it installed three different “entry points“ (“MSYS2”, “MinGW32”, “MinGW64” IIRC) and each of them have different things on the PATH.
16:18:17 <maerwald[m]> Drew: GHCup should clean up properly after itself
16:18:42 <maerwald[m]> You don't need to start it from an msys2 shell
16:18:42 <kritzefitz> And by default all the mingw-w64 stuff is only on PATH if you start MinGW64.
16:19:09 ikex1 joins (~ash@user/ikex)
16:19:26 × ikex quits (~ash@user/ikex) (Ping timeout: 252 seconds)
16:19:28 <maerwald[m]> You need these settings: skip-msys, extra-path, extra-include-dirs, extra-lib-dirs
16:19:46 <kritzefitz> Yeah, that should work too.
16:19:50 ikex1 is now known as ikex
16:20:01 <maerwald[m]> Then it works from powershell
16:20:08 <maerwald[m]> Adjusting PATH has odd side effects on windows
16:20:26 <motle> now it just dies without giving any reason
16:20:36 <kritzefitz> who dies? stack?
16:20:43 <motle> yeah
16:21:01 × dajoer quits (~david@user/gvx) (Quit: leaving)
16:21:05 <kritzefitz> What's the exit code? Maybe it's just finished?
16:21:13 <motle> Process exited with code: ExitFailure (-1073741515)
16:21:21 <kritzefitz> Huh.
16:21:39 <maerwald[m]> Try cabal, it doesn't install its own msys2
16:21:41 <kritzefitz> Maybe try re-running? Sometimes the actual error message is buried inside other messages.
16:21:50 hexfive joins (~eric@50.35.83.177)
16:21:56 <motle> idk how best to get cabal on a clean msys install
16:22:05 × hexfive quits (~eric@50.35.83.177) (Client Quit)
16:22:08 × Toast52 quits (~Toast52@151.192.167.120) (Quit: Leaving)
16:23:01 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:23:32 <kritzefitz> motle, you might need to set XDG_DATA_DIRS=/mingw64/share in the environment. But if that's the case there should be an error message hidden somewhere.
16:24:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
16:24:12 <kritzefitz> e.g. `XDG_DATA_DIRS=/mingw64/share stack ...`
16:24:59 fossdd joins (~fossdd@sourcehut/user/fossdd)
16:25:08 <maerwald[m]> motle: can install cabal with ghcup
16:25:13 <zzz> wait, importing a module inflates the binary with the full module? seems trivial to statically check what's not used and strip it away, no?
16:25:32 <maerwald[m]> It asks for pre-existent msys2
16:27:03 <maerwald[m]> Don't run stuff from within msys2
16:27:52 superstar64 joins (~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4)
16:28:25 <lechner> Hi, does a ! strictness indicator in a JSON data type definition make the parsing more strict or more relaxed, please?
16:28:26 × hgolden quits (~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Quit: Konversation terminated!)
16:28:32 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds)
16:29:07 <motle> lechner: it ensures its parsed at all
16:29:26 <lechner> it is not without?
16:29:42 <motle> not if by lazyness its never called, thats what stricness is about
16:29:47 <motle> calls it there and then
16:29:53 <motle> instead of deffering it to call by use
16:30:44 <lechner> where does it go in an array please? [! Constituent] or ![ Constituent ] ?
16:30:44 <kritzefitz> motle, are you sure? Because if we're talking about parsing with aeson, it should parse everything strictly to be able to report failures.
16:30:50 mattil joins (~mattilinn@87-92-17-82.bb.dnainternet.fi)
16:31:03 <motle> lechner: maybe its only used in pattern bindings?
16:31:21 <motle> im not sure no
16:31:30 <superstar64> i'm trying to write a traversal for a higher kinded typed. is this possible? https://gist.github.com/Superstar64/d04cce9dd60f931a18868a648ff5b22a
16:31:32 hgolden joins (~hgolden2@cpe-172-114-84-61.socal.res.rr.com)
16:31:52 <superstar64> `g λ` doesn't work because e doesn't match with e'
16:31:57 <kritzefitz> lechner, ![Foo] works, but probably does not what you want, because it only evaluates until the first `:`.
16:32:09 <kritzefitz> lechner, [!Foo] is not valid syntax.
16:32:19 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
16:32:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
16:32:48 <kritzefitz> If you want strict lists, you need a type that is explicitly designed to be a strict list or possibly define it yourself.
16:32:58 fossdd joins (~fossdd@sourcehut/user/fossdd)
16:33:03 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
16:33:17 <kritzefitz> But I *don't* think strictness annotations should have any effect on JSON parsing.
16:33:27 <kritzefitz> So it probably doesn't matter.
16:33:39 <lechner> so i have known valid JSON. migrating to Haskell, my definitions are probably off but the error message is not great
16:33:41 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
16:33:50 <motle> yeah, idk was thinking lazy IO if it was escapable and needed prompt evaluation or something
16:34:14 <lechner> i saw a note one time in a haskell project asking all contributors to use !
16:34:32 <motle> you should have a good reason
16:34:39 <motle> never normally needed
16:35:27 <motle> really rare times where otherwise something gets dropped in a monadic sequence needing ! cat remember
16:36:06 <motle> but like, only encountering actual use cases of ! rarely, so not really seeing why anyone would emphasize its importance
16:36:32 <lechner> unfortunately i cannot find it anymore
16:36:42 <kritzefitz> There is another case with libraries such as Data.Binary, where the decoding function doesn't check for errors in favour of more laziness.
16:36:56 <motle> saw some thing about performant parallel from some london bank in haskell, strict on the spine lazy on the branches i think
16:37:33 <kritzefitz> In that case strictness annotations actually make a big difference, because an all-strict structure will throw errors earlier.
16:37:42 KUrare joins (~KUrare@user/kurare)
16:38:10 × KUrare quits (~KUrare@user/kurare) (Remote host closed the connection)
16:38:11 <motle> ah right, like if it does a bunch of work before calling the next lazy value
16:38:22 <motle> in a sequence that will eventually fail or something like that
16:38:30 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
16:39:00 <motle> so you would want to get everything into a pure environemnt first for example to avoid that source of errors
16:39:19 <motle> like reading all the values in from files before starting the processing
16:39:45 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
16:39:53 <motle> so you would want to basically just use ! on the let bound variable capturing it from reading in from IO
16:40:26 <motle> and then just have everything else be lazy
16:40:33 <motle> idk about this stric list
16:40:41 <motle> to bind the functionality into the datatype like that
16:41:17 <motle> seems like you would have to have a different reason - like what were you saying, some kind of mapped error check?
16:41:25 lavaman joins (~lavaman@98.38.249.169)
16:41:38 <motle> i guess you could have a safe-strict-constructor
16:41:55 <motle> so that it performs all the safety checks to construct it at the same time
16:42:24 <c_wraith> as far as I'm concerned, the only reason to put strictness annotations into a constructor is when you need to unpack something of a known type for performance reasons.
16:42:25 <motle> or like, a strict fold using the safe constructor?
16:43:07 <c_wraith> otherwise it should be a property of functions that use that data and can set their own strictness policies appropriately for that exact use.
16:43:14 <motle> but then i dont see why you wouldnt just have a strict traversal with the error checker directly
16:43:50 <maerwald[m]> I use StrictData by default and so do many others
16:44:05 <c_wraith> StrictData doesn't even solve any interesting problems
16:44:15 <c_wraith> All it does is prevent using Haskell
16:44:35 <motle> lol, well if your usecase is known finite and totally evaluated
16:45:17 <maerwald[m]> No
16:45:24 <motle> so thats just like an easy switch to ensure recursive datatypes have everything like map performed strictly/simultaniously?
16:45:47 <maerwald[m]> https://github.com/yesodweb/wai/pull/752#issuecomment-501531386
16:46:00 <c_wraith> StrictData is the equivalent of sticking ! on every field in data types defined in modules where it's enabled
16:46:30 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 276 seconds)
16:46:42 <motle> idk, everything i do is state encoded anyway...
16:47:11 <c_wraith> I don't get it. I don't have problems like that comment is talking about, because I make things the correct strictness up-front.
16:47:20 <motle> so basically definitely lazy!
16:47:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
16:47:29 <motle> (as pottentially infinite as not yet unfolded)
16:47:48 <c_wraith> And I still get to do all the things that post ignores with knot-tying
16:47:50 <motle> just nyam everything up one at a time like pipes processing
16:47:51 fossdd joins (~fossdd@sourcehut/user/fossdd)
16:48:06 <motle> + fusion. strictness seems to kill all of that!
16:48:19 <motle> no streams...
16:48:30 <motle> thats IO scanning out the window
16:48:49 <motle> strictly evaluate this stream of market data!
16:48:52 × cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 3.2)
16:49:19 <motle> i guess if you have a state encoded IO list though your gona be fine
16:49:36 <motle> i mean, the IO should allow stricness to be on by default? idk im confused
16:50:02 <lechner> it looks like aeson also offers strict parsers with json' and decode': http://winterland.me/2019/03/05/aeson%27s-mysterious-lazy-parsing/index.html
16:50:15 <motle> i still think i need it to be lazy because everythings these partially suspended traversals
16:50:21 <motle> yeah thats it
16:50:48 <motle> scanning is almost like a zipper, using lazyness at the front of evaluation by tail calls
16:51:08 <motle> so you need to "do the work" on a per value basis
16:51:31 <motle> and this will happen whenever your unfolding
16:51:41 <motle> er, if the unfolds may be infinite
16:51:52 <motle> so you cant be using streaming unfolds is basically all i can conclude
16:52:12 × fluffyballoon quits (~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
16:52:50 <motle> id say thats enough to call stric by default unidiomatic to some extent
16:52:58 fluffyballoon joins (~fluffybal@pat-verona-h.epic.com)
16:53:32 <motle> assuming that folding/unfolding lazy lists is what we do
16:53:55 × drd quits (~drd@2001:b07:a70:9f1f:1562:34de:f50f:77d4) (Ping timeout: 268 seconds)
16:54:03 <motle> i guess the division is between people with finite datatypes or not
16:54:28 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
16:54:38 <motle> eg a fixed size fluid simulation compared to a live IO interface
16:55:17 <motle> its only because of the markets that i ended up with these damn scanners
16:55:19 <motle> damn
16:55:26 <motle> probably not going to make any money
16:55:34 <motle> hope you like scanners everybody!!
16:55:35 × motle quits (~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net) (Quit: Connection closed)
16:57:13 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
16:57:35 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
16:57:42 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
16:58:32 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
16:58:58 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
16:59:59 lavaman joins (~lavaman@98.38.249.169)
17:00:14 deejaytee joins (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net)
17:00:21 × chomwitt quits (~chomwitt@athedsl-32041.home.otenet.gr) (Ping timeout: 258 seconds)
17:01:01 econo joins (uid147250@user/econo)
17:02:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
17:03:25 fossdd joins (~fossdd@sourcehut/user/fossdd)
17:03:42 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
17:04:43 × fluffyballoon quits (~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
17:04:52 <lechner> Hi, why does readCreateProcessWithExitCode returns stdout as a String, please? It is the same as [Char], which according to Data.Char are Unicode code points. What if the called program, like all programs, outputs a ByteString that may or may not be UTF-8? Does System.Process attempt to decode? Thanks!
17:05:05 fluffyballoon joins (~fluffybal@pat-verona-h.epic.com)
17:07:41 motle joins (~motle@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net)
17:08:48 <motle> i spent half of last year designing asyncronous scheduling on graph distrbuted computing for these trading robot things! like, years wasted if the only reason is scanners!
17:09:56 <motle> had restricted types flowing on the edges of a hierarchical tensor net, was mental
17:10:45 <motle> damn AWS sentinals killing the haskell apps
17:11:25 <motle> all that just for a persistent net of processes that could start each other up if the sentinal got one of 'em
17:12:33 <motle> so yeah - to make something of that, i kind of want to get a programming language at least
17:12:44 <motle> its got graphs too...
17:12:50 <motle> like how we have lists
17:12:58 <motle> and something convolutional
17:13:11 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
17:13:17 <motle> extends lenses to pointers?
17:13:44 <motle> anyway, the point is about call by use and lazy evaluation i guess
17:14:01 <motle> running the program starting information flowing over the edges
17:14:14 <motle> so the pointers setting about foraging for nearby data
17:14:39 <motle> i guess then you have an elaboration over everything being just tail calls
17:14:55 <motle> ie there is other stuff "nearby" in different ways in a graph
17:14:59 <motle> than just the tail
17:15:18 <motle> so instead of pattern matching cons being the bare currency of the language...
17:15:28 <motle> and basically traversals and folds being king
17:15:38 <motle> so by suspending traversals on graphs with pointer navigation
17:15:54 <motle> idk... something complicated
17:16:10 <motle> supposed to be the key part to the heart of the language, i cant get it
17:16:59 <motle> anyway, instead of records and complicated lenses via template haskell, everything is done by pointer indexing
17:17:09 <motle> some algebra on the index
17:17:27 <motle> cant quite get the class system, but anyway...
17:18:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
17:18:17 Null_A joins (~null_a@2601:645:8700:2290:44f7:81a6:341:7abe)
17:18:22 Guest9 joins (~Guest9@103.240.170.208)
17:18:23 fossdd joins (~fossdd@sourcehut/user/fossdd)
17:18:26 <motle> i guess normally "positions" are infact let bound variables, probably enough for now
17:18:31 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
17:19:23 <motle> i guess thats just an artefact of having put edges where there were function arguments
17:20:06 <motle> its anoying how it basically just allows recursive programs to be expressed and haskell just does that anyway...
17:20:22 <motle> i guess it would be nice to wield the IR directly as a nice graph though...
17:20:59 <motle> oh yeah, it was supposed to go in the compiler as like the lowest level after making lists... not sure if would even require a systemF extension
17:22:21 <motle> yeah i guess everythings just done with mad big records at the minute, could make it better?
17:22:25 pgib joins (~textual@173.38.117.81)
17:23:47 <motle> i dont actually know how term reduction or whatever it is actually happens
17:24:14 <motle> like if having a nice graph scafolding would help, instead of having to keep track of all the record name subsets
17:25:46 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
17:25:46 <motle> i guess its not quite the question "why use datatypes at all, just make a big hetrogenous free list", since this handles the added issues about navigation that are introduced
17:25:59 <motle> which is probably why we use names for that
17:26:18 fossdd joins (~fossdd@sourcehut/user/fossdd)
17:26:54 <motle> idk, maybe by the time its some illegible IR it probably doesnt matter what record naming is used
17:27:23 <motle> the question is about the ability to make use of a coding approach that also dispensed of records at the top level, in the actual language
17:27:57 <motle> you dont need to use the names, you just have to specify the shape which is all done numerically
17:28:20 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Ping timeout: 258 seconds)
17:28:46 <motle> i mean, i use big 3d grids of numbers all the time, so it would be totally infeasable to have anything other than a numeric record
17:29:21 <motle> i guess normally programs are more "structured" in a sense where big datatypes with meaningful constructor names are used
17:29:54 <Drew[m]> I'm struggling to follow all this. Are you still talking about haskell or are you comparing something to haskell?
17:29:55 <motle> ie how we ended up with this tradition of not really supporting big grids as default datatypes
17:30:10 <motle> Drew[m]: its what i have made in haskell
17:30:21 <motle> just a bunch of work traversing free hetrogenous extensible things
17:30:37 <motle> the point is how close it is to a language fundamenta
17:30:41 <Clint> lechner: you might want something like https://hackage.haskell.org/package/process-extras-0.7.4/docs/System-Process-ByteString.html#v:readProcessWithExitCode instead
17:30:44 <motle> to be comparable to the status of list
17:31:06 <motle> and im trying to work out how it would look more well made and built in
17:31:23 <motle> seems like cartesian convolutions is the standard example
17:31:40 <motle> (needs cycles for the cubes)
17:31:50 <motle> graphamagig
17:32:12 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
17:33:03 <motle> but yeah, i really want shapes more suited to recursive higher order functions, like map
17:33:28 <motle> just to express the program on the graph scafolding and have it evaluate properly with the states all interlocking
17:33:30 geekosaur joins (~geekosaur@xmonad/geekosaur)
17:33:38 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
17:33:42 <motle> er yeah, we have modifiable programs now too, because the states
17:34:04 <motle> ie the program can store a magic number that can change between evaluation
17:34:57 derelict joins (~derelict@user/derelict)
17:35:08 <motle> so like, lazy lists state unfold, then states all interconected like pipes/conduit, then message passing doing the argument application to the modifiable functions held at the nodes, ie (state function,state value) pairs
17:35:22 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
17:35:27 <motle> because states all connected together in a graph like state encoding a list somehow
17:35:56 <motle> and scanning states like mapAcuumL traversal, somehow with the states ending up per node!///
17:36:18 <motle> its about the connectivity of subsequent scans
17:36:40 <motle> theres an algebra of function composition with a rewrite rule similar to map . map
17:36:42 × azeem quits (~azeem@176.201.11.200) (Read error: Connection reset by peer)
17:37:13 <motle> but then not just sequencing them one after the other, because having branching outputs like a scan doing something like unzip
17:37:13 azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
17:37:32 <motle> the program sits still while notionally data is fed subsequent values as inputs
17:37:49 <motle> as opposed to the scanner kind of moving along over the list
17:38:00 <motle> during traversal with the carried accumulator
17:38:47 <motle> just to say something like fold unfold fusion rewrite rules composing on a big graph with zip/unzip style branching
17:39:06 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 240 seconds)
17:39:34 <motle> and somehow thats programs on a graph, i guess intrinsically for straming which explains why there all states, and how they then end up modifiable, since they are collectively like a carry traversing over it like a scanner
17:39:53 <motle> it kind of scans over the list but demangles it through the branching program
17:40:17 × curiousgay quits (~curiousga@77-120-186-48.kha.volia.net) (Ping timeout: 252 seconds)
17:40:20 <motle> just for streaming i think, but they can output back into themselves, so i think thats how it does recursion too
17:41:04 <motle> eg you could just provide initial data and have it unfold data streamingly
17:41:47 <motle> or you could also stream data into it while it runs, in sync with the clock of the internal programs evaluation scheduling as specified on the graph as a bunch of simultanious opperations per cycle
17:42:42 <motle> i mean, its all just streaming through graphs for recursive programs
17:43:03 <motle> (with hopfiled nets as a type restriction!)
17:43:58 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
17:44:15 <motle> not sure if its wrong (or realistic) to ask for help, but anyway... thats what it is
17:45:12 <lechner> Clint: thanks! i was already looking into Data.ByteString.Lazy.UTF8.fromString but your solution is much better!
17:45:22 Atum_ joins (~IRC@user/atum/x-2392232)
17:47:05 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
17:47:54 <motle> sorry i was confusing the state which does the unfold to the states on the nodes of the graph scanning over it
17:48:50 <motle> thats why theres the clock function which just streams a list of (), to have a small shaped state fo the unfolding state and the rest of the unfold as a graph program scanning over the stream of ()
17:49:16 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4)
17:49:28 <Drew[m]> <motle> "not sure if its wrong (or..." <- I feel like I wouldn't expect many people to be able to follow your thoughts to know how to help. Clearly you've been thinking about it a lot but I think you'd need to condense it down to a more concrete question or series of questions.
17:49:48 <motle> i mean n terms of getting something implemented
17:50:15 <Drew[m]> What do
17:50:17 <Drew[m]> oops
17:50:23 <Drew[m]> What do you want to implement?
17:50:34 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
17:50:58 × azeem quits (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it) (Ping timeout: 240 seconds)
17:51:15 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
17:51:22 <motle> i guess if i could implement a square grid as a cycle for the data in a covnet and express the net as a fold through layers that are graphs... something like that, it uses the convolutions to do both message parsing and data processing then
17:51:42 fossdd joins (~fossdd@sourcehut/user/fossdd)
17:51:59 <motle> but that the same structure (the aim of the implementation) be used for both, the graph with the stencil api
17:52:29 <motle> the hetrogenaity and polymorphicity are difficult
17:53:08 <motle> ends up with type level programs specifying the shape and for the indexing etc
17:53:29 azeem joins (~azeem@176.201.11.200)
17:53:45 <zzz> do imported but not used modules contribute to binary size? and i can ask the same for functions inside and outside those modules
17:53:52 <motle> i guess the strange thing about passing types over the edges is thinking that they could modify the types at the nodes
17:54:21 <lechner> Hi, why does Haskell always assume that with f g x i mean f(g, x) instead of f(g( x )) ?
17:54:24 <zzz> s/those/any
17:54:28 <motle> ie the types of the functions held in the program, a wierd result of the thing being modifiable i guess
17:54:34 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
17:54:49 <motle> really wants to be used for genetic programming though
17:55:01 <zzz> lechner: f g x === (f g) x
17:55:17 <motle> have a pottential project there with elucidating slightly less common higher order programing patters
17:55:25 <zzz> prefix function notation is left associative by default
17:55:55 <motle> just cool to have a program that can be modifying itself while it runs i guess
17:56:03 <lechner> zzz: somehow that goes against my RPN pbrain
17:56:06 <motle> not sure how to handle runtime typechecking though...
17:56:35 <zzz> lechner: use `f $ g $ x` then
17:56:50 <motle> which would correspond to establishing or removing edges i guess, or changing types of arguments, such as the dimension of subgraph segment they were passing for insertion somewhere or something like that
17:57:20 <lechner> zzz: maybe the other way woudn't work. it just seems i need a lot of brackets
17:57:26 <lechner> or $
17:57:27 <roboguy_> lechner: wouldn't RPN be x f g?
17:58:04 <lechner> roboguy_: you are right
17:58:17 <lechner> not sure what i am saying
17:58:20 <zzz> :t (&)
17:58:22 <lambdabot> a -> (a -> b) -> b
17:58:33 <zzz> & = flip ($)
17:59:40 <motle> i guess its more difficult than a regular machine learning problem. you cant just compare its outputing a stream of functions - you would want to "regularize" it directly, which would be complicated programs acting on the various types in the graph program, to try to get it to produce eg higher order functions in some order
17:59:59 <lechner> it just seems there are more functions with just one argument
18:00:03 <roboguy_> lechner: I don't think eta-reduction would work normally if "f g x" meant "f (g x)"
18:00:12 <lechner> i ynow
18:00:15 <lechner> know
18:00:29 <lechner> what is eta please?
18:00:37 <motle> like its not exactly straitforwards how to encourage a program to assemble itself in such a way
18:01:14 <roboguy_> lechner: for example, eta-reduction allows you to rewrite "f x = g 2 x" as "f = g 2"
18:01:56 <roboguy_> eta-expansion is the other direction, which is also fine
18:02:08 <motle> i guess if it had some really badass way of examining the functions it was supposed to be reproducing, it could kind of make a way to produce them properly
18:02:10 <roboguy_> (if the function takes enough arguments)
18:02:25 <lechner> motle: don't lose those thoughts; write them into a word processor instead
18:02:42 <motle> that wont make them real like you!
18:02:58 <lechner> paper is real
18:02:58 × azeem quits (~azeem@176.201.11.200) (Read error: Connection reset by peer)
18:03:12 <motle> why you want to limit the audience so?
18:03:23 <motle> i mean really impactful i guess
18:03:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:03:31 <motle> more real
18:03:44 <motle> no pressure
18:04:02 <lechner> on the contrary, i want to make sure your thoughts (ultimately) get the attention they deserve
18:04:12 azeem joins (~azeem@dynamic-adsl-94-34-48-122.clienti.tiscali.it)
18:04:34 <motle> anyway dont we have tunes still here?
18:05:17 <motle> lechner: well i heard about the machine learning problem in my first hear classes so i guess similar projects have *some* attention?
18:05:26 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
18:05:31 <motle> probably makes more sense now though...
18:05:44 <motle> not sure how much anyone exept me ever heard of those classes anyway
18:06:18 <motle> anyway, i feel like saying something
18:06:31 <motle> the point is im not sure i can write it!
18:06:42 <motle> this is the barrier, for the asking for help
18:06:45 <lechner> roboguy_: yeah i knew something would be off. maybe applying functions partially also breaks
18:07:06 <lechner> roboguy_: don't listen to me. i am new
18:07:15 <motle> anyway, machine learning problem asside, this graph at the language seems resounding
18:07:37 <roboguy_> lechner: no worries! We were all new at some point!
18:07:37 <motle> like enough to not just be a total waste of time for anyone to bother with
18:08:00 <roboguy_> motle: are you saying that you want to parse something using a neural network?
18:08:17 <motle> thats more of a use case for sake of example
18:08:30 <motle> the thing is like a net with type abstraction everywhere
18:08:42 <motle> ends up like a program representation
18:08:49 <motle> wierdly dynamic
18:08:52 <lechner> roboguy_: i love haskell though. where can i get my tattoo :)
18:09:12 × superstar64 quits (~superstar@2600:1700:ed80:50a0:d250:99ff:fe2c:53c4) (Quit: Leaving)
18:09:28 <motle> just for the graph really, it uses the stencil convolution for data and program evaluation ordering
18:09:35 <roboguy_> lechner: haha, not sure!
18:10:10 × mikoto-chan quits (~mikoto-ch@ip-193-121-10-50.dsl.scarlet.be) (Ping timeout: 256 seconds)
18:10:21 <lechner> roboguy_: it would be a giant "λ" !
18:10:24 <roboguy_> motle: hmm, how familiar are you with traditional ways to implement those things?
18:10:34 <motle> this is why that example
18:10:44 <motle> graph, pointer, stencil? (classes)
18:11:11 <motle> roboguy_: well, they dont use tails, its all index edge stuff adjacency matrix no good imo
18:11:26 × Null_A quits (~null_a@2601:645:8700:2290:44f7:81a6:341:7abe) (Remote host closed the connection)
18:11:27 <motle> wants proper hetrogenous like
18:12:06 <roboguy_> I mean the stuff you want to replace with stencil convolution
18:12:10 <motle> you know what i mean, making it all isomorphic to grpahs with hetrogenous list branches with explicated cycles
18:12:27 <motle> roboguy: yeah, things like repa
18:12:37 <motle> parallel zips iirc
18:12:53 <motle> and the indexing on the fast random access containers
18:12:56 <motle> something about idiom
18:13:10 <motle> i want an actual extensible datatype
18:13:21 <motle> the HList cyclic tree
18:13:33 <motle> everythings just that anyway
18:13:33 <lechner> Hi, will 'show' convert a UTF-8 ByteString into a String with Unicode code points?
18:13:36 <roboguy_> hmm, ok then I think I really don't understand, hah. I haven't seen anyone use repa to implement program evaluation
18:14:00 <[exa]> lechner: utf will usually get shown as \u1234 or something
18:14:01 <motle> lol, stencil convolutions
18:14:10 <motle> matrix stuff, linear algebra
18:14:17 <motle> tensors like applicative
18:14:59 <motle> you would have a faster implementation if it was block diagonal with 0 elsewhere, typical convolution
18:15:01 <[exa]> motle: someone talked about implementing similar stuff here a while ago, actually I think he foudn some solution, you might search the logs
18:15:19 <roboguy_> motle: Have you seen Conal Elliott's papers on automatic differentiation and generalized convolution?
18:15:32 × Atum_ quits (~IRC@user/atum/x-2392232) (Ping timeout: 245 seconds)
18:15:43 <motle> logs stop on 21.07.29
18:16:05 <motle> roboguy_: i never got AD, but yeah i tried a bunch
18:16:24 <[exa]> yeah that's the migration date, there should be a repo linked with older ones
18:16:42 <roboguy_> did you see those papers? I think they'd probably help
18:17:17 <motle> anyway, its topological locality, so stencil "foraging" does
18:17:17 <motle> its more about the neighbour connectivity as per edges
18:17:17 <motle> i mean, in terms of "differentiable datatypes" (SPJ)
18:17:17 <roboguy_> they're all about implementing those things nicely in Haskell, leveraging the type system
18:17:27 <motle> you get multiple derivatives in cartesian grids
18:17:27 curiousgay joins (~curiousga@77-120-186-48.kha.volia.net)
18:17:29 <roboguy_> differentiable datatypes are something else entirely
18:17:33 <motle> and something messed up with graphs
18:17:45 <motle> but its like a helish topological calculus or something
18:17:56 <motle> best just stick with "navigating nearby"
18:18:02 <motle> pointers is fine
18:18:12 <motle> the comonad really
18:18:19 <motle> yeah its the navigable pointer comonad
18:18:39 <motle> easyer for us than any "differentiability"
18:18:45 <motle> just to get at "local"
18:18:58 <motle> topology helps but barely
18:19:18 <motle> "neighbourhood"
18:19:29 <motle> but we just say convolutional stencil
18:20:02 <motle> so its like the convolutional capability of graph pointer comonads?
18:21:27 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
18:21:27 <motle> roboguy_: yeah i said idk what AD at all
18:21:27 <motle> says it speeds up learning, never saw how, gibberish
18:21:36 <lechner> wow, that's like james joyce
18:21:38 <motle> was doing 0 derivative stochastic learning for ages too
18:21:47 lavaman joins (~lavaman@98.38.249.169)
18:21:53 fossdd joins (~fossdd@sourcehut/user/fossdd)
18:22:13 <motle> some things are just genuinely incomprehensible to me for whatever reason and AD was one of those
18:22:16 <roboguy_> motle: automatic differentiation essentially allows you to take the derivative of a function written in a programming language
18:22:35 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
18:22:45 <motle> yeah, which makes also as much sense by tautology
18:22:47 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
18:22:52 <roboguy_> what
18:23:00 lavaman joins (~lavaman@98.38.249.169)
18:23:10 <motle> AD is program differentiation
18:23:16 <motle> ok.... so....
18:23:24 <motle> monads are also burritos!
18:23:46 <motle> what does it mean to differentiate a program?
18:24:02 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
18:24:04 <roboguy_> I think you are mixing up two things. Like I said, it is unrelated to the datatype derivative thing
18:24:14 <motle> thats what its not so...
18:24:23 <motle> what is it!?
18:24:27 <motle> idk go read about it
18:24:31 <motle> i dont care!
18:24:33 <janus> motle: do you also use other social media? i wish to subscribe to your newsletter
18:24:54 <motle> really i think AD is just sillyness
18:25:09 <roboguy_> For example, if you have a function `f x = 2 * sin x`, then there is a function called `diff` that allows `diff f` to be \z -> 2*cos z
18:25:15 <motle> noooo
18:25:18 <motle> duh
18:25:26 <motle> i know how to differentiate after type restriction
18:25:33 <motle> absurd
18:25:34 <roboguy_> type restriction?
18:25:40 <motle> your doubles
18:25:51 <juri_> motle: please be a bit kinder. people are trying to be helpful. :)
18:25:52 <motle> i can differentiate that no problem
18:25:59 <motle> noo, its not a real concept!
18:26:05 <motle> they are skirting this!
18:26:21 <motle> its layer upon layer of misdirection *on all the layers*
18:26:25 Atum_ joins (~IRC@user/atum/x-2392232)
18:26:40 <roboguy_> I think I cannot help very much in this discussion, but I hope you can make progress on your project
18:26:48 <motle> "oh, you mean regular differentiation, what were you trying to get me to read about?"
18:27:10 <motle> a feux thing exists in the notion of AD and its not your fault and im sorry
18:27:18 <motle> but im pissed at AD nonetheless
18:27:22 <roboguy_> that's weird
18:27:26 <motle> yeah!
18:27:41 Atum__ joins (~IRC@user/atum/x-2392232)
18:28:05 <motle> if it wasnt a tautological mess i wouldnt be complaining so...
18:28:13 <roboguy_> define "tautology"
18:28:13 spirit_ joins (~spirit@171.61.156.55)
18:28:28 <motle> tautologies are like this...
18:28:47 <motle> er, wait thats actually a good definition, oh wait no its not... argh
18:29:08 <motle> idk what that is, seems badly broken
18:29:15 echoone joins (~echoone@188.74.32.13)
18:29:19 <motle> dont make theories like that plz!
18:29:27 <roboguy_> tautologies are logical propositions of the form "p implies p"
18:29:35 <lechner> tautological mess is a contradiction in terms. with a tautology, you have absolute certainty!
18:29:44 <motle> its the fundamental construction of a partially specified stylesheet
18:29:53 <roboguy_> hm
18:30:04 <motle> you just do model extension putting tautologies everywhere and closing things and then adding decoration
18:30:07 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Ping timeout: 268 seconds)
18:30:17 doyougnu joins (~user@c-73-25-202-122.hsd1.or.comcast.net)
18:30:26 <motle> and out comes a half baked category theory!!
18:30:34 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
18:30:40 <motle> its a madness, damn ncatlab
18:30:41 <juri_> i'm not convinced this is a conversation.
18:31:06 × Atum_ quits (~IRC@user/atum/x-2392232) (Ping timeout: 250 seconds)
18:31:08 <motle> im just retorting to anyone mistakely trying to vex me with mention of AD
18:31:20 <lechner> maybe too much caffeine?
18:31:34 <motle> maybe too much prescision nudging!
18:32:04 <Drew[m]> <motle> "noo, its not a real concept!" <- I don't understand. Sure that example might be easy, but if you're combining a whole bunch of different differentiable functions it becomes not so easy pretty quickly surely. Why make the programmer do the work if we have the power to make machnes do it in at least some cases.
18:32:10 <motle> i was *trying* to talk about tolopogical differentiation of datatypes!
18:32:35 <motle> which as far as i can tell (.....) is all thats differentiationay about programs!!
18:32:54 <motle> i think AD is a misdirection in of itself, quit throwing things
18:33:29 <motle> nobody has demonstrated otherwise! the closest anyone can get is invoking the notion of normal differentiation
18:33:49 <motle> i have *actual* topological differention with these convolutional neighberhoods on pointer graph thing
18:34:01 <motle> none of your rubbish
18:34:16 × Atum__ quits (~IRC@user/atum/x-2392232) (Ping timeout: 258 seconds)
18:34:51 <motle> even topology would struggle to get that, so programming really helps here
18:35:32 <Drew[m]> Whatever concept of differentiation you're talking about, as far as I can tell automatic differentiation is a thing with a community agreed upon meaning and it's a useful thing and I just don't get why you were speaking ill of a useful thing
18:35:38 <motle> i just keep trying to get the class hierarchy, think it was pointer, navigate, comonad
18:36:33 <motle> Drew[m]: because sometimes when i try to learn things its just to find out if they are enough of a thing to learn about, or if they do what i think they infer they mean they do
18:36:50 <motle> i assumed they meant some kind of differentiation *other* than regular differentiation
18:36:55 <motle> apparently not
18:36:56 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds)
18:36:57 <roboguy_> I will say that the combativeness makes it difficult to engage in a discussion.
18:37:14 <motle> mate, iv been battling this AD thing for ages
18:37:35 <motle> its like, a main avenue of not a thing getting at me
18:37:41 <Drew[m]> Why would differentiation mean anything other than the normal sense of differentiating a function
18:38:01 <motle> well topology!
18:38:05 <motle> position in datatype
18:38:05 <roboguy_> I have worked with AD a bit myself. I've worked through that paper I mentioned carefully, read some of the references, looked through other implementations, read the followup paper where some similar techniques are connected to a generalized form of convolution
18:38:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
18:38:38 <motle> how so?
18:38:46 <roboguy_> but it feels as though you do not want to hear any more about it. so that is that
18:38:48 <motle> i thought they werent allowed to be like differentiable datatypes?
18:38:52 <motle> nono
18:38:55 <roboguy_> you have made up your mined
18:38:56 <roboguy_> *mind
18:39:06 <motle> its a contradition, now yours seem topological all of a sudden
18:39:07 <motle> wft!?
18:39:29 <motle> boomerang of some sort
18:39:41 <motle> ok cool, so weer talking about the same thing
18:39:45 <motle> so stencils!
18:39:50 <Drew[m]> What does differentiation of datatypes even mean
18:39:58 <motle> zipper for the nav
18:40:10 <motle> presented in the SPJ as a suspended traversal
18:40:14 <motle> see a primative pointer
18:40:21 <motle> now graphs
18:40:28 <roboguy_> Drew[m]: http://strictlypositive.org/diff.pdf
18:40:28 <motle> nav
18:40:55 <motle> yeah that
18:40:58 <motle> thats a zipper
18:41:04 <EvanR> e.g. derivative of T^2 is 2*T
18:41:07 <motle> its a pointer of some kind see?
18:41:17 <motle> comonad follows
18:41:34 <motle> right so and then we need a class for many such things
18:41:50 <motle> and the nav
18:42:19 <motle> fine i guess its called AD whatever
18:42:33 <motle> but i never got stencils at the go
18:42:39 <motle> this is the API
18:43:02 <motle> because finite difference gradient approximations of various orders as common stencil uses
18:43:15 <motle> its more like, "because thats how differentiation works"
18:43:31 <motle> and the topology stuff is because we have places to put data not continuums of it
18:44:03 <motle> easyer to explain in programing actually, maths arent coping with it well - its called sheafification over there
18:44:09 <motle> stacks
18:44:31 <motle> and the heart of the stack sheaf is the topological neigberhood and constructing sections
18:44:47 <motle> which i didnt think was called AD...
18:45:00 <motle> but yeah, not records for lenses is how it hits here
18:45:20 <motle> regular grids as simple type level specifications for demo
18:45:32 <lechner> Hi, why do many people dislike 'printf' in favor of 'putStrLn', please?
18:45:38 <EvanR> me
18:45:57 <EvanR> oh i thought you said who dislikes printf in favor of putStrLn
18:46:29 <EvanR> printf has some good options but building the string yourself gives full control
18:46:52 <lechner> do you use ++ or <> ?
18:47:13 <boxscape> printf also gives you full control, you just need to use %s :P
18:47:17 <roboguy_> lechner: I believe there is, in effect, dynamic typing involved with printf
18:47:26 <roboguy_> unless I'm misremembering how the format string works
18:47:28 <EvanR> ++ or <>... doesn't matter. But concatting a list is another option
18:48:37 <EvanR> > concat ["This time is ", format theTime, " sweetheart"]
18:48:38 <lambdabot> error:
18:48:38 <lambdabot> • Variable not in scope: format :: t0 -> [Char]
18:48:38 <lambdabot> • Perhaps you meant one of these:
18:48:48 <EvanR> didn't mean to put >
18:48:52 <roboguy_> > printf "%s" True
18:48:54 <lambdabot> error:
18:48:54 <lambdabot> • Could not deduce (PrintfArg Bool) arising from a use of ‘printf’
18:48:54 <lambdabot> from the context: PrintfType t
18:49:03 <roboguy_> > printf "%s" (123 :: Int)
18:49:05 <lambdabot> error:
18:49:05 <lambdabot> • Ambiguous type variable ‘a0’ arising from a use of ‘show_M693588695403...
18:49:05 <lambdabot> prevents the constraint ‘(Show a0)’ from being solved.
18:49:22 <roboguy_> that's different than what I get in GHCi...
18:49:29 <EvanR> > printf "%s" (123 :: Int) :: String
18:49:29 <roboguy_> > printf "%s" (123 :: Int) :: IO ()
18:49:31 <lambdabot> "*Exception: printf: bad formatting char 's'
18:49:31 <lambdabot> <IO ()>
18:49:37 <roboguy_> ah, you got it EvanR
18:49:51 <roboguy_> there are runtime type errors. that's one big reason you could dislike it
18:50:06 <roboguy_> also, you could probably improve the interface so that is impossible...
18:50:45 <EvanR> stringing together strings is much more conceptually simplee
18:50:47 <lechner> my big issue, as a beginner, is that with putStrLn lines get very long, and right now, my style has some serious problems
18:51:01 <lechner> i now use a code formatter
18:51:01 <EvanR> if printf works then use it
18:51:22 <roboguy_> I usually write putStrLn $ "some text " ++ show x ++ " .... " ++ show y ++ ...
18:51:23 <lechner> i will have multiple iterations of this program
18:51:49 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Remote host closed the connection)
18:51:54 <Drew[m]> roboguy_: I wouldn't be surprised if there's already a library with type-safe formatting template representation
18:52:14 <roboguy_> Drew[m]: same. I feel like I've actually seen one, but I don't quite remember
18:52:21 burnsidesLlama joins (~burnsides@client-8-91.eduroam.oxuni.org.uk)
18:52:53 <lechner> i also give imperative name to functions. does that condition have a name. is there a cure?
18:53:03 <EvanR> wait
18:53:03 <lechner> names
18:53:11 <EvanR> i didn't even get a runtime type error
18:53:16 <EvanR> > printf "%s" (123 :: Int) :: String
18:53:17 <lambdabot> "*Exception: printf: bad formatting char 's'
18:53:24 <EvanR> oh i see, no closing "
18:53:33 × tput quits (~tim@S0106a84e3fe54613.ed.shawcable.net) (Ping timeout: 268 seconds)
18:53:39 <Drew[m]> lechner: Er what's an example of an imperative name?
18:53:40 <roboguy_> lechner: imperative names?
18:53:51 <EvanR> at first i thought it was a horribad way out of the error
18:54:25 <lechner> processTask sendProduct updateTool getTool getConfig
18:54:29 <EvanR> function names that happen to be a verb?
18:54:49 tput joins (~tim@S0106a84e3fe54613.ed.shawcable.net)
18:55:00 <Drew[m]> If `processTask` processes a task I wouldn't be bothered
18:55:10 <EvanR> at least it's not the kingdom of nouns
18:55:10 <roboguy_> lechner: those sound fine to me
18:55:30 Obo joins (~roberto@70.pool90-171-81.dynamic.orange.es)
18:55:33 <roboguy_> in fact, probably what I would use (and often see used in other Haskell projects)
18:55:42 <EvanR> NounVerber
18:55:48 × mattil quits (~mattilinn@87-92-17-82.bb.dnainternet.fi) (Quit: Leaving)
18:55:55 <Drew[m]> taskProcessor would upset me
18:56:00 <lechner> used as an imperative. i think English uses plain verb as the imperative
18:56:10 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
18:56:31 <EvanR> what language is your program in
18:56:39 <roboguy_> oh, "imperative" in the sense of natural languages like English, not the programming language notion?
18:56:41 <lechner> Haskell
18:56:49 <EvanR> like, not english?
18:56:51 fossdd joins (~fossdd@sourcehut/user/fossdd)
18:56:51 <lechner> well, English
18:57:22 × burnsidesLlama quits (~burnsides@client-8-91.eduroam.oxuni.org.uk) (Ping timeout: 272 seconds)
18:58:10 <lechner> sorry, like the AD thing with the other fellow earlier i am fighting the remnants of imperative programming in my mind, or so i think
18:58:12 <EvanR> haskell is cool for having a variety of grammatical types... nouns, verbs, prepositions
18:58:19 <Drew[m]> When you write `processTask task` what are you doing? Processing a task called `task`
18:58:19 <Drew[m]> When you write `taskProcessor task` are you task processoring a task?
18:58:27 <lechner> yes
18:58:42 <lechner> they are all monadic
18:58:48 <lechner> but still
18:58:49 <EvanR> send task taskProcessor
18:59:38 qbt joins (~edun@user/edun)
18:59:50 <EvanR> taskProcessor <- createThingDoer processTask
19:00:58 <EvanR> when you get into non IO monads I can see how not using verbs will confuse people
19:01:20 <EvanR> in pure code, non verbs seems more natural
19:01:25 vicfred joins (~vicfred@user/vicfred)
19:01:31 <roboguy_> lechner: that all seems fine to me. In general, I wouldn't worry as much about "avoiding doing it the imperative way" and focus more on "doing it the Haskell way"
19:01:33 <roboguy_> if that makes sense
19:02:00 <roboguy_> sometimes the Haskell way involves some imperative-style stuff. Sometimes it does not
19:02:34 <Drew[m]> Imo verbs are fine in pure code. I mean we `map` and `filter` and `sum` do we not?
19:02:47 <lechner> this is my second Haskell program. it works just like the Perl version, but my style is terrible. i think i use the wrong entry points to separate the parts https://dpaste.org/RGJQ
19:02:50 <EvanR> all three of those could be nouns xD
19:02:56 <roboguy_> yeah, without verbs in names it would be very confusing
19:02:58 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
19:03:05 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds)
19:03:06 <Drew[m]> map, mapped, mapping, sum, summed, summing
19:03:11 fossdd joins (~fossdd@sourcehut/user/fossdd)
19:03:15 hyiltiz joins (~quassel@31.220.5.250)
19:03:20 <EvanR> it's unclear if map, filter, or sum ought to be construed as verbs or not
19:03:22 <EvanR> to me
19:03:37 <EvanR> never even thought about it until now lol
19:03:55 <Drew[m]> I read `map x y` as "map x (over) y`
19:04:07 <EvanR> sure that's one way to think of it
19:04:12 <Drew[m]> What about compose
19:04:20 <Drew[m]> we don't call it the composer function
19:04:32 <Drew[m]> and we don't think of "a compose"
19:04:41 <EvanR> in purely math areas, the math really has nothing to do with grammar
19:04:51 <EvanR> compose could just be the name of an operator
19:05:03 <EvanR> it could have been known as composition
19:05:04 <deejaytee> we think of a composition, though
19:05:06 × ddb quits (~ddb@2607:5300:61:c67::196) (Ping timeout: 240 seconds)
19:05:06 <lechner> haskell can flow well, though
19:06:09 <lechner> conditionals are my other problem. i am kind of Either'ed out
19:06:50 <EvanR> a functor for example could be seen as an action that sends things from C to D, or the act of lifting arrows so they can act between categories
19:07:06 <lechner> plus, i have poor vision and ten indent levels are too much. maybe i should write shorter functions
19:07:18 <EvanR> i rarely have more than 1 or 2 indent levels
19:07:25 <EvanR> where clauses can help there
19:07:28 ddb joins (~ddb@2607:5300:61:c67::196)
19:07:51 <lechner> that may be hint i needed
19:07:54 <lechner> the
19:08:46 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
19:09:16 <Drew[m]> Yes you can have a filter, a sum and a map but in the context of `map` wouldn't the correct noun be a mapper or mapping? "A map" as a noun makes me think of atlases more than well... a mapping from input to output
19:09:18 <echoone> You guys should check out APL. The take the grammar stuff seriously.
19:09:24 <echoone> You guys should check out APL. They take the grammar stuff seriously.
19:09:35 <dsal> :t get
19:09:36 <lambdabot> MonadState s m => m s
19:09:48 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
19:10:07 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
19:10:17 <dsal> You don't need `getX` when you have `gets`
19:10:19 <dsal> :t gets
19:10:20 <lambdabot> MonadState s m => (s -> a) -> m a
19:10:33 <Drew[m]> There's also `traverse`, rather than traversal.
19:10:35 × pfurla_ quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Quit: gone to sleep. ZZZzzz…)
19:10:58 <dsal> :t traversed
19:11:00 <lambdabot> (Indexable Int p, Traversable f1, Applicative f2) => p a (f2 b) -> f1 a -> f2 (f1 b)
19:11:43 falafel joins (~falafel@pool-96-255-70-50.washdc.fios.verizon.net)
19:11:45 <deejaytee> echoone: that's been a source of difficulty for me in learning J - while at first parts of speech are useful for remembering what does what, it starts to clash later on
19:12:14 <EvanR> map seems a bit ambiguous... probably because this is a purely mathematical idea to me
19:12:15 <deejaytee> but I suppose it's better than no terminology whatsoever
19:12:22 <dsal> I've seen people get hung up on "how do I read this in English?" Such a weird concept. If I could even express my problems in English, I'd probably do that in the first place.
19:12:28 <EvanR> math doesn't really verb anything
19:12:51 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Quit: WeeChat 3.2)
19:12:54 <roboguy_> EvanR: what about "acting on"
19:13:07 <roboguy_> or "pulling back along"
19:13:19 <EvanR> right, group action. Sounds like a case of math people trying to get inspiration from language, like us
19:13:29 <EvanR> pullback definitely
19:13:33 <EvanR> it's verby
19:13:40 <EvanR> 'a pullback' lol
19:14:04 <EvanR> a case of math terms becoming ambiuously part-of-speeched
19:14:37 × fluffyballoon quits (~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
19:14:49 <EvanR> lens gets a lot of help from adjectives
19:15:13 fluffyballoon joins (~fluffybal@pat-verona-h.epic.com)
19:15:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
19:15:27 <EvanR> but group actions, pullbacks, and lenses still aren't "doing" more or less than anything else
19:15:43 fossdd joins (~fossdd@sourcehut/user/fossdd)
19:15:44 <lechner> Hi, how do I best print each element of an array on a separate line, prepended by a space, please?
19:15:48 <dsal> `map` is also a little weird because you can also think of it as just sort of sticking a transformation on list accessors. It doesn't *actually* build a new list after applying your function to every element in the list.
19:15:58 <dsal> lechner: mapM_ print thing
19:16:17 <dsal> Oh, if you want to add a space, you can stick one in the action there.
19:16:35 <EvanR> yes lazy evaluation makes verbing even less applicable, if you wanted to think of verbs causing the compuer to heat up and do things
19:16:36 <dsal> mapM_ (\x -> putStr " " >> print x) thing
19:16:38 <roboguy_> :t unlines
19:16:39 <lambdabot> [String] -> String
19:17:26 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
19:17:32 <EvanR> verbs <-> do work
19:17:35 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds)
19:17:45 <dsal> @undo do work
19:17:45 <lambdabot> work
19:17:50 <dsal> There's no way out!
19:17:52 <EvanR> fix error
19:18:38 × finsternis quits (~X@23.226.237.192) (Remote host closed the connection)
19:19:04 × echoone quits (~echoone@188.74.32.13) (Quit: Client closed)
19:19:12 <EvanR> actually this entire train of thought about programming = a bunch of verbs to make stuff 'happen' in a row might be the initial key thing to tell people to forget when starting haskell
19:19:22 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
19:20:31 mjs2600 joins (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net)
19:20:54 <dsal> The intuition starts to break down with infinite lists, but yeah, it's helpful. It's also helpful when you do stuff like `map f . map g`. If you think about the `map` doing something, it suddenly seems expensive. If you think about it just shoving filters on the thing, you won't spend hours trying to make your code more complicated to do what RULEs can do.
19:21:20 <Drew[m]> I'm fine with thinking that `map` "maps a function over a list", that it "does stuff"
19:21:20 <Drew[m]> It just only does stuff when the stuff is needed.
19:21:56 <lechner> that's another point
19:21:57 <dsal> Sure. It's not a bad mental model, but it's not the only mental model. :)
19:22:25 <EvanR> you can get pretty far in haskell imagining code running by rewriting expressions
19:24:16 <EvanR> which is both an act and an expression of 'what this function means'
19:24:51 <lechner> dsal: should your lambda above print the array element (which are of type String) in quotes?
19:24:59 <lechner> elements
19:25:14 <dsal> lechner: Yeah, that's what `print` does. I wasn't sure what the type was. You can use `putStrLn`
19:25:22 × fossdd quits (~fossdd@sourcehut/user/fossdd) (Ping timeout: 240 seconds)
19:25:29 <EvanR> the second thing there makes it easy to see you could reverse it without causing problems
19:25:39 <dsal> lechner: It's good to understand what the parts were. :)
19:25:53 fossdd joins (~fossdd@sourcehut/user/fossdd)
19:25:54 <EvanR> imperative programming often involves doing things that can't be reversed
19:26:11 <EvanR> e.g. updating arrays
19:27:19 <maerwald> so what's the alternative to brick on windows?
19:27:44 <lechner> dsal: could i also write mapM_ (\x -> putStrLn $ " " <> x) ?
19:30:25 shapr hops
19:31:20 <[exa]> lechner: a complimentary bit of compression: `mapM_ (putStrLn . (' ':) )`
19:31:37 <Drew[m]> <EvanR> "you can get pretty far in..." <- Isn't that to a degree what STG does?
19:31:43 × fluffyballoon quits (~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
19:32:04 fluffyballoon joins (~fluffybal@pat-verona-h.epic.com)
19:32:39 <dsal> lechner: I'll allow it. :)
19:32:58 <EvanR> you can think of it like that
19:33:16 <maerwald> so how do I use this from haskell https://github.com/migueldeicaza/gui.cs
19:33:24 <dsal> lechner: There's mapM_ and forM_ -- I think I've used the latter once.
19:33:26 <dsal> :t forM_
19:33:27 <lambdabot> (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
19:33:33 × ubert quits (~Thunderbi@178.165.190.122.wireless.dyn.drei.com) (Ping timeout: 276 seconds)
19:33:55 bontaq` joins (~user@ool-18e47f8d.dyn.optonline.net)
19:34:10 jneira_ joins (~jneira_@28.red-80-28-169.staticip.rima-tde.net)
19:34:28 <lechner> [exa]: so this would be my first point-free, but unfortunately I actually have to prepend muliple characters (" - "). Is that possible?
19:34:41 <dsal> lechner: Find out! :)
19:34:54 <lechner> with cons?
19:35:14 <dsal> Understand what it's doing. There's not much magic there.
19:35:23 <dsal> :t (' ':)
19:35:25 <lambdabot> [Char] -> [Char]
19:35:34 <dsal> :t putStrLn . (' ':)
19:35:36 <lambdabot> [Char] -> IO ()
19:36:11 <dsal> Do you understand sections?
19:36:18 <lechner> i am doing it wrong
19:36:45 <dsal> You *can* use `:` but it'd be a little weird.
19:36:47 × Obo quits (~roberto@70.pool90-171-81.dynamic.orange.es) (Ping timeout: 252 seconds)
19:37:13 Erutuon joins (~Erutuon@user/erutuon)
19:37:14 <lechner> mapM_ (putStrLn . (" - ":)) (Task.inputs task) gives me No instance for (Data.String.IsString Char) arising from literal
19:37:42 bontaq` is now known as bontaq
19:37:43 <dsal> So, taking a step back.
19:37:47 <dsal> :t (" - ":)
19:37:48 <lambdabot> [[Char]] -> [[Char]]
19:38:07 <[exa]> lechner: you confused "" and '', the second is only a single char that can be prepended with :
19:38:10 <dsal> I don't think that's what you want.
19:38:25 <[exa]> for strings, you need at least (" -" ++)
19:38:44 <dsal> @pl \x -> putStrLn $ " " <> x
19:38:44 <lambdabot> putStrLn . (" " <>)
19:38:54 <lechner> maybe putStr . (" - " ++) ?
19:39:06 <dsal> That's not the most egregious point freedom.
19:39:14 <dsal> But you need to understand what it's saying.
19:39:54 <lechner> i actually wrote that before seeing [exa]'s response
19:39:59 <dsal> > (" - " <>) "dash"
19:40:00 <lambdabot> " - dash"
19:40:24 <[exa]> lechner: np :]
19:40:40 × alx741 quits (~alx741@181.196.69.4) (Ping timeout: 256 seconds)
19:42:18 chomwitt joins (~chomwitt@ppp-94-67-203-142.home.otenet.gr)
19:42:45 <lechner> so, perhaps to state the obvious: a lambda with one variable is a partially applied function with one degree of freedom remainig, right? (in beginner's parlance)
19:43:52 <dsal> I would say it doesn't make sense to call a function partially applied if it has one argument.
19:44:20 <dsal> If a function takes two arguments and you supply one, it's partially applied.
19:44:56 <dsal> Sections are a way of specifying that a function that takes two arguments is either partially applied in its first or second argument.
19:45:42 <dsal> > . ("¡¡¡" <>) . (<> "!!!") $ "It can do both.
19:45:44 <lambdabot> <hint>:1:1: error: parse error on input ‘.’
19:45:45 <dsal> > . ("¡¡¡" <>) . (<> "!!!") $ "It can do both."
19:45:47 <lambdabot> <hint>:1:1: error: parse error on input ‘.’
19:45:54 <dsal> > ("¡¡¡" <>) . (<> "!!!") $ "It can do both."
19:45:56 <lambdabot> "\161\161\161It can do both.!!!"
19:45:57 <dsal> Man, I'm not smart today.
19:46:00 <dsal> Also, boo.
19:46:06 <Drew[m]> <maerwald> "so how do I use this from..." <- I've never done this before so I'm just learning as I go and probably not telling you what you don't already know but according to stack overflow you can call Haskell from C# by just using Haskell's FFI as you would to make Haskell callable from C, and using C#'s FFI as you would to call a C function. I assume the same idea applies in reverse.
19:46:20 × vicfred quits (~vicfred@user/vicfred) (Ping timeout: 258 seconds)
19:47:10 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 244 seconds)
19:47:33 <lechner> wow, my little program is 18 megabytes! is haskell statically lihked like golang?
19:47:53 <dminuoso> lechner: Yes and no.
19:48:09 <dminuoso> The haskell object files get statically linked in, but native libraries are dynamically linked
19:48:43 <dminuoso> lechner: Try setting `split-sections: True` in your ~/.cabal/config, and then also enable executable stripping in the cabal invocation.
19:48:50 <dsal> lechner: You just have room to grow!
19:48:55 <dminuoso> Note that this will rebuild all transitive dependencies
19:49:00 <dsal> If it's 18MB, you should do 18MB worth of stuff in it.
19:49:08 <dminuoso> This can easily get the size down to say 1MiB
19:49:21 <dsal> Is it rust that prioritized tiny binaries?
19:50:07 × falafel quits (~falafel@pool-96-255-70-50.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
19:52:28 <delYsid> Whats the "correct" way to use "at" from the Lens package with a Map where I know the key is present? at foo . to fromJust looks weird :-)
19:52:53 finsternis joins (~X@23.226.237.192)
19:52:56 <dminuoso> delYsid: Hard to say what "correct" means without knowing your usage pattern.
19:53:02 <delYsid> and ^?! doesnt work.
19:53:10 <dminuoso> delYsid: But you can use: at foo . _Just
19:53:19 <dminuoso> Consider preview to consume this
19:53:21 alx741 joins (~alx741@181.196.69.85)
19:53:43 <dminuoso> % import Data.Map qualified as M
19:53:43 <yahb> dminuoso:
19:54:49 burnside_ joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
19:54:49 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
19:54:52 cjay joins (cjay@nerdbox.nerd2nerd.org)
19:54:54 <dminuoso> % preview (at "foo" . _Just) (M.fromList [("foo", 1), ("bar", 2)])
19:54:55 <yahb> dminuoso: Just 1
19:55:01 <dminuoso> delYsid: If you can read what yahb just said.
19:55:35 burnsidesLlama joins (~burnsides@dhcp168-019.wadham.ox.ac.uk)
19:55:35 × burnside_ quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Read error: Connection reset by peer)
19:57:27 × fendor quits (~fendor@178.165.162.84.wireless.dyn.drei.com) (Remote host closed the connection)
19:57:31 <lechner> dminuoso: stripping is not on by default? https://cabal.readthedocs.io/en/3.4/cabal-project.html#cfg-field-executable-stripping
19:58:49 jpds joins (~jpds@gateway/tor-sasl/jpds)
19:58:50 <delYsid> dminuosoBut now the result is a Just again :-) I was joping to get a pure result, since, I know the key must be present...
19:59:52 <delYsid> % view (at "foo" . to fromJust) (M.fromList [("foo", 1), ("bar", 2)])
19:59:52 <yahb> delYsid: 1
20:01:47 × qbt quits (~edun@user/edun) (Ping timeout: 245 seconds)
20:02:42 fendor joins (~fendor@178.165.162.84.wireless.dyn.drei.com)
20:02:56 Cajun joins (~Cajun@ip98-163-211-112.no.no.cox.net)
20:03:09 <amesgen[m]> % M.fromList [("foo", 1), ("bar", 2)] ^?! ix "foo"
20:03:09 <yahb> amesgen[m]: 1
20:03:28 × burnsidesLlama quits (~burnsides@dhcp168-019.wadham.ox.ac.uk) (Remote host closed the connection)
20:03:42 <amesgen[m]> delYsid: ^ this should be about as succinct as it gets
20:07:17 <lechner> dsal [exa] dminuoso roboguy_: thanks so much for your help today!
20:08:52 <roboguy_> lechner: you're welcome!
20:09:46 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 240 seconds)
20:10:04 <delYsid> amesgen[m]: Thanks! This is a bit surprising, as I thought ix only worked for arrays and such... So it actually does work for maps!
20:10:56 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 244 seconds)
20:11:16 hyiltiz joins (~quassel@31.220.5.250)
20:13:20 <amesgen[m]> delYsid: yeah, there are many instances, even for functions (by application): https://hackage.haskell.org/package/lens-5.0.1/docs/Control-Lens-At.html#t:Ixed
20:17:53 jeslie0 joins (~user@135-23-172-182.cpe.pppoe.ca)
20:18:27 jpds joins (~jpds@gateway/tor-sasl/jpds)
20:18:28 <delYsid> k, tnx
20:21:25 × jeslie0 quits (~user@135-23-172-182.cpe.pppoe.ca) (Remote host closed the connection)
20:24:26 Guest90 joins (~Guest90@ip98-163-211-112.no.no.cox.net)
20:24:40 × Guest90 quits (~Guest90@ip98-163-211-112.no.no.cox.net) (Client Quit)
20:25:01 × Cajun quits (~Cajun@ip98-163-211-112.no.no.cox.net) (Changing host)
20:25:01 Cajun joins (~Cajun@user/cajun)
20:25:21 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
20:26:34 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
20:29:34 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.2)
20:30:21 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
20:30:54 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
20:31:57 acidjnk_new joins (~acidjnk@p200300d0c72b9507354aa6404eb54f37.dip0.t-ipconnect.de)
20:34:04 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:40:30 Null_A joins (~null_a@2601:645:8700:2290:44f7:81a6:341:7abe)
20:41:20 <maerwald> sm: following your advice, I updated the FAQ section of the README, so next time I can just link there
20:41:36 × Guest9 quits (~Guest9@103.240.170.208) (Quit: Connection closed)
20:42:55 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Remote host closed the connection)
20:47:47 __monty__ joins (~toonn@user/toonn)
20:48:38 jao joins (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net)
20:50:26 vicfred joins (~vicfred@user/vicfred)
20:50:27 slowButPresent joins (~slowButPr@user/slowbutpresent)
20:56:45 × mjs2600 quits (~mjs2600@c-24-91-3-49.hsd1.vt.comcast.net) (Ping timeout: 276 seconds)
21:08:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
21:08:46 <sm> maerwald: +1, that's a time saver. https://gitlab.haskell.org/haskell/ghcup-hs#faq
21:08:47 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Quit: Lost terminal)
21:09:14 <maerwald> sm: also, earlier you asked about goals: https://gitlab.haskell.org/haskell/ghcup-hs#design-goals
21:09:23 <sm> sorry to leave abruptly last night, it was 2am here and we were not getting anywhere
21:09:46 <sm> As with the reddit answer, I think more work is needed to make this more compelling/clear. And I understand, it's not easy.
21:10:02 <maerwald> what needs to be more clear?
21:10:59 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
21:14:18 <sm> the answer to "Why should I use ghcup over stack?", eg. The answer doesn't quite answer the question, as in eg "because X" or "you shouldn't" or "it's a wrong question because Y". I feel we have a lot of docs like this in the haskell world which don't quite cut to the point, I have lots myself so I'm interested in this kind of writing. As always, just IMHO and you may disagree with any of it.
21:15:04 <maerwald[m]> The answer depends on your needs
21:15:12 <sm> yes, indeed
21:15:28 <sm> exactly so
21:15:42 agua joins (~agua@2804:18:4f:b157:1:0:6976:119)
21:16:33 <maerwald[m]> That's why I don't answer, but explain
21:17:11 <sm> I'm particularly interested in the needs of newcomers/folks not well versed in the history of haskell tools. Since they are a much bigger group and how we answer them affects haskell's future
21:17:47 <sm> I think our explanations are often not the kind they need
21:19:12 <maerwald[m]> They are a much bigger group?
21:19:39 <sm> and I think the effort of finding a simple clear answer pays off big time. If we can't provide one, that's valuable information
21:19:44 × pesada quits (~agua@2804:14c:8793:8e2f:3944:8017:7f63:8e28) (Ping timeout: 252 seconds)
21:20:01 <maerwald[m]> I'd guess the question doesn't come from a newcomer, because it already contains misconceptions
21:20:11 <sm> "I'm new to this. Why should I choose it over stack?". I take it at face value.
21:21:05 <maerwald[m]> "New to ghcup" or "new to haskell"?
21:21:22 × neceve quits (~quassel@2a02:c7f:607e:d600:f762:20dd:304e:4b1f) (Ping timeout: 245 seconds)
21:21:29 <sm> either, both
21:21:42 <maerwald[m]> No idea
21:22:17 <maerwald[m]> Anyway, that seems more like a discussion for a download page
21:24:04 sheepduck joins (~sheepduck@user/sheepduck)
21:24:22 <maerwald[m]> I don't think "you should use my tool, because" is something I want in any of my readmes
21:24:40 × bruceleewees quits (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Read error: Connection reset by peer)
21:25:19 <sm> you can answer the question without saying that, as in the examples I gave above
21:25:27 bruceleewees joins (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl)
21:26:06 <maerwald[m]> I think the question is answered
21:26:24 × gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer)
21:26:40 <motle> can you do my code for me?
21:27:24 gentauro joins (~gentauro@user/gentauro)
21:27:29 <maerwald[m]> motle: what do you pay?
21:27:38 <motle> salad?
21:28:01 <maerwald[m]> With mozzarella?
21:28:10 <motle> youd have to, you know, bring your own
21:28:38 <motle> dont try just salad, cheapskates
21:28:47 <motle> suplements people,
21:30:08 <maerwald[m]> Ok, you pay in supplements?
21:30:35 <motle> you can have salad, and you can go elsewhere for your suplements
21:31:09 <maerwald[m]> I think I'm out :)
21:31:10 <motle> idk if this counts as fair trade or what...
21:31:18 <motle> yeah me to!
21:31:30 <motle> fucking diet!
21:31:50 <maerwald[m]> This isn't Haskell Den :p
21:32:06 <motle> you were wanting paid
21:32:10 × retroid_ quits (~retro@5ec19a54.skybroadband.com) (Quit: Connection error?!)
21:32:16 <motle> i just wanted codezzzz
21:32:27 <motle> all my code is defective
21:32:36 <motle> its all strewn
21:32:56 <motle> i cant unfurl it
21:33:30 <motle> its like trying to play a melting guitar
21:34:08 pesada joins (~agua@191.177.175.57)
21:34:32 <motle> idk, i think it might have been important for something, i cant tell
21:34:41 <roboguy_> motle: sometimes when that happens to me, I start over. Usually I have fresh insight and come up with a new way to structure the code
21:34:42 × neightchan quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 245 seconds)
21:35:04 <motle> yeah, i do that, and i see the universe instantly
21:35:19 <roboguy_> hmm
21:35:33 <motle> and then all my code kind of evaporates
21:36:13 <motle> i mean im like, whatt was the oh the huge graph of everything with the polymorphic loopy bp oh god i cant do that
21:36:28 <motle> helpf
21:37:06 jmorris joins (uid433911@id-433911.stonehaven.irccloud.com)
21:37:10 <motle> *points to years of groundwork dashed about the place*
21:37:26 <motle> its the thing!
21:37:52 <motle> i had various parts of it working at times...
21:37:53 × agua quits (~agua@2804:18:4f:b157:1:0:6976:119) (Ping timeout: 252 seconds)
21:38:03 <motle> im sure of it!
21:38:18 × dhil quits (~dhil@195.213.192.47) (Ping timeout: 240 seconds)
21:38:28 <motle> at what point does it self assemble?
21:38:45 <motle> i try googling things and it just ends up more disparate!
21:39:38 aegon joins (~mike@174.127.249.180)
21:39:43 <motle> i guess left in this state long enough gona try hitting it with a hammer
21:39:50 <motle> at some point!
21:39:54 <aegon> is there an easy way to host the haddock generated by stack through a stack command, if not what web server do you use
21:40:02 <aegon> or what is your favorite method
21:40:14 agua joins (~agua@2804:18:4f:b157:1:0:6976:119)
21:40:57 × pesada quits (~agua@191.177.175.57) (Ping timeout: 258 seconds)
21:41:09 <arkanoid> I've almost at the end of my "first week with haskell experiment" and it has been a great experience. But I've some high level question for more experienced users and are more on the production side of haskell
21:42:07 <motle> iv tried slopping the code back *into* the cup.....
21:42:20 <motle> but most of it isnt in the cup...
21:42:42 <motle> is this common?
21:42:49 <Drew[m]> aegon: You run your own hoogle server with --local to get a version of hoogle that only provides documentation for the actual version of dependencies you're currently compiling with
21:43:07 × son0p- quits (~ff@181.136.122.143) (Remote host closed the connection)
21:43:07 × son0p quits (~ff@181.136.122.143) (Remote host closed the connection)
21:43:15 <Drew[m]> I'm a cabal user but there's probably a `stack hoogle` command, I can't remember
21:43:37 <motle> yeah, your right, there was a command for that
21:44:15 <arkanoid> one thing that scares me te most in picking up haskell for a serious project is the fragmentation of the haskell packages. I have no feeling of a center where "big and enstablished" libraries/framework revolves around. When do libraries get "blessed" by the community? When do library dies and gets deprecated?
21:44:16 <Drew[m]> So you'd want `stack hoogle --local` probably
21:44:48 <motle> arkanoid: the fragmentation does not happen in haskell, only at its boarder
21:44:59 <motle> siege!
21:45:11 <deejaytee> arkanoid: stackage could sort of be construed as a "big and established" ground, though some of the libraries still are on the small side
21:45:14 <motle> might complain to brussles
21:45:34 <dsal> arkanoid: That's an interesting concern. But for the most part, I grab things that work for me and use them or make my own.
21:45:40 × fluffyballoon quits (~fluffybal@pat-verona-h.epic.com) (Quit: Client closed)
21:45:41 <motle> they say we should get on with the graph
21:45:45 <maerwald[m]> Lol
21:46:02 <dsal> But yeah, stackage ends up filtering out things that aren't maintained well because language changes end up breaking things and they fall out of stackage if people don't update their stuff.
21:46:25 <dsal> (I still end up using things that aren't in stackage for a few reasons, though)
21:46:25 fluffyballoon joins (~fluffybal@pat-verona-h.epic.com)
21:47:28 <motle> coffee??
21:47:58 × spirit_ quits (~spirit@171.61.156.55) (Quit: Konversation terminated!)
21:47:59 <yushyin> i usually just use libraries I need, ask here for opinions (lots of opinions here) and I (try to) avoid certain authors
21:48:16 <aegon> Drew[m]: hoogle --server :)
21:48:21 <aegon> thanks!
21:48:41 <Drew[m]> Remember the `--local`!
21:48:43 <arkanoid> I've just searched a library for testing in a stackage LTS distribution, I get more than 30 different libraries for just testing
21:49:04 <dsal> That's not a meaningful thing to do, though. What are you expecting to find?
21:49:14 <dsal> Something like tasty?
21:49:14 <motle> local hoogle server?
21:49:23 <motle> wait...
21:49:50 <motle> what about mercurial?
21:50:13 <motle> ih god my code! such a mess
21:50:18 × chele quits (~chele@user/chele) (Remote host closed the connection)
21:50:54 × xff0x quits (~xff0x@2001:1a81:52ef:f900:5eb1:ed8e:7709:10d6) (Ping timeout: 272 seconds)
21:50:55 × deejaytee quits (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Killed (tungsten.libera.chat (Nickname regained by services)))
21:51:00 deejaytee joins (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk)
21:51:10 <motle> hang on ill just take its jacobian...
21:51:33 <sm> aegon: also `stack haddock --open`
21:51:36 xff0x joins (~xff0x@2001:1a81:52ef:f900:6be3:99e6:cbd0:482d)
21:52:42 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:53:10 <motle> harmonic driving version control is whats required.
21:53:19 justsomeguy joins (~justsomeg@user/justsomeguy)
21:53:25 <motle> i think mine crashed...
21:53:55 <arkanoid> if I want to put haskell into my toolbelt as production language, it's required to put haskell on the time-to-write-a-program graph. I have a strong feeling that the fragmentation of the libraries is going to make up most of the problems here
21:53:56 <motle> i was hoping you might have seen a wheel rolling by...
21:54:22 <motle> dont "time to write a program graph" me sunny jim
21:54:27 <sm> arkanoid: hackage is a strong central package store, anything intended to be reused appears there. stackage is the rolling series of stable curated subsets of that. Like debian unstable, testing, stable, or similar
21:54:39 <dsal> arkanoid: That sounds good. I've had worse problems with library fragmentation in all the other languages I've used. :)
21:55:14 <sm> stackage was the answer to "how to I make this reproducible for production". In recent times, cabal.project is another answer
21:55:24 <motle> anyway its not representative, i wasnt even sure i was driving tbh
21:55:30 <dsal> My stack default template drops out a project with a lib, app, and test suite in tasty with an example quickcheck property I can run immediately.
21:56:20 <arkanoid> apart from new languages where the ecosystem is quite small, among the "big and mature" languages I find haskell the one out of a central control. I'm still talking about the ecosystem, not the implementation itself oviously
21:57:18 <motle> advice for people starting learning haskell would be something like "start simple, abstract, keep abstracting - ok enough abstracting!! stop already!! gigs of .hs files, no no no...
21:57:53 <dsal> arkanoid: I'm not sure what you mean. What makes something like go or java better in this regard?
21:58:09 <motle> its at the point where it goes all styrofoam expanding foam you want to put the cup down
21:58:31 <motle> if any of the surfaces are solid
21:59:00 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:59:04 <dsal> go ships with an implementation of quickcheck that's objectively bad and they froze the API over a decade ago. heh
21:59:34 <arkanoid> go has google that delivers basically what'ever needed to be productive
21:59:45 deejaytee is now known as Guest5510
21:59:45 × Guest5510 quits (~deejaytee@193.46-255-62.static.virginmediabusiness.co.uk) (Killed (sodium.libera.chat (Nickname regained by services)))
21:59:49 <dsal> The quickcheck thing I just mentioned is a counter argument to that.
21:59:50 <motle> google is a huge productivity inhibitor
21:59:50 deejaytee joins (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net)
21:59:55 <sm> go, rust etc. ship one blessed set of tools and everyone's on board with that (or so it appears from the outside). haskell isn't like that, in part because of less corporate support
22:00:01 <Drew[m]> As a language with a smaller user base one of the effects of that we have to live with is just generally less people around to make a library for every single concievable problem, and less businesses depending on code written in Haskell so less money sloshing about to pay for developer time.
22:00:03 <motle> its more of an experiment in futility
22:00:20 <motle> seriously, these code fragments...
22:00:26 × sheepduck quits (~sheepduck@user/sheepduck) (Remote host closed the connection)
22:00:29 <sm> dsal, quickcheck isn't a core tool
22:00:35 × fendor quits (~fendor@178.165.162.84.wireless.dyn.drei.com) (Read error: Connection reset by peer)
22:00:58 × Null_A quits (~null_a@2601:645:8700:2290:44f7:81a6:341:7abe) (Remote host closed the connection)
22:01:02 <motle> no ppls to make the libraries theory is lies
22:01:08 <motle> its because aliens i tels ya
22:01:16 <dsal> sm: it's a core test library that ships with base, but is bad and they will definitely never improve it
22:01:25 <motle> semi-literate aliens!!
22:02:01 Null_A joins (~null_a@2601:645:8700:2290:44f7:81a6:341:7abe)
22:02:03 <sm> dsal but you get my point I hope. install/build tools matter more. go/rust are more unified at this than haskell. Nothing controversial here
22:02:31 <motle> you have to reasemble the spacecraft with mechano - and anyone trying to subvert fissile materials will be hastily reoriented
22:02:56 <dsal> sm: Maybe? But `go build` isn't used inside of google, and the maybe that's not the right way to do stuff in general.
22:03:00 <dsal> I don't know rust, though.
22:03:00 <motle> talk about junk bonds, sheesh
22:03:04 <sm> arkanoid, it'll probably change eventually, since haskell is too good to die. But it might take another decade
22:03:49 <motle> you cant fly that its still linear!
22:03:58 <Drew[m]> We stubbornly avoiding success and failure
22:04:00 × charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (Read error: Connection reset by peer)
22:04:33 <motle> "your lucky its even linear yet mate"
22:05:06 <motle> whacky races!
22:05:53 <motle> drat!
22:06:07 <arkanoid> writing haskell feels great and refactoring feels like putting the last piece of a puzzle every time. Now all my OO code seems fragile and my procedural code really want pure functions and algebraic data types, but on the other end I don't feel that the plus are over the cons when I think about writing a real service. Maybe for doing science, but I've also tried that and while being very nicely
22:06:09 <arkanoid> expressed my "transpiled to C" code from other languages I like is much faster at runtime
22:06:19 <sm> arkanoid: but you totally can get real production work done in haskell, don't get me wrong. Many companies have been doing it for a while now. We just have two pretty good tools instead of one.
22:06:54 <sm> like everything, it's not perfect and there are tradeoffs.
22:07:01 <motle> putting the algebraic in the algebraic datatypes
22:07:31 <deejaytee> Every time I try to explain ADTs to people I come up against blub
22:07:43 <motle> sm: like vinyl!? in terms of tradeoffs...
22:08:00 <deejaytee> Absolutely infuriating
22:08:17 charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com)
22:08:27 <motle> yeah but prabablys your just using records
22:08:56 <justsomeguy> deejaytee: Lately I've been toying with the idea that explaining things, rather than first exposing them to a direct experience, is an inherently flawed approach. It can definitely be frustrating.
22:08:57 <arkanoid> now I can count how many unique input combinations my functions have! Never though about these topic while dealing whith other programming paradigms
22:09:51 <deejaytee> justsomeguy: I exaggerate a bit - I've had some success recently, esp. when explaining how ADTs are useful for modelling state machines & valid bits in Clash circuits
22:10:03 <motle> impure languages.....
22:10:24 <sm> arkanoid: also, the strengths of haskell are most apparent with larger and long-lived software
22:10:37 gehmehgeh joins (~user@user/gehmehgeh)
22:10:52 <arkanoid> also I've learn that haskell is not really pure and I can do pure stuff everywhere else too, it's just a matter if the compiler can do something for me in this direction
22:11:06 pesada joins (~agua@2804:14c:8793:8e2f:98cd:a6bd:9d36:17f2)
22:11:13 × fluffyballoon quits (~fluffybal@pat-verona-h.epic.com) (Ping timeout: 246 seconds)
22:11:14 <motle> IO we cant help you
22:11:55 <motle> anyone else get crank called by their fricking recruiter as they pushed the price?
22:12:11 <sm> arkanoid, well that compiler support is quite important. In practice if you can't enforce purity, you can't really achieve it
22:12:12 <motle> haha "job" ... "security" ... fun times!
22:12:17 <sm> enforce it and express it clearly
22:13:06 × agua quits (~agua@2804:18:4f:b157:1:0:6976:119) (Ping timeout: 240 seconds)
22:13:09 <deejaytee> justsomeguy: in a way, it reminds me of the "when will I ever use mathematics" question in high school - the artificial need for "concrete examples" forces me to try to make (often untrue) assumptions about how someone programs
22:13:17 <motle> i was like, yeah, im still the only person and its still the only language, and im guessing that means your still not going to pay me
22:13:33 <motle> and he was like saluting as he hung up
22:13:33 <arkanoid> I've just reimplemented kinda typeclasses and monads by metaprogramming in my favorite procedural language, that also supports enforcing no side effects and zero exceptions (and other custom effects)
22:14:17 <Drew[m]> arkanoid: Well it's at least pure in the sense that if you break referential transparency then the programs the compiler produces end up doing very strange things
22:14:23 <arkanoid> sure no math rooted concepts like in haskell, but yeah It resembles same pattern
22:14:45 agua joins (~agua@2804:18:4f:b157:1:0:6976:119)
22:15:35 <motle> and they were like, in some convoluted way shouting "but you can read this ones wallet code right?"
22:15:59 <arkanoid> Drew[m]: you can wrap an unsafe function into a pure one and referential transparency is gone, just like in any other programming language. It is rare I think
22:16:04 <motle> me complaining about its heavy use of lenses
22:16:31 <Drew[m]> Sure there are backdoors to purity but if you actually use them to break referential transparency rather than just things like breaking calls to pure C code out of IO then the chances are it just doesn't do what you wanted it to do
22:16:57 <motle> "i can bore all your staff into writing graphs until they do and then humnity will buy your fricking coins"
22:17:11 <Drew[m]> Which is why in practice there isn't a great rush to use the backdoors to violate RT even if it's technically possible, I think
22:17:12 <motle> he didnt get back to me
22:17:30 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 240 seconds)
22:17:38 <monochrom> https://www.rea-group.com/blog/the-abject-failure-of-weak-typing/ has a motivation for ADT. (The "Primitives" section.)
22:17:44 × pesada quits (~agua@2804:14c:8793:8e2f:98cd:a6bd:9d36:17f2) (Ping timeout: 250 seconds)
22:18:32 <motle> jokes on them though right if the values derived from, wait, what was it?
22:18:44 <motle> im sure theres some over here...
22:18:56 <monochrom> TLDR you want "compare :: X -> X -> Ordering" where "data Ordering = LT | EQ | GT". You don't want "compare :: X -> X -> Int".
22:19:32 <monochrom> The whole article is worth reading anyway.
22:19:50 <monochrom> Especially since this is a group of Scala people who are saying that Haskell does it right.
22:19:57 <motle> im sick of this "do your homework fully - conquer money" which is impossible, and the "lol, look he was actually trying"
22:20:16 <motle> like literally
22:20:34 × Vajb quits (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi) (Remote host closed the connection)
22:20:46 <motle> god job i trashed it i reckon
22:20:53 <monochrom> motle, are you done?
22:21:00 × zeenk quits (~zeenk@2a02:2f04:a008:d600:18f2:3421:bac6:8f38) (Quit: Konversation terminated!)
22:21:21 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
22:21:26 <motle> what can i say?
22:21:47 <monochrom> You can stop.
22:21:47 <arkanoid> btw if you want to try a procedural language that can enforce kinda purity (does effect tracking), has kinda sum types (object variants), give lots of power (ast based metaprogramming) and is very speed at runtime (compiles to C), I suggesto you to try nim. Warning, quite small community, but it's enjoyable
22:22:15 <motle> thats what i was trying to say i was trying to do... thanks
22:23:01 <motle> unsure...
22:23:57 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
22:23:58 <motle> depends if it was ever possible i guess
22:24:10 ChanServ sets mode +o monochrom
22:24:13 monochrom sets mode +b *!*@cpc103048-sgyl39-2-0-cust506.18-2.cable.virginm.net
22:24:13 motle is kicked by monochrom (motle)
22:24:18 monochrom sets mode -o monochrom
22:24:25 Vajb joins (~Vajb@hag-jnsbng11-58c3a1-224.dhcp.inet.fi)
22:24:34 × acidjnk_new quits (~acidjnk@p200300d0c72b9507354aa6404eb54f37.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
22:25:23 pesada joins (~agua@2804:14c:8793:8e2f:98cd:a6bd:9d36:17f2)
22:25:33 <justsomeguy> arkanoid: It's interesting that Ada, which influenced Nim, has seperate constructs for pure expressions and effectul things (like procedures vs functions).
22:25:34 × chomwitt quits (~chomwitt@ppp-94-67-203-142.home.otenet.gr) (Remote host closed the connection)
22:26:23 <arkanoid> justsomeguy: also nim have proc (that have side effect) and func (that has not, it's implicitly a proc with pragma {.noSideEffect.})
22:26:59 <Drew[m]> Alas, I set motle to ignore so I didn't see what finally got them the boot...
22:27:02 <arkanoid> also there's let for immutable data, and var for mutable
22:28:34 × agua quits (~agua@2804:18:4f:b157:1:0:6976:119) (Ping timeout: 250 seconds)
22:29:35 <arkanoid> I've a question for you experienced haskell programmers. When you write functions, you first write the body and then the declaration/signature, or the other way around?
22:30:05 <monochrom> I do both. And more.
22:30:21 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 276 seconds)
22:30:52 <sm> most often the name and type signature first for me, but it can be done either way
22:30:54 <arkanoid> I started writing the declaration first and body later, but then I realised that if I don't write the declaration vs code suggests me much more generic declaration that I didn't even realize it was possible
22:31:34 <sm> nailing down the types early clarifies your thinking cheaply and ensures the best error messages
22:31:55 <Drew[m]> You can always write the type annotation, write the code, then delete the type annotation and have the compiler hand you the most general one it can infer
22:31:55 <sm> but sometimes the types are too hard and it's easier to implement and then ask ghc what they are
22:32:12 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4) (Remote host closed the connection)
22:32:20 <monochrom> Let's reduce this to the general question of top-down-waterfall vs bottom-up-evolve.
22:32:35 dajoer joins (~david@user/gvx)
22:32:43 <monochrom> For which we know of a very clear answer.
22:32:49 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4)
22:33:12 <monochrom> If you're still exploring your options of course it's bottom-up-evolve don't-be-afraid-to-break-things-and-change-your-mind.
22:33:20 <sm> top down and bottom up are both perfectly valid tactics, i wouldn't tie them to waterfall or evolve
22:33:54 <monochrom> If you have already received a clear unchangable non-negotiatble specification, clearly it's top-down-waterfall.
22:34:11 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4) (Remote host closed the connection)
22:34:23 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4)
22:35:18 <arkanoid> sure but there's a big difference in thinking with types and thining with typeclasses. If I let ghc infer the types, I do realize more the properties required to the used types
22:35:26 <hpc> and if you have an unclear everchanging non-negotiable set of empty jira tickets, that's agile
22:35:38 <monochrom> :)
22:35:38 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 252 seconds)
22:36:19 <sm> arkanoid: it's a back and forth conversation with the compiler as your assistant, sometimes
22:36:38 paravida joins (~myChateau@user/paravida)
22:37:12 <bryan[m]> I also use both ways
22:38:02 <Drew[m]> arkanoid: That's why I'd say write the type annotations then delete and have the compiler generalize. If you know the shape of the function you are looking for then writing out the type allows the compiler to help you write it with typed holes. Once a function is written the compiler is probably the best thing for figuring out what the most general type the implementation can have is.
22:38:06 <bryan[m]> I tend to start with thinking about the types first, since they're also really good to look at first when working with existing code
22:38:22 <arkanoid> got it. Actually it's the first time I meet such a gentle, clear and intelligent compiler. It's always surprising to see how the typeclasses gets inferred. It's feels more like an old professor than a cold robot
22:39:09 <monochrom> But I aspire to be a cold old professor robot.
22:39:23 <justsomeguy> I get bitten by "cannot construct the infinite type ..." a lot, lately.
22:40:09 <Drew[m]> I always say, all those errors aren't you having a fight with the compiler, its having a gentle conversation with your friend the compiler who is asking you to clarify exactly what you meant
22:40:20 <monochrom> onoes ghcup new version
22:40:30 <Drew[m]> Ok sometimes it's a fight with the compiler
22:40:41 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
22:41:44 <monochrom> Haha new addition "ghcup nuke"
22:42:08 <arkanoid> thanks for the conversation, I need some sleep now. I hope to be able to pick up haskell again in the future to actually write something more than a week-long experiment
22:42:27 <monochrom> You know, "nuke" is the wrong metaphor because nuclear winter and fallouts and...
22:42:28 <davean> monochrom: That fuck with your drive's OPAL settings?
22:42:38 <monochrom> I don't know! I haven't tried.
22:42:46 <davean> Theres definately fallout if it does
22:43:29 <monochrom> But what are OPAL settings?
22:43:45 <sm> arkanoid: good luck. give it time, it takes more than other languages
22:44:09 <monochrom> https://gitlab.haskell.org/haskell/ghcup-hs/-/issues/135 may state the exact feature.
22:44:57 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4) (Remote host closed the connection)
22:45:19 <arkanoid> sm: I have strong feeling that I will search haskell features from now on with every other language
22:45:29 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4)
22:45:41 <sm> yup!
22:45:46 <Drew[m]> monochrom well global thermonuclear war is dirty in terms of radioactive fallout, but very cleansing in terms of life
22:45:54 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds)
22:46:10 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4) (Read error: Connection reset by peer)
22:46:13 agua joins (~agua@2804:18:4f:b157:1:0:6976:119)
22:46:23 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:1557:b33d:ca8c:dfa4)
22:46:25 <sm> Drew: lol way to see the silver lining
22:46:33 <monochrom> :)
22:46:41 <monochrom> Eveery silver lining has tarnish.
22:48:01 × dfg quits (dfg@user/dfg) (Quit: I hate quit messages.)
22:48:42 × pesada quits (~agua@2804:14c:8793:8e2f:98cd:a6bd:9d36:17f2) (Ping timeout: 240 seconds)
22:51:00 Guest5719 joins (~Guest57@125-63-24-117.ip4.superloop.com)
22:51:15 <Guest5719> @undo [ (x, ys) | x <- as, ys <- solutions (f (Con x))]
22:51:16 <lambdabot> concatMap (\ x -> concatMap (\ ys -> [(x, ys)]) (solutions (f (Con x)))) as
22:51:18 dfg joins (dfg@2600:3c00::f03c:92ff:feb4:be75)
22:51:18 × dfg quits (dfg@2600:3c00::f03c:92ff:feb4:be75) (Changing host)
22:51:18 dfg joins (dfg@user/dfg)
22:51:29 × bruceleewees quits (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl) (Ping timeout: 258 seconds)
22:51:29 stevenxl joins (uid133530@id-133530.highgate.irccloud.com)
22:51:41 stevenxl Does this function exist? (a -> c) -> Either a b -> (b -> c) -> c
22:52:11 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
22:52:16 <deejaytee> > :t either
22:52:18 <lambdabot> <hint>:1:1: error: parse error on input ‘:’
22:52:27 <geekosaur> :t either
22:52:29 <lambdabot> (a -> c) -> (b -> c) -> Either a b -> c
22:52:32 <deejaytee> I still don't know how to use lambdabot xD
22:52:59 <deejaytee> :t fmap flip either
22:53:00 <lambdabot> (a -> c) -> Either a b -> (b -> c) -> c
22:53:06 bruceleewees joins (~bruceleew@83.24.236.64.ipv4.supernova.orange.pl)
22:53:17 cjb joins (~cjb@user/cjb)
22:53:19 <Drew[m]> :t flip . either
22:53:21 <lambdabot> (a -> c) -> Either a b -> (b -> c) -> c
22:53:22 <fresheyeball> I want to briefly announce a new Haskell consultancy, my company https://platonic.systems/
22:53:30 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
22:53:38 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
22:53:42 × Guest5719 quits (~Guest57@125-63-24-117.ip4.superloop.com) (Client Quit)
22:53:45 <fresheyeball> If you ever need Haskell help, we are here for you
22:54:08 <stevenxl> :t fmap flip either
22:54:10 <lambdabot> (a -> c) -> Either a b -> (b -> c) -> c
22:55:01 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
22:55:24 Guest84 joins (~Guest84@125-63-24-117.ip4.superloop.com)
22:55:33 <Guest84> @undo [() | eval a]
22:55:33 <lambdabot> if eval a then [()] else []
22:55:38 Atum_ joins (~IRC@user/atum/x-2392232)
22:56:26 <deejaytee> fresheyeball: nice logo :)
22:58:26 <fresheyeball> deejaytee: thanks!
23:00:11 <monochrom> What motivated you to name it Platonic?
23:01:16 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 256 seconds)
23:01:56 <fresheyeball> monochrom: it sort of expresses what I am going for
23:02:12 <fresheyeball> I want to find a way to plug mathmatical objects into buisness
23:02:55 × Guest84 quits (~Guest84@125-63-24-117.ip4.superloop.com) (Quit: Client closed)
23:03:21 son0p joins (~ff@181.136.122.143)
23:04:30 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:04:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:15:45 euandreh joins (~euandreh@2804:14c:33:9fe5:9526:d20a:c7ef:dc9b)
23:18:27 delYsid parts (~user@84-115-55-45.cable.dynamic.surfer.at) (ERC (IRC client for Emacs 27.1.50))
23:20:26 <dsal> I missed some of arkanoid's conversation of lack of purity. Is it just because you can do `unsafePerformIO`?
23:21:26 <dsal> But obviously we only write type signatures now that we have https://haskellwingman.dev
23:24:31 lavaman joins (~lavaman@98.38.249.169)
23:24:33 <qrpnxz> xD
23:25:39 <qrpnxz> hm, found a typo on that page
23:25:45 <qrpnxz> anybody got a contact for em
23:25:59 × deejaytee quits (~deejaytee@cpc91196-cmbg18-2-0-cust215.5-4.cable.virginm.net) (Ping timeout: 258 seconds)
23:26:50 <sm> congrats fresheyeball
23:27:42 <sm> trivia: what did you use to build the site ?
23:28:06 <fresheyeball> sm: it's written in Nix
23:28:12 <qrpnxz> wot
23:28:25 <fresheyeball> the html and css are written in nix
23:28:27 <sm> did not expect that answer :)
23:28:44 <fresheyeball> https://github.com/ursi/nix-css
23:28:46 <qrpnxz> that's completely wack, why did you do that
23:28:46 <fresheyeball> here is a taste
23:29:05 <fresheyeball> because Nix is a great language for code generation, and that's what a static site is, generated code
23:29:30 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 276 seconds)
23:29:40 <qrpnxz> hm, fairenough
23:30:02 <qrpnxz> guess it's probably like an xml stylesheet
23:30:47 <qrpnxz> how many people you got in your company btw
23:31:32 <qrpnxz> 5-10 it looks like
23:32:04 <qrpnxz> colorado, interesting
23:32:15 <fresheyeball> according to gitlab it's 97% Nix, 1.5% TypeScript, and 1.5% CSS
23:32:33 <fresheyeball> qrpnxz: we are small, like 8 people
23:32:55 <qrpnxz> It looks interesting. Reminds me of Jane Street
23:34:43 <dsal> Hey, I know some of those languages you have listed.
23:34:55 <fresheyeball> lol
23:35:28 <qrpnxz> i hope you make money
23:35:30 <dsal> I'm so close to liking elm. It's missing some major features as a language, but it's so much better than javascript that I forgive it.
23:35:53 <fresheyeball> dsal: Elm is great for the use-cases where it's great
23:36:05 <dsal> Ha, yeah. I've used it for a couple of those.
23:36:10 <qrpnxz> >dyalog apl
23:36:13 <qrpnxz> so spicy
23:36:36 <dsal> I tried to use it to explain a concept to my interns that they're implementing in typescript. I think they got my concept, but then looked back at typescript and got lost.
23:37:38 <qrpnxz> rip
23:38:46 <qrpnxz> i'm hearing pythong finally got types
23:38:51 <qrpnxz> i bet it's still slow tho
23:39:15 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 276 seconds)
23:39:51 × vysn quits (~vysn@user/vysn) (Remote host closed the connection)
23:41:53 <dsal> adding types to python is like adding types to javascript. It seems to just make it generally worse.
23:50:11 vysn joins (~vysn@user/vysn)
23:53:45 × viluon quits (uid453725@id-453725.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
23:56:42 vicfred_ joins (~vicfred@user/vicfred)
23:59:08 × vicfred quits (~vicfred@user/vicfred) (Ping timeout: 250 seconds)

All times are in UTC on 2021-07-29.