Logs on 2023-08-11 (liberachat/#haskell)
| 00:01:57 | <jackdk> | The `servant-*` family of libraries are excellent and stable, and especially good for APIs. I dunno how good they are if you're doing more traditional webapp stuff |
| 00:02:58 | <jackdk> | https://bradparker.com/posts/servant-types jobhdez I like this article which steps through all the typelevel stuff which makes it work |
| 00:03:37 | <hpc> | a webapp actually is just an api, nowadays |
| 00:03:44 | <mauke> | nothing restful about it, though |
| 00:03:52 | <hpc> | so basically just use servant and your backend is done, with some static-hosted thingy for the frontend |
| 00:03:56 | × | califax quits (~califax@user/califx) (Remote host closed the connection) |
| 00:05:28 | → | califax joins (~califax@user/califx) |
| 00:06:51 | <jobhdez> | oh ok, thanks. thanks for the article jackdk |
| 00:07:28 | <jobhdez> | hows the haskell job market for juniors in the US? I want to get haskell job |
| 00:23:54 | → | artem joins (~artem@38.42.227.237) |
| 00:23:54 | × | ulysses4ever quits (~artem@38.42.227.237) (Read error: Connection reset by peer) |
| 00:26:55 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 240 seconds) |
| 00:34:33 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 00:50:15 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 244 seconds) |
| 00:54:35 | × | phma quits (~phma@host-67-44-208-159.hnremote.net) (Read error: Connection reset by peer) |
| 00:55:00 | → | phma joins (~phma@host-67-44-208-159.hnremote.net) |
| 00:58:25 | × | [_________] quits (~oos95GWG@user/oos95GWG) (Ping timeout: 245 seconds) |
| 01:00:23 | → | [_________] joins (~oos95GWG@user/oos95GWG) |
| 01:01:14 | → | TheCatCollective joins (NyaaTheKit@user/calculuscat) |
| 01:10:04 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 01:10:04 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 01:10:04 | → | wroathe joins (~wroathe@user/wroathe) |
| 01:10:32 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:11:28 | → | razetime joins (~quassel@117.254.37.226) |
| 01:14:24 | × | phma quits (~phma@host-67-44-208-159.hnremote.net) (Read error: Connection reset by peer) |
| 01:14:49 | → | phma joins (phma@2001:5b0:210f:78:f62c:b1a1:2992:8d3d) |
| 01:16:39 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:35:47 | [_] | is now known as [itchyjunk] |
| 01:37:40 | × | phma quits (phma@2001:5b0:210f:78:f62c:b1a1:2992:8d3d) (Ping timeout: 256 seconds) |
| 01:38:04 | → | phma joins (~phma@host-67-44-208-159.hnremote.net) |
| 01:39:32 | <EvanR> | hpc, an API that calls out to ruby on rails? |
| 01:42:31 | × | phma quits (~phma@host-67-44-208-159.hnremote.net) (Ping timeout: 245 seconds) |
| 01:45:22 | → | phma joins (phma@2001:5b0:210f:78:f62c:b1a1:2992:8d3d) |
| 01:46:25 | × | codaraxis__ quits (~codaraxis@user/codaraxis) (Ping timeout: 240 seconds) |
| 01:51:11 | → | khumba joins (~khumba@user/khumba) |
| 01:51:58 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:aca6:66d7:5365:1cde) |
| 01:52:58 | × | bontaq quits (~user@ool-45779b84.dyn.optonline.net) (Ping timeout: 256 seconds) |
| 01:56:28 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:aca6:66d7:5365:1cde) (Ping timeout: 248 seconds) |
| 01:59:54 | → | hsw joins (~hsw@2001-b030-2303-0104-0172-0025-0012-0132.hinet-ip6.hinet.net) |
| 02:11:58 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 02:15:27 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 02:21:55 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 02:30:56 | × | td_ quits (~td@i5387092A.versanet.de) (Ping timeout: 256 seconds) |
| 02:31:01 | → | Square2 joins (~Square4@user/square) |
| 02:32:33 | × | Square quits (~Square@user/square) (Ping timeout: 246 seconds) |
| 02:32:34 | → | td_ joins (~td@i53870906.versanet.de) |
| 02:35:20 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 02:40:36 | × | ursa-major quits (~ursa-majo@static-198-44-128-152.cust.tzulo.com) (Ping timeout: 246 seconds) |
| 02:42:42 | → | ursa-major joins (~ursa-majo@37.19.210.24) |
| 02:45:09 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 02:45:09 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 02:45:09 | → | wroathe joins (~wroathe@user/wroathe) |
| 02:45:10 | → | jero98772 joins (~jero98772@2800:484:1d84:300::3) |
| 02:48:35 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 02:49:06 | → | grnman_ joins (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) |
| 02:50:17 | × | jero98772 quits (~jero98772@2800:484:1d84:300::3) (Ping timeout: 260 seconds) |
| 02:55:52 | × | ddellacosta quits (~ddellacos@143.244.47.100) (Ping timeout: 256 seconds) |
| 02:56:00 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds) |
| 02:56:18 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:56:18 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:56:18 | finn_elija | is now known as FinnElija |
| 02:57:34 | → | ddellacosta joins (~ddellacos@146.70.165.10) |
| 02:58:32 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection) |
| 02:58:55 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
| 03:00:40 | × | ursa-major quits (~ursa-majo@37.19.210.24) (Quit: WeeChat 4.0.2) |
| 03:05:47 | → | ursa-major joins (~ursa-majo@37.19.210.10) |
| 03:06:11 | × | phma quits (phma@2001:5b0:210f:78:f62c:b1a1:2992:8d3d) (Read error: Connection reset by peer) |
| 03:06:34 | → | phma joins (~phma@host-67-44-208-159.hnremote.net) |
| 03:06:55 | → | bob joins (~user@user/bob) |
| 03:11:55 | → | zer0bitz_ joins (~zer0bitz@user/zer0bitz) |
| 03:12:36 | → | barakk_ joins (~barakk@2a0d:6fc2:68c0:8e00:783:8518:13a4:582f) |
| 03:12:43 | → | billchenchina- joins (~billchenc@103.152.35.21) |
| 03:13:25 | × | billchenchina quits (~billchenc@2a0c:b641:7a2:320:ee3e:47ca:6070:d71a) (Remote host closed the connection) |
| 03:13:25 | × | barakk quits (~barakk@2a0d:6fc2:68c0:8e00:fbc6:1d6:b64a:3503) (Read error: Connection reset by peer) |
| 03:13:25 | × | Square2 quits (~Square4@user/square) (Remote host closed the connection) |
| 03:13:40 | × | khumba quits (~khumba@user/khumba) () |
| 03:14:00 | → | Square2 joins (~Square4@user/square) |
| 03:15:08 | × | zer0bitz quits (~zer0bitz@user/zer0bitz) (Ping timeout: 256 seconds) |
| 03:17:22 | → | aforemny joins (~aforemny@i59F516C7.versanet.de) |
| 03:18:17 | × | aforemny_ quits (~aforemny@2001:9e8:6cc8:8b00:76c5:2645:7442:f0e7) (Ping timeout: 260 seconds) |
| 03:18:37 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 03:26:18 | × | ursa-major quits (~ursa-majo@37.19.210.10) (Ping timeout: 248 seconds) |
| 03:26:23 | → | ursa-maj1 joins (~ursa-majo@37.19.210.24) |
| 03:28:29 | → | jero98772 joins (~jero98772@190.158.28.114) |
| 03:29:12 | × | thegeekinside quits (~thegeekin@189.180.79.225) (Ping timeout: 252 seconds) |
| 03:31:37 | × | ursa-maj1 quits (~ursa-majo@37.19.210.24) (Ping timeout: 245 seconds) |
| 03:33:44 | → | ursa-major joins (~ursa-majo@136.29.34.240) |
| 03:37:10 | → | merijn joins (~merijn@088-129-128-083.dynamic.caiway.nl) |
| 03:38:08 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 03:41:32 | × | merijn quits (~merijn@088-129-128-083.dynamic.caiway.nl) (Ping timeout: 248 seconds) |
| 03:43:45 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 03:43:45 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 03:43:45 | → | wroathe joins (~wroathe@user/wroathe) |
| 03:44:19 | → | danza_ joins (~francesco@151.44.134.29) |
| 03:59:13 | × | flounders quits (~flounders@24.246.133.1) (Ping timeout: 246 seconds) |
| 04:02:08 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 04:02:20 | × | danza_ quits (~francesco@151.44.134.29) (Ping timeout: 248 seconds) |
| 04:06:19 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 04:12:51 | × | wroathe quits (~wroathe@user/wroathe) (Quit: Reconnecting) |
| 04:13:04 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 04:13:04 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 04:13:04 | → | wroathe joins (~wroathe@user/wroathe) |
| 04:19:24 | × | razetime quits (~quassel@117.254.37.226) (Ping timeout: 248 seconds) |
| 04:22:04 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 248 seconds) |
| 04:22:40 | → | danza_ joins (~francesco@151.44.134.29) |
| 04:24:33 | × | jero98772 quits (~jero98772@190.158.28.114) (Ping timeout: 246 seconds) |
| 04:31:54 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds) |
| 04:32:29 | × | jobhdez quits (~jobhdez@2601:601:d00:f30::c0ac) (Quit: Client closed) |
| 04:36:28 | × | danza_ quits (~francesco@151.44.134.29) (Ping timeout: 248 seconds) |
| 04:40:08 | × | vglfr quits (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 256 seconds) |
| 04:40:57 | → | vglfr joins (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) |
| 04:43:16 | → | danse-nr3 joins (~francesco@151.44.134.29) |
| 04:43:45 | → | michalz joins (~michalz@185.246.207.221) |
| 04:48:55 | × | xff0x quits (~xff0x@2405:6580:b080:900:c1c2:633:c03:e500) (Ping timeout: 240 seconds) |
| 04:49:19 | → | xff0x joins (~xff0x@178.255.149.135) |
| 04:51:36 | × | grnman_ quits (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 260 seconds) |
| 04:54:12 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 04:57:37 | <danse-nr3> | good morning #haskell |
| 04:58:16 | <Lycurgus> | yello danse-nr3 |
| 04:59:28 | × | xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 250 seconds) |
| 05:01:12 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Tschüss) |
| 05:01:32 | → | xff0x joins (~xff0x@2405:6580:b080:900:c1c2:633:c03:e500) |
| 05:02:53 | → | idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 05:03:00 | → | razetime joins (~quassel@117.254.37.226) |
| 05:10:11 | × | danse-nr3 quits (~francesco@151.44.134.29) (Read error: Connection reset by peer) |
| 05:10:34 | → | danse-nr3 joins (~francesco@151.44.216.122) |
| 05:12:51 | → | thegeekinside joins (~thegeekin@189.180.79.225) |
| 05:13:35 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 05:13:36 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 05:13:36 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 05:19:27 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 05:27:56 | × | barakk_ quits (~barakk@2a0d:6fc2:68c0:8e00:783:8518:13a4:582f) (Quit: Leaving) |
| 05:28:51 | → | codaraxis__ joins (~codaraxis@user/codaraxis) |
| 05:29:52 | × | raym quits (~ray@user/raym) (Quit: leaving) |
| 05:30:20 | × | razetime quits (~quassel@117.254.37.226) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 05:30:42 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 246 seconds) |
| 05:31:44 | × | whatsupdoc quits (uid509081@id-509081.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 05:36:50 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 05:38:54 | → | raym joins (~ray@user/raym) |
| 05:49:00 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 05:50:49 | Square2 | is now known as Square |
| 05:51:06 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 05:59:52 | → | trev joins (~trev@user/trev) |
| 06:00:04 | → | titibandit joins (~titibandi@user/titibandit) |
| 06:02:15 | → | sm joins (~sm@plaintextaccounting/sm) |
| 06:04:09 | × | trev quits (~trev@user/trev) (Ping timeout: 246 seconds) |
| 06:09:34 | → | simikando joins (~simikando@adsl-dyn-104.95-102-88.t-com.sk) |
| 06:19:05 | → | dobblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 06:19:05 | × | dobblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 06:19:05 | → | dobblego joins (~dibblego@haskell/developer/dibblego) |
| 06:19:18 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds) |
| 06:19:34 | dobblego | is now known as dibblego |
| 06:28:58 | × | califax quits (~califax@user/califx) (Ping timeout: 240 seconds) |
| 06:29:50 | → | califax joins (~califax@user/califx) |
| 06:31:17 | × | simikando quits (~simikando@adsl-dyn-104.95-102-88.t-com.sk) (Remote host closed the connection) |
| 06:31:40 | → | simikando joins (~simikando@adsl-dyn-104.95-102-88.t-com.sk) |
| 06:32:20 | × | thegeekinside quits (~thegeekin@189.180.79.225) (Ping timeout: 256 seconds) |
| 06:36:21 | → | thegeekinside joins (~thegeekin@189.180.79.225) |
| 06:41:48 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:795b:2fff:e578:2af) |
| 06:43:56 | × | danse-nr3 quits (~francesco@151.44.216.122) (Ping timeout: 248 seconds) |
| 06:46:32 | → | oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) |
| 06:46:41 | → | fweht joins (uid404746@id-404746.lymington.irccloud.com) |
| 06:53:38 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds) |
| 06:54:00 | → | dobblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 06:54:00 | × | dobblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 06:54:00 | → | dobblego joins (~dibblego@haskell/developer/dibblego) |
| 06:54:05 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 248 seconds) |
| 06:54:41 | dobblego | is now known as dibblego |
| 06:58:11 | → | danse-nr3 joins (~francesco@151.44.216.122) |
| 07:01:00 | × | simikando quits (~simikando@adsl-dyn-104.95-102-88.t-com.sk) (Ping timeout: 246 seconds) |
| 07:01:12 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds) |
| 07:03:14 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 07:04:21 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 07:04:21 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 07:04:21 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 07:06:23 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 07:08:13 | → | simikando joins (~simikando@adsl-dyn-104.95-102-88.t-com.sk) |
| 07:09:55 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 240 seconds) |
| 07:12:24 | × | Wojciech_K quits (~Wojciech_@maluch.mikr.us) (Ping timeout: 246 seconds) |
| 07:12:57 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 07:12:57 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 07:12:57 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 07:15:59 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 07:16:36 | → | libertyprime joins (~libertypr@203.96.203.44) |
| 07:17:47 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Excess Flood) |
| 07:19:17 | × | simikando quits (~simikando@adsl-dyn-104.95-102-88.t-com.sk) (Remote host closed the connection) |
| 07:20:44 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds) |
| 07:23:06 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 07:23:06 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 07:23:06 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 07:25:00 | × | vglfr quits (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Ping timeout: 248 seconds) |
| 07:25:47 | → | vglfr joins (~vglfr@145.224.100.231) |
| 07:32:35 | → | mmhat joins (~mmh@p200300f1c73a3bafee086bfffe095315.dip0.t-ipconnect.de) |
| 07:32:35 | × | libertyprime quits (~libertypr@203.96.203.44) (Quit: leaving) |
| 07:38:37 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 07:39:38 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 07:40:12 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 260 seconds) |
| 07:41:32 | × | thegeekinside quits (~thegeekin@189.180.79.225) (Ping timeout: 250 seconds) |
| 07:43:17 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 07:43:18 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 07:43:18 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 07:43:20 | × | forell quits (~forell@user/forell) (Quit: ZNC - https://znc.in) |
| 07:44:13 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 07:44:37 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Remote host closed the connection) |
| 07:45:40 | → | forell joins (~forell@user/forell) |
| 07:45:47 | → | mima joins (~mmh@net-93-67-213-210.cust.vodafonedsl.it) |
| 07:46:36 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 07:49:31 | × | jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 246 seconds) |
| 07:50:32 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds) |
| 07:53:14 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 07:53:26 | → | jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 07:53:31 | → | libertyprime joins (~libertypr@203.96.203.44) |
| 07:55:10 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 07:56:04 | → | chele joins (~chele@user/chele) |
| 07:57:28 | → | CiaoSen joins (~Jura@2a05:5800:2d1:7200:664b:f0ff:fe37:9ef) |
| 07:57:49 | → | jtza8 joins (~user@165.255.137.178) |
| 08:00:42 | → | zeenk joins (~zeenk@2a02:2f04:a300:2a00::7fe) |
| 08:03:33 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 08:06:25 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: sm) |
| 08:07:44 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 08:07:44 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 08:07:44 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 08:10:32 | × | ft quits (~ft@p3e9bcd02.dip0.t-ipconnect.de) (Quit: leaving) |
| 08:10:57 | → | sm joins (~sm@plaintextaccounting/sm) |
| 08:11:13 | × | eggplantade quits (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 08:26:34 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:28:37 | × | vglfr quits (~vglfr@145.224.100.231) (Ping timeout: 260 seconds) |
| 08:30:04 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 250 seconds) |
| 08:30:32 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 08:30:33 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 08:30:33 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 08:31:08 | × | mima quits (~mmh@net-93-67-213-210.cust.vodafonedsl.it) (Ping timeout: 248 seconds) |
| 08:35:10 | → | vglfr joins (~vglfr@2a0d:3344:148d:7a00:ece5:978b:e3a7:acd2) |
| 08:38:57 | → | gehmehgeh joins (~user@user/gehmehgeh) |
| 08:39:47 | → | cfricke joins (~cfricke@user/cfricke) |
| 08:40:33 | × | phma quits (~phma@host-67-44-208-159.hnremote.net) (Read error: Connection reset by peer) |
| 08:40:57 | → | phma joins (phma@2001:5b0:210f:78:f62c:b1a1:2992:8d3d) |
| 08:46:50 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz) |
| 08:48:08 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Read error: Connection reset by peer) |
| 08:52:36 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 08:52:36 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 08:52:36 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 08:52:58 | → | mima joins (~mmh@net-93-67-196-104.cust.vodafonedsl.it) |
| 08:57:47 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 260 seconds) |
| 08:58:02 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 08:58:02 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 08:58:03 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 09:02:27 | × | codaraxis__ quits (~codaraxis@user/codaraxis) (Ping timeout: 260 seconds) |
| 09:05:21 | Pixi` | is now known as Pixi |
| 09:05:26 | → | gugu256 joins (~gugu256@131.87.95.79.rev.sfr.net) |
| 09:06:47 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 246 seconds) |
| 09:11:00 | → | danse-nr3_ joins (~francesco@151.44.221.10) |
| 09:11:01 | × | danse-nr3 quits (~francesco@151.44.216.122) (Read error: Connection reset by peer) |
| 09:11:43 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:aca6:66d7:5365:1cde) |
| 09:11:55 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 09:11:55 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 09:11:55 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 09:12:06 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 246 seconds) |
| 09:15:56 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:aca6:66d7:5365:1cde) (Ping timeout: 248 seconds) |
| 09:16:27 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 09:17:38 | × | mima quits (~mmh@net-93-67-196-104.cust.vodafonedsl.it) (Ping timeout: 246 seconds) |
| 09:19:48 | → | mima joins (~mmh@net-93-148-97-15.cust.dsl.teletu.it) |
| 09:24:01 | → | fendor joins (~fendor@2a02:8388:1640:be00:b586:6c06:a58:19a3) |
| 09:25:34 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:32:52 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 245 seconds) |
| 09:35:22 | × | nick4 quits (~nick@ip98-162-147-230.pn.at.cox.net) (Ping timeout: 256 seconds) |
| 09:35:58 | × | libertyprime quits (~libertypr@203.96.203.44) (Quit: leaving) |
| 09:37:17 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 09:38:51 | × | acidjnk quits (~acidjnk@p200300d6e7072f86688b70278123b2bd.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 09:43:14 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 09:46:17 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:51:13 | → | acidjnk joins (~acidjnk@p200300d6e7072f86cd9244dbe28c67d8.dip0.t-ipconnect.de) |
| 09:51:16 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 252 seconds) |
| 09:54:11 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 09:56:36 | → | Square2 joins (~Square@user/square) |
| 09:57:27 | × | Square quits (~Square4@user/square) (Ping timeout: 245 seconds) |
| 09:58:29 | Square2 | is now known as Square |
| 09:58:55 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 240 seconds) |
| 09:59:29 | × | driib quits (~driib@vmi931078.contaboserver.net) (Quit: The Lounge - https://thelounge.chat) |
| 09:59:41 | × | stef204 quits (~stef204@user/stef204) (Quit: WeeChat 4.0.2) |
| 10:00:15 | → | driib joins (~driib@vmi931078.contaboserver.net) |
| 10:05:23 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 10:05:24 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 10:05:24 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 10:05:58 | × | vglfr quits (~vglfr@2a0d:3344:148d:7a00:ece5:978b:e3a7:acd2) (Ping timeout: 256 seconds) |
| 10:06:17 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:07:07 | → | vglfr joins (~vglfr@145.224.100.231) |
| 10:10:43 | × | td_ quits (~td@i53870906.versanet.de) (Quit: waking up from the american dream ...) |
| 10:14:45 | → | NewtonTrendy joins (uid282092@user/bopqod) |
| 10:15:37 | → | td_ joins (~td@i53870906.versanet.de) |
| 10:16:00 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 10:16:52 | → | titibandit joins (~titibandi@user/titibandit) |
| 10:17:04 | × | danse-nr3_ quits (~francesco@151.44.221.10) (Read error: Connection reset by peer) |
| 10:22:52 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 10:23:08 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 248 seconds) |
| 10:23:10 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 10:28:08 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 10:28:09 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 10:28:09 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 10:29:01 | × | CiaoSen quits (~Jura@2a05:5800:2d1:7200:664b:f0ff:fe37:9ef) (Ping timeout: 248 seconds) |
| 10:29:51 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: sm) |
| 10:32:44 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 248 seconds) |
| 10:32:50 | × | gugu256 quits (~gugu256@131.87.95.79.rev.sfr.net) (Quit: Leaving) |
| 10:36:02 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 10:36:02 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 10:36:02 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 10:39:58 | × | mima quits (~mmh@net-93-148-97-15.cust.dsl.teletu.it) (Ping timeout: 256 seconds) |
| 10:48:19 | × | glguy quits (~glguy@libera/staff-emeritus/glguy) (Read error: Connection reset by peer) |
| 10:49:08 | → | glguy joins (~glguy@libera/staff-emeritus/glguy) |
| 10:52:55 | × | HerlockSholmes quits (~herlock@2001:19f0:5c00:27fc:5400:4ff:fe7a:1f8e) (Ping timeout: 240 seconds) |
| 10:59:15 | → | HerlockSholmes joins (~herlock@2001:19f0:5c00:27fc:5400:4ff:fe7a:1f8e) |
| 11:14:00 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:846:1fe1:eed8:5e0) |
| 11:17:39 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 11:18:36 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:846:1fe1:eed8:5e0) (Ping timeout: 248 seconds) |
| 11:22:21 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds) |
| 11:23:34 | → | MajorBiscuit joins (~MajorBisc@145.94.40.195) |
| 11:26:58 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 11:27:20 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 11:30:37 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 11:31:56 | → | flounders joins (~flounders@24.246.133.1) |
| 11:38:12 | × | Square quits (~Square@user/square) (Ping timeout: 246 seconds) |
| 11:39:42 | → | danse-nr3 joins (~francesco@151.37.245.142) |
| 12:02:30 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 12:04:43 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 12:08:16 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Tschüss) |
| 12:17:36 | → | mikoto-chan joins (~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be) |
| 12:23:17 | × | artem quits (~artem@38.42.227.237) (Ping timeout: 245 seconds) |
| 12:26:59 | → | nurupo joins (~nurupo.ga@user/nurupo) |
| 12:30:58 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 258 seconds) |
| 12:32:42 | → | Kuttenbrunzer joins (~Kuttenbru@2a02:8108:8b80:1d48::9d59) |
| 12:35:55 | × | ddellacosta quits (~ddellacos@146.70.165.10) (Ping timeout: 240 seconds) |
| 12:38:50 | → | gatekempt joins (~gatekempt@user/gatekempt) |
| 12:45:03 | × | mikoto-chan quits (~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be) (Quit: WeeChat 3.8) |
| 12:46:52 | <danse-nr3> | IsList is monomorphic, right? Wondering why ... makes me struggle to write a version of zipMatch that works for IsList instead of using Matchable |
| 12:50:05 | <int-e> | danse-nr3: it allows things like instance Unbox e => IsList (Vector e) |
| 12:51:24 | × | vglfr quits (~vglfr@145.224.100.231) (Ping timeout: 248 seconds) |
| 12:51:28 | → | Pickchea joins (~private@user/pickchea) |
| 12:51:56 | <danse-nr3> | does that mean "if `e` is Unbox, `Vector e` is IsList"? |
| 12:52:50 | <int-e> | yes |
| 12:55:04 | <int-e> | Oh here's a purely monomorphic instance: instance IsList IntSet |
| 12:55:58 | <danse-nr3> | yeah this makes more sense to me |
| 12:57:59 | <danse-nr3> | thanks int-e |
| 13:01:32 | × | Kuttenbrunzer quits (~Kuttenbru@2a02:8108:8b80:1d48::9d59) (Quit: Where is it) |
| 13:05:47 | → | ulysses4ever joins (~artem@50-245-50-3-static.hfc.comcastbusiness.net) |
| 13:10:17 | × | ulysses4ever quits (~artem@50-245-50-3-static.hfc.comcastbusiness.net) (Read error: Connection reset by peer) |
| 13:10:21 | × | mmhat quits (~mmh@p200300f1c73a3bafee086bfffe095315.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 13:10:27 | → | ulysses4ever joins (~artem@50-245-50-3-static.hfc.comcastbusiness.net) |
| 13:10:35 | × | gatekempt quits (~gatekempt@user/gatekempt) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 13:14:40 | × | ulysses4ever quits (~artem@50-245-50-3-static.hfc.comcastbusiness.net) (Ping timeout: 256 seconds) |
| 13:19:47 | → | sm joins (~sm@plaintextaccounting/sm) |
| 13:22:44 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 13:24:31 | <probie> | danse-nr3: Are you trying to write something like `zipMatch :: (IsList l, IsList r, IsList res, Item res ~ (Item l, Item r)) => l -> r -> Maybe res`? |
| 13:24:54 | → | ulysses4ever joins (~artem@38.42.227.237) |
| 13:27:45 | → | mmhat joins (~mmh@p200300f1c7042764ee086bfffe095315.dip0.t-ipconnect.de) |
| 13:31:16 | × | flounders quits (~flounders@24.246.133.1) (Quit: WeeChat 3.5) |
| 13:32:39 | <danse-nr3> | oooh |
| 13:33:00 | <danse-nr3> | great! Thanks probie! |
| 13:38:25 | → | flounders joins (~flounders@24.246.133.1) |
| 13:43:08 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 248 seconds) |
| 13:46:00 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 13:46:01 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 13:46:01 | → | wroathe joins (~wroathe@user/wroathe) |
| 13:47:40 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 13:48:23 | <danse-nr3> | ugh ... that is not type-safe because NonEmpty is an instance of IsList and when combined with a different instance could cause a compile time error |
| 13:48:40 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:795b:2fff:e578:2af) (Quit: WeeChat 2.8) |
| 13:49:57 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 13:50:03 | <danse-nr3> | i would be satisfied with having the same instance of IsList on both arguments, so that a NonEmpty can be used only with another NonEmpty, but again monomorphism does not make it clear how to do that. Maybe `IsList l ~ IsList r`? I doubt it |
| 13:50:15 | × | idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2) |
| 13:50:44 | <danse-nr3> | sorry, a runtime error that is |
| 13:50:55 | × | jtza8 quits (~user@165.255.137.178) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.2)) |
| 13:53:57 | → | kraftwerk28 joins (~kraftwerk@164.92.219.160) |
| 13:53:59 | <danse-nr3> | it cannot be `IsList l ~ IsList r`, i would need equality just about the higher order type |
| 13:54:27 | × | NewtonTrendy quits (uid282092@user/bopqod) (Quit: Connection closed for inactivity) |
| 13:55:44 | <probie> | danse-nr3: `zipMatch :: (IsList (t a), IsList (t b), IsList (t (a, b)), Item (t (a, b)) ~ (Item (t a), Item (t b))) => t a -> t b -> Maybe (t (a,b))` |
| 13:56:58 | <danse-nr3> | err ... amazing, thanks |
| 13:57:43 | <danse-nr3> | had not really seen that possibility ... not sure how to learn better about these kind of problems |
| 14:02:59 | → | ft joins (~ft@p3e9bcd02.dip0.t-ipconnect.de) |
| 14:03:19 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 246 seconds) |
| 14:05:00 | × | xff0x quits (~xff0x@2405:6580:b080:900:c1c2:633:c03:e500) (Ping timeout: 248 seconds) |
| 14:05:19 | <[Leary]> | % :t \xs ys -> fromList (zip (GHC.Exts.toList xs) (GHC.Exts.toList ys)) |
| 14:05:19 | <yahb2> | \xs ys -> fromList (zip (GHC.Exts.toList xs) (GHC.Exts.toList ys)) ; :: (Item l1 ~ (Item l2, Item l3), IsList l1, IsList l2, ; IsList l3) => ; l2 -> l3 -> l1 |
| 14:05:36 | <[Leary]> | danse-nr3: I don't know why you expect a runtime error. |
| 14:06:20 | <danse-nr3> | no, you are right actually. Since the lengths are checked, that should not happen |
| 14:06:53 | → | xff0x joins (~xff0x@ai086045.d.east.v6connect.net) |
| 14:07:38 | <probie> | [Leary]: Assuming I interpreted the question correctly, it needs to be a `Nothing` if the lists aren't the same length, so it's slightly more complicated |
| 14:08:14 | <danse-nr3> | yeah but still, if one of them is a NonEmpty, the other will not be zipped when null |
| 14:08:34 | <danse-nr3> | had not thought that through |
| 14:09:17 | <probie> | For the first type I gave, you could write something like `zipMatch ([] :: [Int]) ([] :: [Int]) :: Maybe (NonEmpty (Int, Int))` which would be equal to `Just (error ...)` |
| 14:09:19 | <[Leary]> | That's just a matter of switching out `zip` for the original `zipMatch` (or a self-rolled equivalent for []) and the outer application with an fmap. |
| 14:11:52 | <danse-nr3> | probie's solution is intriguing. I tried it with slightly different combinations and got a "could not deduce" error (i will write some instances afterwards). I found the phrasing a bit confusing, because i thought i was adding a constraint that did not need to be deduced |
| 14:12:33 | <danse-nr3> | examples: `(Item (t0 c) ~ Item (t0 (a, b)))` or `(Item (t0 c) ~ (Item (t0 a), Item (t0 b)))` could not be deduced |
| 14:15:10 | → | gatekempt joins (~gatekempt@user/gatekempt) |
| 14:16:40 | × | zeenk quits (~zeenk@2a02:2f04:a300:2a00::7fe) (Quit: Konversation terminated!) |
| 14:16:54 | <danse-nr3> | i guess that "could not deduce" means that those types do not make sense in combination with the others |
| 14:19:25 | <danse-nr3> | basically before you had `IsList c` but when wrapping with `t` it seems to also need the tuple to be explicit |
| 14:20:23 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 246 seconds) |
| 14:20:46 | → | thegeekinside joins (~thegeekin@189.180.79.225) |
| 14:20:55 | → | cfricke joins (~cfricke@user/cfricke) |
| 14:21:00 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 248 seconds) |
| 14:21:47 | × | hrberg quits (~quassel@171.79-160-161.customer.lyse.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 14:24:01 | <danse-nr3> | hum no i managed to get a "could not deduce" also with an explicit tuple ... i guess i should just practice more with these kind of constraints |
| 14:24:21 | → | hrberg joins (~quassel@171.79-160-161.customer.lyse.net) |
| 14:29:54 | <geekosaur> | those `t0`s make me think something is not unifying that you think should |
| 14:31:47 | → | shapr joins (~user@2600:1700:c640:3100:a70d:d5ca:f9aa:e130) |
| 14:32:00 | <danse-nr3> | good point |
| 14:32:55 | <danse-nr3> | i am always confused when that happens. If i write `t`, what is the point of interpreting it as anything different? |
| 14:33:04 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 14:33:29 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 14:33:58 | → | masterbuilder joins (~masterbui@user/masterbuilder) |
| 14:34:15 | <danse-nr3> | but ... mmm ... i guess i just need to understand better what is going on. Probably each `t` is a series of `t`s at some point, and then the compiler looks for unification |
| 14:34:17 | <probie> | If `OverloadedLists` is enabled and you write something like `zipMatch [1..5::Int] [6..10::Int]` you'll get a type error |
| 14:34:47 | <probie> | (unsure if that's your problem though) |
| 14:35:42 | <danse-nr3> | uh? With your constraints? My constraints just do not compile ^^: |
| 14:35:46 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 14:36:05 | <danse-nr3> | i do have OverloadedStrings on that file, if that matters |
| 14:36:40 | × | gatekempt quits (~gatekempt@user/gatekempt) (Ping timeout: 250 seconds) |
| 14:37:07 | <probie> | With my `(IsList (t a), IsList (t b), IsList (t (a, b)), Item (t (a, b)) ~ (Item (t a), Item (t b)))` constraint |
| 14:37:44 | → | ddellacosta joins (~ddellacos@143.244.47.84) |
| 14:38:39 | <probie> | OverloadedStrings is harmless here, but OverloadedLists will prevent a concrete type being picked for `t`, which prevents unfolding `Item` which will stop it from being able to satisfy `Item (t (a, b)) ~ (Item (t a), Item (t b))` |
| 14:39:37 | <probie> | if you want some help debugging the error your constraints give, feel free to throw a link to a pastebin |
| 14:41:07 | × | acidjnk quits (~acidjnk@p200300d6e7072f86cd9244dbe28c67d8.dip0.t-ipconnect.de) (Ping timeout: 246 seconds) |
| 14:43:27 | × | cfricke quits (~cfricke@user/cfricke) (Quit: WeeChat 4.0.1) |
| 14:50:22 | <danse-nr3> | yes, OverloadedLists, sorry. Turns out my errors were actually due to not having updated the type signature after the constraints, which makes a ton of sense. When reading "could not deduce <constraint> from the context: <constraints>" i thought that the problem was somehow within the constraints themselves and became blind to the actual types. Now i see it can mean also "deduce <constraint> that i found in your <constraints>" |
| 14:55:38 | × | titibandit quits (~titibandi@user/titibandit) (Quit: leaving) |
| 14:55:54 | → | titibandit joins (~titibandi@user/titibandit) |
| 14:56:50 | <danse-nr3> | in fact using an opaque `c` like in your first constraints works just fine. Great code, thanks again probie! |
| 14:57:08 | → | misterfish joins (~misterfis@87.215.131.102) |
| 15:00:27 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 15:16:02 | → | Midjak joins (~Midjak@82.66.147.146) |
| 15:16:53 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 15:17:18 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Ping timeout: 240 seconds) |
| 15:17:26 | × | Midjak quits (~Midjak@82.66.147.146) (Client Quit) |
| 15:18:04 | → | Midjak joins (~Midjak@82.66.147.146) |
| 15:19:07 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:19:12 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 15:20:10 | → | danse-nr3_ joins (~francesco@151.46.136.226) |
| 15:22:53 | × | danse-nr3 quits (~francesco@151.37.245.142) (Ping timeout: 248 seconds) |
| 15:23:35 | → | trev joins (~trev@user/trev) |
| 15:23:46 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 245 seconds) |
| 15:26:42 | × | thegeekinside quits (~thegeekin@189.180.79.225) (Ping timeout: 256 seconds) |
| 15:27:52 | → | artem joins (~artem@38.42.227.237) |
| 15:27:53 | × | ulysses4ever quits (~artem@38.42.227.237) (Read error: Connection reset by peer) |
| 15:27:56 | × | trev quits (~trev@user/trev) (Ping timeout: 245 seconds) |
| 15:29:56 | → | thegeekinside joins (~thegeekin@189.180.79.225) |
| 15:30:14 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 15:31:56 | × | artem quits (~artem@38.42.227.237) (Ping timeout: 248 seconds) |
| 15:33:31 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 15:37:07 | × | thegeekinside quits (~thegeekin@189.180.79.225) (Remote host closed the connection) |
| 15:40:19 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:846:1fe1:eed8:5e0) |
| 15:43:29 | gehmehgeh | is now known as gmg |
| 15:45:39 | → | ulysses4ever joins (~artem@172.56.193.75) |
| 15:51:56 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 15:52:27 | → | titibandit joins (~titibandi@user/titibandit) |
| 15:53:31 | × | MajorBiscuit quits (~MajorBisc@145.94.40.195) (Quit: WeeChat 3.6) |
| 15:55:35 | zer0bitz_ | is now known as zer0bitz |
| 15:59:12 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 16:00:22 | <yin> | why is this getting me a "conflicting definitions" error? https://paste.jrvieira.com/1691769597718 |
| 16:01:02 | <int-e> | you can't interleave function definitions |
| 16:01:32 | <yin> | TIL ty |
| 16:01:56 | <int-e> | (there's probably no *deep* reason for that) |
| 16:02:07 | <yin> | i can't think of any |
| 16:02:26 | <geekosaur> | afaik it just makes it harder for the simplifier to rewrite them into a single definition with a `case` |
| 16:02:58 | <geekosaur> | although it might be ghc can handle it, but since the Report says "don't do that" they don't bother |
| 16:03:13 | <int-e> | imagine you have a 100 line module, and you have one function called aux, but forgot about it, and now you add another... |
| 16:03:49 | <int-e> | and then I'm not sure which case is worse: their types being the same so you use the earlier definition, or their types being different and you getting a total mess of type errors |
| 16:04:06 | <int-e> | there's also TemplateHaskell to muddy the waters |
| 16:04:11 | × | danse-nr3_ quits (~francesco@151.46.136.226) (Ping timeout: 245 seconds) |
| 16:04:14 | <int-e> | so... there are definitely reasons. |
| 16:04:33 | <int-e> | but none of them is fundamental in any way |
| 16:08:53 | → | vglfr joins (~vglfr@188.239.201.89) |
| 16:29:24 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds) |
| 16:29:39 | → | pyooque joins (~puke@user/puke) |
| 16:29:40 | × | puke quits (~puke@user/puke) (Killed (silver.libera.chat (Nickname regained by services))) |
| 16:29:40 | pyooque | is now known as puke |
| 16:31:37 | × | titibandit quits (~titibandi@user/titibandit) (Ping timeout: 260 seconds) |
| 16:31:48 | × | puke quits (~puke@user/puke) (Read error: Connection reset by peer) |
| 16:32:08 | → | puke joins (~puke@user/puke) |
| 16:36:23 | → | ripspin joins (~chatzilla@1.145.221.89) |
| 16:40:14 | × | ulysses4ever quits (~artem@172.56.193.75) (Read error: Connection reset by peer) |
| 16:40:55 | → | ulysses4ever joins (~artem@38.42.227.237) |
| 16:47:27 | → | Inst joins (~Inst@2601:6c4:4081:2fc0:20bc:c565:40db:3ab2) |
| 16:47:32 | <Inst> | quick question, can cabal be configured |
| 16:47:42 | <sclv> | what do you mean |
| 16:47:44 | <Inst> | to attempt to install required dependencies? |
| 16:48:04 | <Inst> | like, say, i can get monomer working on windows relatively easily because i know how to screw around with msys |
| 16:48:39 | <Inst> | but if say, i wanted the cabal to do that for me, would there be options to do that? |
| 16:48:56 | <sclv> | doing that being "screwing around with msys"? |
| 16:49:33 | <sclv> | that's outside the scope for cabal. it can check for system dependencies (i.e. non haskell packages that haskell packages link against) but it has no mechanism to install them. |
| 16:49:42 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 16:51:21 | <Inst> | so, would that be stack then? |
| 16:51:56 | <[exa]> | if the "dependencies" are "operating system packages outside of *ackage", you probably want something more like docker |
| 16:52:33 | × | vglfr quits (~vglfr@188.239.201.89) (Remote host closed the connection) |
| 16:52:42 | <Inst> | i guess i'm not really going to commit to that for now; i'd like a Haskell stack where learners can just screw around with a GUI package |
| 16:53:06 | <Inst> | for windows users, 1-click/command gloss / gi-gtk / monomer is pretty important |
| 16:53:14 | <Inst> | same with 1-click hmatrix, etc |
| 16:53:52 | <[exa]> | somehow this is 1-click on most linux distros :D |
| 16:54:14 | <[exa]> | (anyway sorry this was not helpful :D ) |
| 16:55:03 | <[exa]> | there were some visualstudio packages that did something similar, was the thing called nuget? |
| 16:55:33 | <[exa]> | but I think that got carried by M$ folks all the way over to dotnet-only stuff |
| 16:58:02 | <geekosaur> | stack doesn't install OS deps either |
| 16:58:16 | <geekosaur> | there are too many ways to do it and too many different package names |
| 16:58:28 | <EvanR> | there's Setup.hs right |
| 16:58:32 | <geekosaur> | and it usually requires sudo access which you should not give to stack or cabal |
| 17:01:27 | → | robobub joins (uid248673@id-248673.uxbridge.irccloud.com) |
| 17:01:50 | × | swistak quits (~swistak@185.21.216.141) (Ping timeout: 250 seconds) |
| 17:07:25 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 17:08:18 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 17:08:22 | × | ddellacosta quits (~ddellacos@143.244.47.84) (Ping timeout: 260 seconds) |
| 17:09:49 | <Inst> | hmmm, maybe a better way would be for cabal packages to include a bash script that's user readable |
| 17:10:11 | → | ddellacosta joins (~ddellacos@146.70.171.233) |
| 17:13:04 | → | ec joins (~ec@gateway/tor-sasl/ec) |
| 17:15:16 | × | ripspin quits (~chatzilla@1.145.221.89) (Remote host closed the connection) |
| 17:17:40 | <yushyin> | and the bash script contains what exactly? |
| 17:17:56 | → | danza_ joins (~francesco@151.46.136.226) |
| 17:18:42 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:20:58 | <EvanR> | if cabal can negotiate the gtk-verse to build gtk bindings, it can do anything |
| 17:22:43 | → | vglfr joins (~vglfr@145.224.100.231) |
| 17:25:01 | × | vglfr quits (~vglfr@145.224.100.231) (Read error: Connection reset by peer) |
| 17:25:14 | → | vglfr joins (~vglfr@145.224.100.231) |
| 17:25:33 | <int-e> | EvanR: I don't know, it needs quite a bit of help: https://github.com/gtk2hs/gtk2hs/blob/master/tools/src/Gtk2HsSetup.hs |
| 17:26:51 | → | acidjnk joins (~acidjnk@p200300d6e7072f86347ae895ac9e3181.dip0.t-ipconnect.de) |
| 17:26:51 | × | vglfr quits (~vglfr@145.224.100.231) (Read error: Connection reset by peer) |
| 17:27:02 | → | vglfr joins (~vglfr@145.224.100.231) |
| 17:28:49 | × | vglfr quits (~vglfr@145.224.100.231) (Read error: Connection reset by peer) |
| 17:31:37 | → | vglfr joins (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) |
| 17:33:26 | <sclv> | Inst: my advice would be yeah, include bash/powershell/whatever scripts for platforms to install external deps |
| 17:33:47 | <Inst> | but cabal can potentially support it |
| 17:34:11 | <Inst> | i.e, provide a link to the powershell / bash etc script to do some minimum config work, don't make it plug and play for security purposes |
| 17:34:32 | <sclv> | gtk2hs and etc all still require the system libs be already installed, eg https://github.com/gtk2hs/gtk2hs/tree/master |
| 17:34:33 | <Inst> | wait, can cabal do this already? I.e, display messages on install attempts? |
| 17:35:20 | <sclv> | no cabal has no custom error msgs on failures |
| 17:35:37 | <sclv> | you just should put a link in the docs to a file with the commands the user needs to run |
| 17:38:15 | <geekosaur> | but even that's fraught as they will depend on platform/distro |
| 17:38:25 | <geekosaur> | and whether they use nix or not, etc. |
| 17:39:03 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: sm) |
| 17:39:10 | <int-e> | https://github.com/gtk2hs/gtk2hs/blob/master/tools/src/Gtk2HsSetup.hs#L547-L559 is funny... because while I'm sure that this was once part of every gtk2hs package, now it's part of gtk2hs-buildtools itself. |
| 17:39:38 | <int-e> | (well there's still the PATH aspect which remains relevant) |
| 17:40:18 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:42:09 | → | puke joins (~puke@user/puke) |
| 17:42:19 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 17:44:55 | × | ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer) |
| 17:45:17 | × | fendor quits (~fendor@2a02:8388:1640:be00:b586:6c06:a58:19a3) (Remote host closed the connection) |
| 17:48:27 | → | fendor joins (~fendor@2a02:8388:1640:be00:9072:560d:ff8a:aeec) |
| 17:54:56 | <EvanR> | gtk2hs-buildtools... groovy |
| 17:55:26 | <EvanR> | ok good, it doesn't depend on gtk2hs-buildtools-buildtools |
| 17:56:02 | → | fendor_ joins (~fendor@2a02:8388:1640:be00:c73f:4c9a:e162:7d18) |
| 17:59:33 | × | fendor quits (~fendor@2a02:8388:1640:be00:9072:560d:ff8a:aeec) (Ping timeout: 246 seconds) |
| 18:02:52 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:07:42 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 250 seconds) |
| 18:08:28 | → | idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 18:10:19 | → | pyooque joins (~puke@user/puke) |
| 18:10:20 | puke | is now known as Guest137 |
| 18:10:20 | × | Guest137 quits (~puke@user/puke) (Killed (silver.libera.chat (Nickname regained by services))) |
| 18:10:20 | pyooque | is now known as puke |
| 18:13:41 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 18:20:19 | × | connrs quits (~connrs@user/connrs) (Read error: Connection reset by peer) |
| 18:21:59 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:22:08 | → | connrs joins (~connrs@user/connrs) |
| 18:24:36 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 18:29:34 | → | titibandit joins (~titibandi@user/titibandit) |
| 18:29:35 | → | wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com) |
| 18:29:36 | × | wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host) |
| 18:29:36 | → | wroathe joins (~wroathe@user/wroathe) |
| 18:42:14 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 18:44:17 | <Inst> | cool, finally got gi-gtk to install |
| 18:48:43 | → | tremon joins (~tremon@83.80.159.219) |
| 18:53:28 | → | neuroevolutus joins (~neuroevol@2606:2e00:8007:1::a31e) |
| 18:54:04 | <EvanR> | Inst, are you doing something with GTK? |
| 18:55:07 | → | simikando joins (~simikando@adsl-dyn-104.95-102-88.t-com.sk) |
| 18:57:20 | × | puke quits (~puke@user/puke) (Quit: puke) |
| 19:01:03 | <Inst> | well, trying to build a conway's game of life there |
| 19:01:15 | <Inst> | and turn it into a haskell intro tutorial |
| 19:01:38 | <EvanR> | so you want to learn haskell, first install GTK bindings |
| 19:01:48 | <Inst> | i've had an obsession for the last 2 months for something like "Big Book of Small Python Projects", but for Haskell, and composed of tutorials teaching as much Haskell as needed per project |
| 19:02:02 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
| 19:02:11 | <EvanR> | you might do better using text mode graphics for that |
| 19:02:16 | <Inst> | Windows. |
| 19:02:17 | <EvanR> | or gloss |
| 19:02:18 | <Inst> | Uhhh |
| 19:02:20 | <Inst> | Gloss works |
| 19:02:55 | <EvanR> | so it's also a haskell-on-windows tutorial |
| 19:02:56 | <Inst> | gloss afaik, isn't gloss a toy, though? |
| 19:03:24 | <Inst> | i sort of gave up on monomer after the dev / maintainer didn't want to set up a team for it |
| 19:03:24 | <EvanR> | toy? game of life? |
| 19:03:45 | <Inst> | i mean, if you do conway in gi-gtk or monomer, shoudn't the skills be more portable? |
| 19:03:55 | <Inst> | I just haven't been arsed to set up a widget in monomer that can support console display |
| 19:04:50 | <EvanR> | I got another one, so you want to write game of life in haskell. First let me introduce you to some category theory: https://kukuruku.co/hub/haskell/cellular-automata-using-comonads |
| 19:05:02 | <Inst> | yeah i was thinking of that! |
| 19:05:09 | <Inst> | i don't get comonads yet |
| 19:05:39 | <Inst> | the basic concept is simple, monads with arrows reversed, i.e, duplicate instead of join, extract instead of pure, same requirement for Functor |
| 19:05:48 | <Inst> | there's lots of discussion of comonads for GUI but I haven't been able to grok it yet |
| 19:06:42 | <EvanR> | if you really want gratuitous theory for GUI you might want to look at profunctors |
| 19:06:56 | <probie> | I'm too lazy to follow the link. Is that one of the ones that's using zippers? |
| 19:06:59 | → | puke joins (~puke@user/puke) |
| 19:07:28 | <EvanR> | data Universe a = Universe [a] a [a] |
| 19:07:45 | <EvanR> | looks like it |
| 19:07:46 | <Inst> | profunctors, i.e, a datatype that incorporates a functor and a contravariant functor? |
| 19:08:10 | <Inst> | probably less level of comprehension than comonads with profunctors |
| 19:08:21 | <EvanR> | a datatype which is a functor in one argument and a contravariant functor in the other |
| 19:08:45 | <Inst> | also, trashy comonad tutorials are now a thing |
| 19:09:03 | <EvanR> | lol |
| 19:09:30 | <Inst> | https://dev.to/mikesol/frontend-comonad-backend-monad-1hfm |
| 19:09:46 | <ncf> | now that's a URL |
| 19:11:41 | <Inst> | tbh IO monad unironically is the best introductory to monads because the implementation isn't exposed and doesn't force you into "monads are burritos" idiocy (neither functors nor monads are containers; a monad is just a functor with join and pure operating together as a monoid, a functor, properly endofunctor, is a structure-preserving lifting of a type into the same category of types) |
| 19:12:10 | <ncf> | their duplicate doesn't typecheck... did GPT write this? |
| 19:12:16 | <Inst> | i still think starting with proxy is the best intro monad |
| 19:12:26 | <Inst> | ncf: have you seen eric normand's articles on Haskell? |
| 19:12:32 | <ncf> | who |
| 19:12:33 | <Inst> | he literally had foo? |
| 19:12:35 | <EvanR> | before you leave this cave and go reading monad tutorials, take this one-item checklist "does the post explain abstraction X by focusing on 1 particular example instance and leaving it at that" |
| 19:12:42 | <Inst> | Eric Normand is a Clojure bigwig |
| 19:13:07 | <Inst> | big popularizer, I think his formulation of FP (actions, computations, and values) is the most accessible one for mainstream developers |
| 19:13:15 | <Inst> | but his comments on Haskell are hilarious because they're so silly |
| 19:13:16 | → | Guest4879 joins (~finn@81-67-22-3.rev.numericable.fr) |
| 19:13:29 | <shapr> | I like this one https://www.jerf.org/iri/post/2958/ |
| 19:13:46 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 245 seconds) |
| 19:15:02 | <EvanR> | so clojure has bigwig's now |
| 19:15:15 | <Inst> | https://www.reddit.com/r/haskell/comments/j1nll2/the_user_wizard_scenario_we_start_with_a_haskell/ |
| 19:15:31 | <Inst> | ummm, it had a BDFL in Rich Hinley |
| 19:15:43 | <Inst> | I respect Clojure, I just think parens syntax sucks, and typed FP > untyped FP |
| 19:15:56 | <Inst> | both have their merits, but typed FP is just better for day to day use, and typed FP can simulate untyped FP |
| 19:16:18 | <Inst> | main drawback of typed FP is the conceptual complexity, which is a plus for the Haskell / Idris community |
| 19:16:25 | <probie> | I mean, Rich Hickey has some interesting ideas. I think he also mainstreamed Haskell-bashing in the Clojure community |
| 19:16:26 | <Inst> | or just the typed FP community |
| 19:16:49 | <Inst> | this is the real story of FP langs |
| 19:16:58 | <Inst> | there are 20 different FP langs that all bash each other / hate each other to some extent |
| 19:17:02 | <EvanR> | nobody can bash haskell better than haskell users though, no contest |
| 19:17:22 | <Inst> | because of the internecine conflict, no FP lang achieves critical mass, although F# is doing pretty well |
| 19:17:51 | <probie> | I hate Haskell with a passion |
| 19:18:01 | <probie> | it's just that I also hate everything else slightly more |
| 19:18:06 | <EvanR> | ^ |
| 19:19:15 | <Inst> | ^^ |
| 19:19:42 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:846:1fe1:eed8:5e0) (Remote host closed the connection) |
| 19:20:28 | → | danza__ joins (~francesco@151.44.191.133) |
| 19:20:44 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 19:21:04 | × | danza_ quits (~francesco@151.46.136.226) (Read error: Connection reset by peer) |
| 19:23:33 | <EvanR> | Inst, eric was a regular in programming meetups in new orleans before covid. I stood in the way of many attempts to bash haskell inappropriately. Much progress was made in appropriate haskell bashing |
| 19:23:52 | <EvanR> | important to get the bashing right |
| 19:23:56 | <Inst> | on Twitter: |
| 19:24:34 | <Inst> | what's the story behind this? |
| 19:24:34 | <Inst> | https://twitter.com/ericnormand/status/1402591912167628805 |
| 19:25:32 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds) |
| 19:25:46 | <Inst> | btw, the real project i'm focused on right now is building a webapp that can integrate with github |
| 19:25:56 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:26:12 | <Inst> | and allow Haskellers to post wishes and commitments for existing and potential libraries |
| 19:26:31 | <int-e> | Tristan: "I am still to find a beginner friendly way to get into the mystical world of Haskell." |
| 19:26:35 | <int-e> | hmmm |
| 19:26:44 | <Inst> | Haskell Phrasebook? |
| 19:26:45 | <EvanR> | does it translate the haskell code into whatever language that project is written in? |
| 19:26:45 | <int-e> | (ignore that nick) |
| 19:27:28 | <Inst> | ummm, thinking about learning persistent and esqueleto for it over servant |
| 19:27:33 | <Inst> | have some experience with postgre simple |
| 19:28:04 | <Inst> | int-e: I'm serious, the best way to get into the mystical world of Haskell is to have an equivalent to "Big Book of Small Python Projects" with full tutorials |
| 19:28:09 | <EvanR> | mapM_ learn allTheThings |
| 19:28:12 | <Inst> | it'll kill the mysticism quickly |
| 19:28:41 | <Inst> | i'm wondering if you can rewrite it with forever :: IO a -> IO a instead |
| 19:28:52 | <int-e> | Inst: There is no best way. |
| 19:29:14 | <Inst> | i mean, there's actually a lot of "Haskell in 15 minutes" tutorials out there |
| 19:29:24 | <Inst> | just need to collate them, and learning Haskell TBH is learning the library ecosystem |
| 19:29:31 | <Inst> | we've made so much improvement in every foible of Haskell |
| 19:29:51 | <Inst> | someone is working on parallelizing GHC to get 15-35% build time improvements (we already have features for that, but not ergonomic) |
| 19:29:53 | <int-e> | And I suspect that there's no quick way to learn to appreciate HM types. It /might/ be easier with SML. |
| 19:29:58 | <Inst> | the tooling is no longer trash |
| 19:30:15 | <Inst> | there are LOT of great Haskell books out there |
| 19:30:18 | <Inst> | only problem is ecosystem |
| 19:30:29 | <Inst> | progress is being made, but slow |
| 19:30:41 | <EvanR> | what's wrong with ecosystem specifically |
| 19:30:56 | <int-e> | Anyway, I don't know what to make of that little thread. |
| 19:31:07 | <Inst> | #1, lib doc sucks, every lib is equivalent to learning a language, #2, ecosystem is patchy in parts and tailored to the existing Haskell userbase, i.e, wizards |
| 19:31:21 | <probie> | Also, going back half a dozen steps, I haven't really heard much about profunctors for GUIs. Is that just all the old arrow stuff, but now profunctors, because strong profunctors? |
| 19:31:34 | <probie> | s/strong profunctors/strong profunctors are pretty much arrows/ |
| 19:31:49 | <Inst> | which is the problem for Haskell GUI, we don't have a standard solution for Haskell GUI |
| 19:32:03 | <Inst> | FRP GUIs, comonadic GUIs, now profunctor GUIs? |
| 19:32:06 | <EvanR> | I'm kidding mostly, based only on the applemus blog, reactive banana stuff |
| 19:32:36 | <Inst> | bleh, fuck this shit, i'm isntalling Nix, one day Haskell on Windows won't suck, but I assume we'll get dependent types before then |
| 19:32:44 | <int-e> | . o O ( and then there's gtk2hs ) |
| 19:33:28 | → | NewtonTrendy joins (uid282092@user/bopqod) |
| 19:33:32 | <Inst> | couldn't get it to build, or rather, couldn't get gi-gtk to build |
| 19:33:37 | <Inst> | i might end up nuking my cabal and GHCup again |
| 19:33:38 | <EvanR> | I kind of can't tell how important windows support is for the health of the haskell tutorial industry |
| 19:33:42 | <Inst> | just to nuke away the msys |
| 19:34:06 | <EvanR> | what percent of would be tutorial followers are on windows and not linux |
| 19:34:54 | <geekosaur> | probably large |
| 19:35:05 | <geekosaur> | I mean, de facto the world is Windows |
| 19:35:07 | <Inst> | US-wise, Windows is dying, like around 50-60% market share |
| 19:35:17 | <Inst> | but globally Windows is pretty entrenched, including Windows XP systems for god's sake |
| 19:35:22 | <EvanR> | yes human beings on windows greatly outnumbered |
| 19:35:35 | <EvanR> | outnumbering. But that want to follow haskell tutorials |
| 19:35:47 | <Inst> | EvanR: more like, trying to develop a new market? |
| 19:36:19 | <Inst> | point is, Rust keeps on murdering Haskell |
| 19:36:35 | <EvanR> | I don't see how those are in any sort of competition for anything |
| 19:36:42 | <geekosaur> | ^ |
| 19:36:55 | <Inst> | in wizard market, you know we lost Hasura, right? |
| 19:37:16 | <Inst> | important because Hasura is the first (and only, until Juspay or Mercury make it), Haskell unicorn |
| 19:37:28 | <EvanR> | what are all these names |
| 19:37:29 | <Inst> | they're rewriting their graphql engine in rust |
| 19:37:45 | <int-e> | must be startups |
| 19:37:55 | <int-e> | with "unicorn" being VC lingo |
| 19:37:56 | <Inst> | Juspay is a 100m+ Indian payments provider |
| 19:38:04 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:38:08 | <Inst> | Mercury employs Rebecca Skinner, author of Effective Haskell |
| 19:38:16 | <Inst> | unicorn means start-up that gets over 1 billion valuation |
| 19:38:22 | <geekosaur> | VC I would believe |
| 19:38:49 | <geekosaur> | they force network appliances developed in *BSD to switch to linux and thereby screw up their network stacks too |
| 19:39:06 | <geekosaur> | meaning VCs are idiots |
| 19:39:18 | <geekosaur> | who destroy products in the name of quick money |
| 19:39:31 | <Inst> | does that mean that everyone living in the capitalist world is an idiot? |
| 19:39:34 | <Inst> | that's basic capitalist logic |
| 19:39:40 | <Inst> | time discounting |
| 19:40:05 | <geekosaur> | there is going for the money and there is shooting yourself in the foot |
| 19:40:06 | <Inst> | it's supposed to be the job of governments and NGOs to have longer time horizons, but we all know how well that works |
| 19:40:08 | Inst | shrugs |
| 19:40:30 | <geekosaur> | we're talking products that could have been best-in-class rendered middle-of-the-pack by stupid decisions |
| 19:40:44 | <int-e> | The idiocy is to look at a startup, see that they're using Haskell or whatever, forget that it's mostly about a vision for a product, people, and luck, and decide that you have to use Haskell too in order to have success. |
| 19:41:18 | × | simikando quits (~simikando@adsl-dyn-104.95-102-88.t-com.sk) (Ping timeout: 250 seconds) |
| 19:41:32 | <Inst> | Haskell is just an enabler, and a problematic one insofar as the quantity of experience for Haskell in production seems relatively scarce |
| 19:41:34 | <int-e> | (Same for applying that kind of "logic" to *not* using Haskell.) |
| 19:41:35 | <EvanR> | promote haskell usage, hire the most brilliant functional programmers, then switch everything to java and win xD |
| 19:41:49 | <Inst> | EvanR: Tikhon Jelvis? :) |
| 19:42:46 | <[exa]> | I invested precious 5 minutes into skimming over the discourse thread on that topic, what's the problem there? |
| 19:42:52 | <Inst> | (He was working at Target, he seems to be in the same firm as Edward Kmett now, a start-up, but Target was actually using Haskell for many of their systems. Then they switched CTOs, the CTO wanted mainstream languages on everything.) |
| 19:43:06 | <Inst> | [exa]: which discourse thread? |
| 19:43:07 | <shapr> | sounds like my previous Haskell job |
| 19:43:34 | <juri_> | I'm pleading the 5th. |
| 19:43:35 | <geekosaur> | footguns for everyone! |
| 19:43:40 | <[exa]> | https://discourse.haskell.org/t/hasura-migrating-to-rust/6620/34 ... they found the niche, discarded half of their functionality (remember hasura with sparql?) and to squeeze more they just specialize to rust, which is good |
| 19:44:17 | <Inst> | i mean it's good for them, it's just, rust gives you more performance, more safety, has a larger ecosystem, more desperate rustacaeans than desperate Haskellers |
| 19:44:38 | <Inst> | erm, not more safety |
| 19:44:45 | <Inst> | comparable safety |
| 19:45:42 | <[exa]> | you can't measure safety without knowing the adversary |
| 19:46:04 | <[exa]> | rust certainly gives more safety against rust programmers' errors. :D |
| 19:46:13 | <EvanR> | safety = security vs yourself |
| 19:46:27 | <[exa]> | also good. |
| 19:46:36 | <[exa]> | anyway this is a happy story I'd say |
| 19:46:46 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 19:47:07 | <Inst> | the lesson i seem to be deriving is that Haskell is powerful and flexible enough for fast prototyping, and if the guys working on Rust FFI get their way, can eventually be used to wrap Rust |
| 19:47:14 | <Inst> | Haskell should be faster for iteration than Rust |
| 19:47:16 | <Inst> | which is why: |
| 19:47:27 | <[exa]> | IMO better than hasura trying to beat the shit out of haskell gc with 10 years of superspecialized hopefullyhelping ducttape patches to ghc |
| 19:48:01 | <[exa]> | (oh noes apologies for s-word, I thought we're in #offtopic) |
| 19:48:02 | <Inst> | https://mdwdotla.medium.com/using-rust-at-a-startup-a-cautionary-tale-42ab823d9454 |
| 19:48:16 | <Inst> | https://www.propelauth.com/post/i-love-building-a-startup-in-rust-i-wouldnt-pick-it-again |
| 19:52:49 | → | Natch joins (~natch@c-9e07225c.038-60-73746f7.bbcust.telenor.se) |
| 19:52:55 | <EvanR> | choosing the right language for your startup: an iterative process |
| 19:53:49 | <int-e> | but if your goal is to write software, it's imperative to choose a languag. |
| 19:54:01 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 246 seconds) |
| 19:55:09 | <probie> | I probably wouldn't pick Haskell as a language for a startup unless I already developers that I'm happy to write Haskell with |
| 19:55:13 | × | idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2) |
| 19:55:14 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 19:55:42 | × | fweht quits (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 19:56:22 | <probie> | This has been on my mind a lot recently, because there's a non-zero chance that in the next few months I'll actually have to make that decision |
| 19:56:59 | <Inst> | probie: is Haskell, the language and library ecosystem, suited to start-ups? |
| 19:57:08 | <probie> | s/I already developers/I already has developers/ |
| 19:57:11 | <Inst> | like, is the biggest problem the social factor wherein you can't train Haskellers fast enough? |
| 19:57:12 | → | eggplantade joins (~Eggplanta@104-55-37-220.lightspeed.sntcca.sbcglobal.net) |
| 19:57:18 | <EvanR> | Good luck. We're all counting on you. |
| 19:57:31 | <Inst> | probie: so, what languages are you shopping for then? |
| 19:57:55 | <Inst> | probie: if the start-up goes belly up (60-80% odds), please write a postmortem for us on a blog somewhere! |
| 19:58:11 | <Inst> | if you opt for Haskell |
| 19:58:21 | <monochrom> | I don't think any startup can afford to change language later. Therefore, it is not an iterative process, it is a "the other pasture is always greener" process. :) |
| 19:58:40 | <Inst> | they can after they've been bought out :) |
| 19:58:41 | → | codaraxis joins (~codaraxis@user/codaraxis) |
| 19:59:04 | <Inst> | eric Normand is also sort of weird, backtracking to that subject |
| 19:59:11 | <Inst> | because he was working on Haskell and JS on Scrive in 2012 |
| 19:59:24 | <juri_> | at the startup i'm working at, we've switched languages for the client teams at least three times. |
| 19:59:32 | <Rembane> | Inst: Is he going to Rust too? |
| 19:59:35 | <juri_> | the backend? haskell. |
| 19:59:36 | <Inst> | a major figure in Haskell community is now in Scrive |
| 19:59:41 | <Rembane> | juri_: Which languages did you try in the frontend? |
| 19:59:45 | <Inst> | Rembnae: unlikely, because Clojurians hate static typing |
| 20:00:03 | <juri_> | Rembane: the only one i know what we moved from is when we moved away from scala. |
| 20:00:03 | <edwardk> | FWIW- I don't work with Tikhon. He's a friend, I've known him a long time, but we're off doing our own respective things. |
| 20:00:48 | <edwardk> | Eric Normand dipped a toe in Haskell, but he was pretty much always a Clojure guy. |
| 20:00:56 | <Rembane> | juri_: Cool. |
| 20:01:30 | <Inst> | oh, I got confused |
| 20:01:34 | <Inst> | Positron, stealth start-up |
| 20:01:39 | <Inst> | he's doing CX Score |
| 20:01:42 | → | manmshuk joins (~manmshuk@2401:4900:803f:3acd:e89b:2576:7144:958f) |
| 20:02:01 | × | manmshuk quits (~manmshuk@2401:4900:803f:3acd:e89b:2576:7144:958f) (Remote host closed the connection) |
| 20:02:12 | → | manmshuk joins (~manmshuk@2401:4900:803f:3acd:e89b:2576:7144:958f) |
| 20:02:34 | <probie> | Inst: Haskell is a language you can iterate very quickly in, and that's of value to a start-up, but it's a lot more work to onboard people. You can't exactly restrict yourself to a simple subset, because the ecosystem doesn't restrict itself to a simple subset |
| 20:02:35 | × | manmshuk quits (~manmshuk@2401:4900:803f:3acd:e89b:2576:7144:958f) (Remote host closed the connection) |
| 20:02:38 | <Inst> | i'm just more confused that Normand worked at Scrive for like 2 years on JS and Haskell and could still get the namespacing wrong |
| 20:04:25 | <probie> | When a startup fails, I doubt the choice of language was a significant factor |
| 20:04:33 | <EvanR> | Inst is your startup using haskell? |
| 20:04:39 | <Inst> | no startup :( |
| 20:04:47 | <Inst> | i'm interested in the field |
| 20:05:33 | <EvanR> | do you have a blog where this tutorial series is going to be posted |
| 20:05:50 | <Inst> | nope, not yet, but tbh, we can just collate all the tutorials others are doing so far |
| 20:05:55 | <Inst> | was going to post that on discourse |
| 20:06:14 | <Inst> | my stuff is also going to suck :( |
| 20:07:16 | → | Pickchea joins (~private@user/pickchea) |
| 20:09:31 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:10:11 | <juri_> | Inst: I've been sucking at haskell for 8 years now. |
| 20:10:30 | <EvanR> | hear hear |
| 20:10:47 | <EvanR> | haskell suckers represent |
| 20:10:48 | <juri_> | chatgpt seems to think i'm some amazing haskeller, but i .. think i recognize edwardk, maybe? |
| 20:11:05 | <juri_> | tl;dr: i suck, in obscurity. |
| 20:13:51 | <Inst> | the great part of say, monomer, is that outside of enabling monad comprehensions (should we represent the tic tac toe board with nested lists or a bytestring?), you literally do not need monads for this |
| 20:14:53 | <Rembane> | What's monomer in this context? |
| 20:15:51 | <Inst> | some GUI lib, which incidentally works on Windows |
| 20:15:54 | <Inst> | Elm architecture based |
| 20:16:08 | <probie> | Rembane: https://github.com/fjvallarino/monomer#readme |
| 20:16:43 | <Rembane> | Inst, probie: Thank you. Looks fun! |
| 20:16:59 | <Inst> | does not work on 9.6.2 the last I checked |
| 20:18:10 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 20:19:24 | × | ulysses4ever quits (~artem@38.42.227.237) (Ping timeout: 248 seconds) |
| 20:19:25 | <Inst> | you almost certainly aren't on windows, Haskell on Windows is so bad I'm installing Nix |
| 20:19:33 | <Inst> | but: |
| 20:19:33 | <Inst> | https://github.com/fjvallarino/monomer/issues/258 |
| 20:21:24 | <Rembane> | Seems painful |
| 20:22:00 | <Inst> | i got used to it, unfortunately |
| 20:22:06 | <EvanR> | I installed haskell on windows, worked |
| 20:22:14 | <EvanR> | which part is so bad? |
| 20:22:27 | <Inst> | well, i have to use an older SDL if I want to get it to work with that library |
| 20:22:37 | <Inst> | and a lot of GHCI stuff, I think the C FFI is broken? |
| 20:22:47 | <Inst> | if I try to play around with HMatrix, segfault |
| 20:22:53 | <EvanR> | SDL is a rapidly moving target right now |
| 20:23:07 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 20:23:51 | <EvanR> | it's major version number is a superposition of 2 and 3, reminiscent of the update from 1.3 to 2 |
| 20:24:19 | <EvanR> | does C FFI normally work from ghci? |
| 20:24:37 | <Inst> | https://gitlab.haskell.org/ghc/ghc/-/issues/22999 |
| 20:24:40 | <Inst> | older C FFI works |
| 20:24:58 | <probie> | I would like to be able to write a boring desktop application in Haskell, compile with some magical incantation and get a Windows exe I can send to the end user out the other end. I did that once in Golang and was amazed that it "just worked" |
| 20:25:57 | <Inst> | i hear that there are GHC developers working on multi-backend stuff for Haskell, including cross-platform development |
| 20:27:33 | <Inst> | https://media.discordapp.net/attachments/968989726633779215/1139656320618864720/image.png?width=2878&height=1090 |
| 20:27:41 | <Inst> | https://hackage.haskell.org/package/tinyfiledialogs-0.2.1.0/docs/Graphics-UI-TinyFileDialogs.html |
| 20:27:58 | <Inst> | here, the C FFI is painfree |
| 20:31:18 | <EvanR> | VisualHaskell Studio |
| 20:33:39 | <Inst> | whoa |
| 20:34:11 | <Inst> | i think this is 9.4.6 talking? |
| 20:34:40 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection) |
| 20:36:47 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Quit: oo_miguel) |
| 20:37:15 | × | dsrt^ quits (~cd@c-66-56-7-24.hsd1.ga.comcast.net) (Remote host closed the connection) |
| 20:37:34 | → | captnemo joins (~captnemo@193.32.127.239) |
| 20:37:35 | → | dsrt^ joins (~cd@c-66-56-7-24.hsd1.ga.comcast.net) |
| 20:38:43 | × | fendor_ quits (~fendor@2a02:8388:1640:be00:c73f:4c9a:e162:7d18) (Read error: Connection reset by peer) |
| 20:39:32 | <Inst> | hmmm, hmatrix seems to be working on 9.4.6 |
| 20:40:24 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 20:42:02 | × | dmj` quits (sid72307@id-72307.hampstead.irccloud.com) (Ping timeout: 245 seconds) |
| 20:42:14 | × | aspen quits (sid449115@id-449115.helmsley.irccloud.com) (Ping timeout: 246 seconds) |
| 20:42:24 | → | aspen joins (sid449115@id-449115.helmsley.irccloud.com) |
| 20:42:35 | × | cbarrett quits (sid192934@id-192934.helmsley.irccloud.com) (Ping timeout: 246 seconds) |
| 20:43:17 | × | rubin55 quits (sid175221@id-175221.hampstead.irccloud.com) (Ping timeout: 245 seconds) |
| 20:43:17 | × | Guest3051 quits (sid1055@id-1055.tinside.irccloud.com) (Ping timeout: 246 seconds) |
| 20:43:47 | → | dmj` joins (sid72307@id-72307.hampstead.irccloud.com) |
| 20:44:40 | × | titibandit quits (~titibandi@user/titibandit) (Remote host closed the connection) |
| 20:46:02 | <Inst> | also, if you guys are interested in mercury: |
| 20:46:03 | <Inst> | https://growjo.com/company/Mercury_-_Banking_for_Startups |
| 20:46:19 | <Inst> | 1/10th the revenue of Stripe, which is pretty awesome |
| 20:46:35 | → | cbarrett joins (sid192934@id-192934.helmsley.irccloud.com) |
| 20:46:47 | → | Guest3051 joins (sid1055@id-1055.tinside.irccloud.com) |
| 20:47:07 | → | rubin55 joins (sid175221@id-175221.hampstead.irccloud.com) |
| 20:47:16 | <[exa]> | Inst: that's very offtopic |
| 20:48:42 | <Inst> | i mean Mercury is a Haskell shop |
| 20:48:57 | <Inst> | https://serokell.io/blog/haskell-in-production-mercury |
| 20:49:31 | <Inst> | oh, and more importantly, Matt Parsons is at Mercury |
| 20:53:29 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 20:54:38 | → | stef204 joins (~stef204@user/stef204) |
| 20:55:25 | <Inst> | hmatrix still crashes on 9.4.6 |
| 20:55:49 | <Inst> | https://media.discordapp.net/attachments/968989726633779215/1139663457923371038/image.png?width=2210&height=976 |
| 20:57:04 | × | Guest4879 quits (~finn@81-67-22-3.rev.numericable.fr) (Ping timeout: 256 seconds) |
| 20:58:27 | → | oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) |
| 20:58:43 | → | LispTyro joins (~pepsi@iron.vengarl.com) |
| 21:00:42 | <EvanR> | the functional-logic language Mercury looks pretty cool, also off topic |
| 21:03:01 | <Inst> | hey Mercury is a Haskell banner carrier |
| 21:03:22 | <Inst> | and an applicative-tier donor to Haskell Foundation |
| 21:03:36 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Quit: oo_miguel) |
| 21:03:55 | × | kimiamania60 quits (~65804703@user/kimiamania) (Quit: PegeLinux) |
| 21:04:24 | → | kimiamania60 joins (~65804703@user/kimiamania) |
| 21:05:54 | <Inst> | okay, but HMatrix works on WSL2 Debian (Win10), thank god |
| 21:07:46 | × | neuroevolutus quits (~neuroevol@2606:2e00:8007:1::a31e) (Quit: Client closed) |
| 21:08:15 | → | mango joins (~finn@81-67-22-3.rev.numericable.fr) |
| 21:15:25 | <EvanR> | what are you using hmatrix for |
| 21:15:26 | → | anselmschueler joins (~anselmsch@user/schuelermine) |
| 21:15:44 | <anselmschueler> | Are there some tools that allow me to generate a man page with my Cabal build? Can cabal install a man page? |
| 21:16:07 | <Inst> | nothing, it's just a key library and i'm just griping about crappy windows support |
| 21:17:48 | <EvanR> | ah, in the sense that python is really a conduit for people to use numpy xD |
| 21:19:03 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 21:20:41 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Read error: Connection reset by peer) |
| 21:20:44 | × | mango quits (~finn@81-67-22-3.rev.numericable.fr) (Ping timeout: 246 seconds) |
| 21:20:53 | × | michalz quits (~michalz@185.246.207.221) (Remote host closed the connection) |
| 21:22:09 | × | anselmschueler quits (~anselmsch@user/schuelermine) (Quit: WeeChat 4.0.2) |
| 21:22:42 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 260 seconds) |
| 21:24:16 | × | hugo quits (znc@verdigris.lysator.liu.se) (Ping timeout: 256 seconds) |
| 21:29:30 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 21:29:30 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 21:29:30 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 21:30:18 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Read error: Connection reset by peer) |
| 21:30:51 | × | EvanR quits (~EvanR@user/evanr) (Remote host closed the connection) |
| 21:31:49 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 21:31:51 | → | Inst_ joins (~Inst@2601:6c4:4081:2fc0:3c6d:b6bf:29e1:9f21) |
| 21:31:59 | → | EvanR joins (~EvanR@user/evanr) |
| 21:34:18 | × | chexum quits (~quassel@gateway/tor-sasl/chexum) (Ping timeout: 240 seconds) |
| 21:35:01 | → | chexum joins (~quassel@gateway/tor-sasl/chexum) |
| 21:35:08 | × | Inst quits (~Inst@2601:6c4:4081:2fc0:20bc:c565:40db:3ab2) (Ping timeout: 248 seconds) |
| 21:36:43 | → | sm joins (~sm@plaintextaccounting/sm) |
| 21:37:10 | → | hugo joins (znc@verdigris.lysator.liu.se) |
| 21:38:18 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 246 seconds) |
| 21:38:28 | × | sm quits (~sm@plaintextaccounting/sm) (Client Quit) |
| 21:40:05 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 21:40:20 | × | puke quits (~puke@user/puke) (Remote host closed the connection) |
| 21:41:15 | → | puke joins (~puke@user/puke) |
| 21:43:22 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 21:43:22 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 21:43:22 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 21:43:33 | × | tv quits (~tv@user/tv) (Ping timeout: 246 seconds) |
| 21:45:05 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 21:45:44 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 21:46:24 | <justsomeguy> | I'm writing out the reduction steps for foldr/scanr and foldl/scanl for practice. What's a good definition of scanl? I don't see one that's written in terms of foldl. |
| 21:47:35 | <int-e> | > scanl (+) 0 [1..] -- this is lazy, so it can't be a foldl. you /can/ write it with foldr |
| 21:47:37 | <lambdabot> | [0,1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,2... |
| 21:49:08 | <justsomeguy> | I found this definition of scanl, but it seems really weird: https://hackage.haskell.org/package/base-4.18.0.0/docs/src/GHC.List.html#scanl |
| 21:49:38 | <justsomeguy> | I guess I just expected scanl to be implemented in terms of foldl. |
| 21:49:38 | <int-e> | > foldr (\x xs a -> a : xs (x + a)) (:[]) [1..] 0 |
| 21:49:40 | <lambdabot> | [0,1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,2... |
| 21:51:55 | <monochrom> | scanl is not in terms of foldl |
| 21:52:14 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 246 seconds) |
| 21:53:02 | <int-e> | > let scanl f a0 xs = foldr (\x xs a -> a : xs (f a x)) (:[]) xs a0 in scanl (+) 0 [1..] |
| 21:53:04 | <lambdabot> | [0,1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,2... |
| 21:53:11 | <int-e> | (always a fun exercise) |
| 21:53:18 | × | img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in) |
| 21:53:40 | → | codaraxis__ joins (~codaraxis@user/codaraxis) |
| 21:53:51 | <int-e> | justsomeguy: you could just pretend that `scanlGo` is the actual definition of `scanl`. |
| 21:54:18 | → | img joins (~img@user/img) |
| 21:54:38 | <int-e> | The indirection is for internal GHC reasons, having to do with how list fusion works. |
| 21:54:41 | <int-e> | @src scanl |
| 21:54:41 | <lambdabot> | scanl f q ls = q : case ls of |
| 21:54:42 | <lambdabot> | [] -> [] |
| 21:54:42 | <lambdabot> | x:xs -> scanl f (f q x) xs |
| 21:55:39 | → | sm joins (~sm@plaintextaccounting/sm) |
| 21:55:57 | × | codaraxis quits (~codaraxis@user/codaraxis) (Ping timeout: 246 seconds) |
| 21:56:16 | <justsomeguy> | That does look easier to write on paper :D |
| 21:56:27 | <EvanR> | justsomeguy, your thing about scanl being implemented with foldl is a great excuse to do an investigation into what foldl and foldr "really do" |
| 21:57:23 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 21:57:24 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 21:57:24 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 21:57:28 | <EvanR> | with the intended goal to see why that can't be done and makes no sense |
| 21:58:03 | <justsomeguy> | That's a good point, EvanR. Thank you for bringing that up. |
| 21:58:07 | <EvanR> | bonus points for figuring out a plausible story for why they're named the way they are |
| 21:58:29 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 21:58:47 | <monochrom> | That one would be historical reasons and back when people had only thought of lists. |
| 21:59:40 | <EvanR> | @src scanr |
| 21:59:40 | <lambdabot> | scanr _ q0 [] = [q0] |
| 21:59:40 | <lambdabot> | scanr f q0 (x:xs) = f x q : qs |
| 21:59:40 | <lambdabot> | where qs@(q:_) = scanr f q0 xs |
| 21:59:54 | <int-e> | monochrom: it still makes sense for foldables |
| 22:00:30 | <monochrom> | The same way, for example, in lattice theory, things are called "join" and "meet" because they were inspired by "union" and "intersection" as concrete examples. And then now we know that the intuition doesn't actually generalize. |
| 22:00:43 | <int-e> | it's about "things in a sequential order", not necessarily organized as a list |
| 22:00:58 | <monochrom> | And even why "rings" are called "rings". (They were only thinking of Z-mod-n rings.) |
| 22:01:05 | <int-e> | :t fold |
| 22:01:06 | <lambdabot> | (Foldable t, Monoid m) => t m -> m |
| 22:01:48 | <EvanR> | so fold is assuming some serialization of the structure |
| 22:01:48 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 248 seconds) |
| 22:02:18 | <probie> | I think for lists, foldr/foldl were a poor choice of names because it makes them look equal |
| 22:02:21 | <int-e> | monochrom: and non-integers aren't numbers (Z = Zahlen = numbers) |
| 22:03:06 | <monochrom> | In fact, all the way back to Ancient Greeks, 1 was not a number either. |
| 22:03:15 | <justsomeguy> | Just thinking out loud here: I guess the reason I assumed that scanl must be implemented in terms of foldl is because I saw a definition of scanr implemented in terms of foldr. |
| 22:03:22 | <EvanR> | for finite lists, they are ~~equal~~ symmetric. If you ignore the haskell implementation of list |
| 22:03:45 | <monochrom> | Its relic is still in English (and I suspect almost all European languages.) "I have a number of wives" you immediately assume it is not 0 and it is not 1. |
| 22:03:51 | <EvanR> | and performance concerns |
| 22:05:24 | <EvanR> | when you get into the details foldl and foldr look unrelated and apply to wildly different tasks |
| 22:05:29 | <probie> | EvanR: That's a rather weak equality. `foldr` is a natural way to collapse a cons list, `foldl` is an artificial abomination :p |
| 22:05:52 | <EvanR> | I tried to strikeout equal and call it symmetric |
| 22:05:54 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 22:06:14 | <monochrom> | This is why I said it's historical reason way back then when people didn't know what we know today. |
| 22:06:17 | <EvanR> | i.e. foldr f z = foldl f z . reverse |
| 22:06:45 | <monochrom> | Not to diminish them. It takes time to discover what's going on deeper. |
| 22:07:22 | <EvanR> | er, and swap f |
| 22:07:31 | <EvanR> | flip f |
| 22:07:48 | → | jero98772 joins (~jero98772@2800:484:1d84:300::3) |
| 22:07:55 | <probie> | > let myFoldl' f z xs = foldr (\x k y -> k $! f y x) id xs z in myFoldl' (+) 0 [1..1000] |
| 22:07:56 | <lambdabot> | 500500 |
| 22:08:31 | × | johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in) |
| 22:08:42 | <monochrom> | Today there are two famous directions of generalization. One is foldr -> catamorphism, which foldl doesn't enjoy, so yeah foldl is inferior in this direction. |
| 22:09:37 | <monochrom> | But the Foldable direction puts them on equal footing again. Assume finite data structures. Then foldl, foldr, foldMap are expressible in each other. |
| 22:10:15 | <EvanR> | justsomeguy, you'll probably find a lot of things definable using foldr. Because it is the universal function definer i.e. induction principle for lists. While foldl is this other thing with limited uses |
| 22:10:40 | <monochrom> | However, it is important to note that no one was thinking Foldable back in the 1960s in Lisp days. |
| 22:10:58 | <Rembane> | Were they thinking foldl and foldr in the 60s? |
| 22:11:02 | <probie> | Also, 99/100 you don't want `foldl`, you'll want `foldl'` instead |
| 22:14:17 | <monochrom> | "Foldable makes foldl great again" >:) |
| 22:14:38 | <EvanR> | you're thinking Foldable comes with a finiteness implication? |
| 22:14:49 | <monochrom> | Sometimes. |
| 22:14:49 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 22:14:50 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 22:14:50 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 22:15:10 | <probie> | The only function you need is `hylo f g = go where go = f . fmap go . g` |
| 22:15:28 | <monochrom> | Foldable includes the length method. So maybe actually yes. |
| 22:15:34 | × | stiell_ quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
| 22:16:05 | → | stiell_ joins (~stiell@gateway/tor-sasl/stiell) |
| 22:16:19 | <EvanR> | the virtues of Int |
| 22:16:29 | <EvanR> | generalizations be damned |
| 22:17:18 | <monochrom> | Heh ultrafiniteness "because it needs to fit into 2^64 bytes memory" |
| 22:17:56 | <monochrom> | (I don't mind either way in practice.) |
| 22:17:56 | <geekosaur> | haskell only promises 2^30 iirc? |
| 22:17:58 | <EvanR> | 2^64 should be enough for anyone |
| 22:18:02 | <int-e> | We can always reinvent EMS |
| 22:18:10 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: sm) |
| 22:19:00 | <int-e> | geekosaur: -2^29...2^29 - 1 for Int, IIRC. Not that it matters in practice. |
| 22:19:24 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 248 seconds) |
| 22:19:33 | <probie> | A 30 bit signed int so you've got two bits left over for GC or other tagging |
| 22:19:50 | <EvanR> | haskell should have doubled down on that and allowed the number of unused bits in Int to be configurable |
| 22:20:21 | <EvanR> | I'll have 8 unused bits please, for shenanigans |
| 22:20:41 | <hpc> | in practice you only need 2^24 because of IEEE floating point :D |
| 22:20:49 | <monochrom> | hahaha |
| 22:21:00 | <monochrom> | "Is that Javascript?" |
| 22:21:18 | <int-e> | For 32 bit systems. Yeah. |
| 22:21:24 | <int-e> | ;-) |
| 22:22:29 | <monochrom> | When C int was 16 bits in Turbo C. |
| 22:22:49 | <EvanR> | or arduino |
| 22:23:06 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 22:23:07 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 22:23:07 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 22:23:33 | <EvanR> | it's an 8-bit micro, so they took the liberty of emulating 16-bit math for you |
| 22:23:44 | <EvanR> | enjoy |
| 22:25:39 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 22:26:32 | → | hgolden joins (~hgolden@2603-8000-9d00-3ed1-fc05-5499-f77c-fbe5.res6.spectrum.com) |
| 22:28:18 | × | ursa-major quits (~ursa-majo@136.29.34.240) (Ping timeout: 256 seconds) |
| 22:30:21 | × | Inst_ quits (~Inst@2601:6c4:4081:2fc0:3c6d:b6bf:29e1:9f21) (Read error: Connection reset by peer) |
| 22:30:21 | → | ursa-major joins (~ursa-majo@37.19.210.10) |
| 22:32:02 | → | acidjnk_new joins (~acidjnk@p200300d6e7072f53d1f3494210dbf12e.dip0.t-ipconnect.de) |
| 22:33:11 | × | acidjnk quits (~acidjnk@p200300d6e7072f86347ae895ac9e3181.dip0.t-ipconnect.de) (Ping timeout: 258 seconds) |
| 22:34:16 | → | wroathe joins (~wroathe@user/wroathe) |
| 22:35:24 | × | ursa-major quits (~ursa-majo@37.19.210.10) (Ping timeout: 248 seconds) |
| 22:36:42 | → | ursa-major joins (~ursa-majo@37.19.210.37) |
| 22:36:48 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds) |
| 22:37:24 | <justsomeguy> | Manual reduction of folds and scans, not that anyone is interested. https://github.com/kingparra/hpfp/blob/master/10_-_folds/exercises/fold_reductions.txt ; I didn't really grok foldl until I did this. |
| 22:41:49 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 22:42:31 | <EvanR> | do foldl' |
| 22:42:32 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 22:42:33 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 22:42:33 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 22:42:38 | <justsomeguy> | Ok! |
| 22:43:47 | → | jobhdez joins (~jobhdez@2601:601:d00:f30::c0ac) |
| 22:44:10 | × | ursa-major quits (~ursa-majo@37.19.210.37) (Ping timeout: 256 seconds) |
| 22:44:12 | <EvanR> | and line 79 where you evaluate a foldl is doing case analysis of `l' when it should be analyzing a value |
| 22:44:20 | <EvanR> | at that point |
| 22:44:29 | <justsomeguy> | Thanks, good catch! |
| 22:45:15 | <int-e> | . o O ( Let's talk about seq-s ) |
| 22:45:32 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 248 seconds) |
| 22:46:06 | → | ursa-major joins (~ursa-majo@136.29.34.240) |
| 22:46:29 | <int-e> | @src ($!) |
| 22:46:29 | <lambdabot> | f $! x = x `seq` f x |
| 22:47:08 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 248 seconds) |
| 22:50:58 | <EvanR> | pronounced econo-bang |
| 22:52:18 | × | ursa-major quits (~ursa-majo@136.29.34.240) (Ping timeout: 246 seconds) |
| 22:53:00 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 22:53:00 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 22:53:00 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 22:54:30 | → | ursa-major joins (~ursa-majo@static-198-44-128-184.cust.tzulo.com) |
| 22:57:31 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds) |
| 22:59:54 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 23:00:32 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 23:00:33 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 23:00:33 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 23:02:54 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 23:05:26 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds) |
| 23:07:21 | → | mauke_ joins (~mauke@user/mauke) |
| 23:07:34 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds) |
| 23:08:52 | × | mauke quits (~mauke@user/mauke) (Ping timeout: 250 seconds) |
| 23:08:52 | mauke_ | is now known as mauke |
| 23:09:34 | <justsomeguy> | @src seq |
| 23:09:34 | <lambdabot> | Source not found. You untyped fool! |
| 23:11:47 | <geekosaur> | seq is a compiler intrinsic |
| 23:12:23 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 23:12:23 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 23:12:23 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 23:12:32 | <geekosaur> | someone the other day claimed it could be implemented with GHC2021, but iirc the problem with such implementations is they try to apply lambdas whereas WHNF of a lambda is defined to be itself |
| 23:13:11 | → | She joins (haveident@libera/staff/she/her) |
| 23:13:40 | <justsomeguy> | I see that in GHC.Prim seq is defined as seq = seq lol |
| 23:14:06 | <geekosaur> | GHC.Prim is magic |
| 23:14:27 | <geekosaur> | everything is defined as itself; the module exists only for documentation and infotable generation |
| 23:16:39 | × | tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in) |
| 23:18:17 | → | [_] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 23:20:02 | → | Square joins (~Square@user/square) |
| 23:20:09 | × | danza__ quits (~francesco@151.44.191.133) (Read error: Connection reset by peer) |
| 23:20:27 | → | danza__ joins (~francesco@151.44.199.128) |
| 23:20:39 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 246 seconds) |
| 23:22:17 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 23:27:08 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 248 seconds) |
| 23:30:23 | monochrom | prefers automatic execution of frauds and scams. |
| 23:33:04 | <monochrom> | Yeah the source code "seq = seq" and others (e.g., "lazy = lazy") are placeholders just to make haddock happy. GHC will ignore and replace them. |
| 23:33:25 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
| 23:34:03 | <monochrom> | The only way I can think of implementing seq in GHC2021 is the anti-climatic bang pattern. Which isn't an enlightening answer. |
| 23:35:03 | <monochrom> | Most of the time "how to code this up" carries with it "how to explain it in more elementary terms". |
| 23:36:55 | <int-e> | . o O ( a `seq` b = case a of _ -> b -- but at the core level where `case` always forces the scrutinee. That doesn't really exaplain anything. ) |
| 23:38:16 | <int-e> | For data type values you could do a `seq` b = case a of Con1{} -> b; _ -> b, where Con1 is one of the constructors... |
| 23:38:46 | <int-e> | ...then there's newtypes to consider and finally abstractions for which I don't think you can accurately match the semantics. |
| 23:39:43 | <int-e> | > let x a = a `seq` id in x undefined `seq` () |
| 23:39:45 | <lambdabot> | *Exception: Prelude.undefined |
| 23:42:54 | <int-e> | > const undefined `seq` () |
| 23:42:56 | <lambdabot> | () |
| 23:52:43 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 246 seconds) |
| 23:55:34 | → | whatsupdoc joins (uid509081@id-509081.hampstead.irccloud.com) |
| 23:57:10 | × | cptaffe quits (~cptaffe@99-47-99-155.lightspeed.ltrkar.sbcglobal.net) (Ping timeout: 252 seconds) |
| 23:57:38 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 23:57:39 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 23:57:39 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
All times are in UTC on 2023-08-11.