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.