2022/02/09

2022-02-09 00:00:06 +0100motherfsck(~motherfsc@user/motherfsck)
2022-02-09 00:00:24 +0100 <dsal> I certainly wouldn't mind a better haskell compiler, but that's so far down the list of my pain points right now. Everything unpleasant for me is caused by other people writing code.
2022-02-09 00:00:59 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
2022-02-09 00:01:16 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
2022-02-09 00:01:49 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-02-09 00:02:26 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-09 00:03:52 +0100deadmarshal(~deadmarsh@95.38.116.14)
2022-02-09 00:04:44 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Quit: WeeChat 2.2-dev)
2022-02-09 00:05:58 +0100foul_owl(~kerry@23.82.194.73)
2022-02-09 00:09:11 +0100Tuplanolla(~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Quit: Leaving.)
2022-02-09 00:09:13 +0100lottaquestions_(~nick@2607:fa49:5041:a200:78c8:bb9f:f5b1:85aa)
2022-02-09 00:10:25 +0100lottaquestions(~nick@2607:fa49:5041:a200:4100:dd4:ee5e:72a7)
2022-02-09 00:14:06 +0100AlexisTP(~AlexisTP3@92.57.44.63) (Ping timeout: 245 seconds)
2022-02-09 00:15:12 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-09 00:16:17 +0100jao(~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 240 seconds)
2022-02-09 00:17:12 +0100mikail(~mikail@94.3.253.161) (Quit: Leaving)
2022-02-09 00:18:29 +0100jao(~jao@static-68-235-44-10.cust.tzulo.com)
2022-02-09 00:19:09 +0100deadmarshal(~deadmarsh@95.38.116.14) (Ping timeout: 250 seconds)
2022-02-09 00:19:13 +0100k8yun(~k8yun@user/k8yun) (Read error: Connection reset by peer)
2022-02-09 00:28:30 +0100cynomys(~cynomys@user/cynomys)
2022-02-09 00:30:13 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex)
2022-02-09 00:30:39 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-02-09 00:30:55 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-09 00:32:22 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk)
2022-02-09 00:34:16 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Remote host closed the connection)
2022-02-09 00:34:30 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2022-02-09 00:34:39 +0100ec(~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
2022-02-09 00:35:25 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-09 00:38:47 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2022-02-09 00:38:57 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds)
2022-02-09 00:39:03 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-09 00:39:48 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-09 00:41:03 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2022-02-09 00:41:18 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-09 00:44:18 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-09 00:44:39 +0100stiell(~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
2022-02-09 00:45:25 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit)
2022-02-09 00:45:51 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-09 00:46:47 +0100chenqisu1(~chenqisu1@183.217.200.249) (Client Quit)
2022-02-09 00:47:14 +0100foul_owl(~kerry@23.82.194.73) (Ping timeout: 256 seconds)
2022-02-09 00:47:33 +0100stiell(~stiell@gateway/tor-sasl/stiell)
2022-02-09 00:48:51 +0100 <EvanR> Franciman, long ago I used jquery, and a straightforward way to do what you said is to just use [a] everywhere. It even has handy Monad support
2022-02-09 00:49:08 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-09 00:49:28 +0100 <EvanR> it even looks like other languages in some cases: the character 'c' is expressed as "c" (list of 1 char)
2022-02-09 00:50:10 +0100 <EvanR> if you mix in NonEmpty with your [ ]s, you also get some static guarantees about inhabitedness of your list
2022-02-09 00:50:17 +0100myShoggoth(~myShoggot@75.164.32.244) (Ping timeout: 240 seconds)
2022-02-09 00:50:17 +0100MatthiasG2(~matthias@i6DFA026C.versanet.de) (Quit: leaving)
2022-02-09 00:50:18 +0100Guest67(~Guest67@host86-130-58-7.range86-130.btcentralplus.com)
2022-02-09 00:51:20 +0100 <EvanR> enough of this and it may even become apparent how silly it is out of js context
2022-02-09 00:51:49 +0100 <EvanR> (or not, and be the best thing ever)
2022-02-09 00:55:15 +0100 <monochrom> That sounds like being trapped in the ListT IO monad. :)
2022-02-09 00:56:30 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-09 00:58:52 +0100shailangsa(~shailangs@host86-185-98-37.range86-185.btcentralplus.com)
2022-02-09 01:00:59 +0100Clatters(~Clatters@host86-130-58-7.range86-130.btcentralplus.com)
2022-02-09 01:01:29 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 256 seconds)
2022-02-09 01:02:13 +0100foul_owl(~kerry@217.114.38.61)
2022-02-09 01:02:13 +0100 <EvanR> "jQuery is a monad"
2022-02-09 01:02:17 +0100Pickchea(~private@user/pickchea) (Ping timeout: 240 seconds)
2022-02-09 01:02:26 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-09 01:05:06 +0100Guest67(~Guest67@host86-130-58-7.range86-130.btcentralplus.com) (Quit: Client closed)
2022-02-09 01:05:12 +0100Clatters(~Clatters@host86-130-58-7.range86-130.btcentralplus.com) (Client Quit)
2022-02-09 01:06:07 +0100Codaraxis__(~Codaraxis@user/codaraxis)
2022-02-09 01:07:07 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-09 01:09:12 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2022-02-09 01:09:26 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2022-02-09 01:10:02 +0100Codaraxis_(~Codaraxis@user/codaraxis) (Ping timeout: 260 seconds)
2022-02-09 01:12:58 +0100Majiir(~majiir@pool-96-237-149-35.bstnma.fios.verizon.net)
2022-02-09 01:14:29 +0100ec(~ec@gateway/tor-sasl/ec)
2022-02-09 01:16:40 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705)
2022-02-09 01:22:12 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 01:22:12 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 01:22:12 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 01:25:54 +0100max22-(~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Remote host closed the connection)
2022-02-09 01:26:06 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-02-09 01:26:57 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-09 01:27:02 +0100ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-02-09 01:29:53 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2022-02-09 01:31:16 +0100deadmarshal(~deadmarsh@95.38.116.14)
2022-02-09 01:33:27 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 256 seconds)
2022-02-09 01:34:41 +0100vicfred(~vicfred@user/vicfred) (Quit: Leaving)
2022-02-09 01:35:17 +0100deadmarshal(~deadmarsh@95.38.116.14) (Ping timeout: 240 seconds)
2022-02-09 01:36:10 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds)
2022-02-09 01:39:41 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds)
2022-02-09 01:41:54 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-09 01:44:54 +0100mvk(~mvk@2607:fea8:5cdc:bf00::5483)
2022-02-09 01:46:59 +0100mmhat(~mmh@55d4b3be.access.ecotel.net) (Quit: WeeChat 3.4)
2022-02-09 01:48:26 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 01:48:41 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 01:48:48 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 01:53:55 +0100DNH(~DNH@2a02:8108:1100:16d8:30a6:9d4e:5fe4:7e50) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-09 02:04:42 +0100Codaraxis__(~Codaraxis@user/codaraxis) (Ping timeout: 250 seconds)
2022-02-09 02:09:12 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-02-09 02:09:33 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-02-09 02:10:35 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 02:11:17 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-02-09 02:12:48 +0100jlamothe(~jlamothe@198.251.61.229) (Ping timeout: 256 seconds)
2022-02-09 02:13:28 +0100lbseale_(~ep1ctetus@user/ep1ctetus) (Quit: Leaving)
2022-02-09 02:14:33 +0100d34df00d(~d34df00d@2600:1700:8c60:3a10::48)
2022-02-09 02:14:37 +0100 <d34df00d> Hi!
2022-02-09 02:14:58 +0100 <d34df00d> What's up with pattern synonyms and coverage checker?
2022-02-09 02:15:57 +0100 <d34df00d> To be more precise, I had a `data Definition = Function Ty Arg | ...`, and I figured I want to refactor this into `data FunDef = FunDef Ty Arg; data Definition = Function FunDef | ...`
2022-02-09 02:17:05 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 256 seconds)
2022-02-09 02:17:20 +0100 <d34df00d> There's a lot of code that pattern-matches on Definition, so I thought adding `pattern Function ty arg <- Function (FunDef ty arg) where Function ty arg = Function (FunDef ty arg)` would help.
2022-02-09 02:17:23 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-02-09 02:18:00 +0100 <d34df00d> But now ghc complains pattern-matches are not exhaustive.
2022-02-09 02:18:05 +0100 <d34df00d> (ergh, replace one of the Function's with a different name to avoid clashes, but the idea is the same)
2022-02-09 02:18:20 +0100 <d34df00d> So, anyway, is there a way to convince ghc the matches are exhaustive?
2022-02-09 02:18:22 +0100 <monochrom> I haven't checked, but I wouldn't name-clash "Function" so many times.
2022-02-09 02:18:58 +0100 <d34df00d> Yep, let's assume Function as in the definition ctor is named differently.
2022-02-09 02:19:04 +0100 <d34df00d> In the real code the names are a lot uglier.
2022-02-09 02:19:55 +0100 <monochrom> And I would write like "pattern F ty arg = Function (FunDef ty arg)" for this obviously bidirectional pattern.
2022-02-09 02:21:15 +0100 <d34df00d> Well, it's still non-exhaustive.
2022-02-09 02:21:23 +0100 <d34df00d> But it's much nicer this way, thanks!
2022-02-09 02:21:58 +0100 <geekosaur> what ghc version? the coverage checker gets better with each version although there may be regressions in 9.2.1 which will hopefully be fixed in 9.2.2
2022-02-09 02:22:12 +0100 <jackdk> also {-# COMPLETE #-} annotations are a thing
2022-02-09 02:22:25 +0100 <d34df00d> 8.10, sadly.
2022-02-09 02:23:18 +0100alp(~alp@user/alp) (Ping timeout: 260 seconds)
2022-02-09 02:27:05 +0100 <d34df00d> jackdk: thanks, {-# COMPLETE #-} does the trick! Ideally the compiler'd see the completeness itself, so let's hope I could remove this pragma when I will be able to upgrade to newer ghc versions.
2022-02-09 02:30:22 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 256 seconds)
2022-02-09 02:30:50 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 02:30:52 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Remote host closed the connection)
2022-02-09 02:38:55 +0100x_kuru(~xkuru@user/xkuru) (Read error: Connection reset by peer)
2022-02-09 02:38:59 +0100cynomys(~cynomys@user/cynomys)
2022-02-09 02:40:11 +0100Majiir(~majiir@pool-96-237-149-35.bstnma.fios.verizon.net) (Quit: Lost terminal)
2022-02-09 02:47:56 +0100chenqisu1(~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds)
2022-02-09 02:48:06 +0100ensyde(~ensyde@2600:1700:2050:1040::48)
2022-02-09 02:49:17 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-02-09 02:56:33 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-09 03:00:37 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
2022-02-09 03:01:23 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 03:04:41 +0100xsperry(~xs@user/xsperry) (Remote host closed the connection)
2022-02-09 03:06:04 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-09 03:06:09 +0100xff0x(~xff0x@2001:1a81:533f:ea00:4e49:abcb:9c05:c4b8) (Ping timeout: 256 seconds)
2022-02-09 03:06:32 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705)
2022-02-09 03:08:06 +0100xff0x(~xff0x@2001:1a81:537c:5300:675b:21ba:4e49:e802)
2022-02-09 03:08:37 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-02-09 03:11:29 +0100neurocyte0917090(~neurocyte@user/neurocyte) (Ping timeout: 256 seconds)
2022-02-09 03:13:59 +0100califax-(~califax@user/califx)
2022-02-09 03:17:09 +0100califax(~califax@user/califx) (Ping timeout: 276 seconds)
2022-02-09 03:17:10 +0100califax-califax
2022-02-09 03:20:19 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-09 03:22:35 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-09 03:30:08 +0100fef(~thedawn@user/thedawn)
2022-02-09 03:32:51 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-09 03:42:23 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 250 seconds)
2022-02-09 03:50:07 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Remote host closed the connection)
2022-02-09 03:51:13 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-09 03:56:34 +0100mbuf(~Shakthi@171.61.235.32)
2022-02-09 04:01:00 +0100k8yun(~k8yun@user/k8yun)
2022-02-09 04:02:17 +0100xff0x(~xff0x@2001:1a81:537c:5300:675b:21ba:4e49:e802) (Ping timeout: 240 seconds)
2022-02-09 04:04:17 +0100xff0x(~xff0x@2001:1a81:5384:400:cf7c:5041:a517:d608)
2022-02-09 04:06:32 +0100tzh(~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 252 seconds)
2022-02-09 04:07:01 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-09 04:07:30 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-02-09 04:12:29 +0100jao(~jao@static-68-235-44-10.cust.tzulo.com) (Remote host closed the connection)
2022-02-09 04:14:43 +0100fef(~thedawn@user/thedawn) (Quit: Leaving)
2022-02-09 04:16:18 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-09 04:18:56 +0100jao(~jao@static-68-235-44-10.cust.tzulo.com)
2022-02-09 04:26:37 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 256 seconds)
2022-02-09 04:27:42 +0100cynomys(~cynomys@user/cynomys)
2022-02-09 04:28:12 +0100wavemode30(~wavemode@2601:241:0:fc90:ed74:bac6:9a73:6e1a)
2022-02-09 04:28:53 +0100wavemode30(~wavemode@2601:241:0:fc90:ed74:bac6:9a73:6e1a) (Client Quit)
2022-02-09 04:29:06 +0100wavemode(~wavemode@2601:241:0:fc90:1186:8dd8:ad8a:69e2) (Quit: Client closed)
2022-02-09 04:30:33 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-09 04:40:01 +0100wavemode(~wavemode@2601:241:0:fc90:ed74:bac6:9a73:6e1a)
2022-02-09 04:42:28 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat)
2022-02-09 04:43:30 +0100k8yun_(~k8yun@user/k8yun)
2022-02-09 04:43:40 +0100terrorjack(~terrorjac@2a01:4f8:1c1e:509a::1)
2022-02-09 04:45:49 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-09 04:47:14 +0100k8yun(~k8yun@user/k8yun) (Ping timeout: 252 seconds)
2022-02-09 04:47:15 +0100td_(~td@muedsl-82-207-238-149.citykom.de) (Ping timeout: 256 seconds)
2022-02-09 04:48:42 +0100td_(~td@94.134.91.16)
2022-02-09 04:58:27 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-09 04:59:52 +0100ystael(~ystael@user/ystael) (Quit: Lost terminal)
2022-02-09 05:00:01 +0100haasn(~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in)
2022-02-09 05:01:56 +0100haasn(~nand@haasn.dev)
2022-02-09 05:03:25 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
2022-02-09 05:06:01 +0100ensyde(~ensyde@2600:1700:2050:1040::48) (Ping timeout: 250 seconds)
2022-02-09 05:08:18 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
2022-02-09 05:14:54 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-09 05:15:24 +0100burnsidesLlama(~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection)
2022-02-09 05:15:56 +0100burnsidesLlama(~burnsides@client-8-95.eduroam.oxuni.org.uk)
2022-02-09 05:20:07 +0100burnsidesLlama(~burnsides@client-8-95.eduroam.oxuni.org.uk) (Ping timeout: 256 seconds)
2022-02-09 05:21:07 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 05:22:04 +0100dajoer(~david@user/gvx)
2022-02-09 05:25:47 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-09 05:26:00 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-02-09 05:26:28 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-02-09 05:27:50 +0100caubert_(~caubert@136.244.111.235)
2022-02-09 05:28:16 +0100deadmarshal(~deadmarsh@95.38.116.14)
2022-02-09 05:28:57 +0100caubert(~caubert@136.244.111.235) (Ping timeout: 240 seconds)
2022-02-09 05:32:04 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-09 05:34:00 +0100k8yun_(~k8yun@user/k8yun) (Ping timeout: 250 seconds)
2022-02-09 05:34:34 +0100modnar(~modnar@shell.sonic.net) (Quit: No Ping reply in 180 seconds.)
2022-02-09 05:36:05 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 05:37:16 +0100modnar(~modnar@shell.sonic.net)
2022-02-09 05:46:03 +0100sebastiandb(~sebastian@2620:0:5301:2101:1fb2:b569:b87b:10e9)
2022-02-09 06:02:03 +0100chenqisu1(~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds)
2022-02-09 06:06:03 +0100vysn(~vysn@user/vysn) (Ping timeout: 250 seconds)
2022-02-09 06:07:51 +0100wavemode(~wavemode@2601:241:0:fc90:ed74:bac6:9a73:6e1a) (Quit: Client closed)
2022-02-09 06:08:21 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-09 06:14:10 +0100wavemode(~wavemode@2601:241:0:fc90:2892:d0:a7ec:bc11)
2022-02-09 06:19:01 +0100ksqsf(~user@134.209.106.31)
2022-02-09 06:19:23 +0100 <ksqsf> Is there a stack command that prints the resolver of the current project?
2022-02-09 06:21:02 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 06:22:13 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 06:24:20 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 06:24:32 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 06:28:27 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-09 06:31:50 +0100 <dsal> The resolver can be a file path or URL. I don't know if there's a commandline way to do it offhand, but it might be confusing.
2022-02-09 06:33:06 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 06:33:06 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 06:33:06 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 06:33:47 +0100deadmarshal(~deadmarsh@95.38.116.14) (Ping timeout: 256 seconds)
2022-02-09 06:37:26 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-09 06:37:27 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2022-02-09 06:38:34 +0100sebastiandb(~sebastian@2620:0:5301:2101:1fb2:b569:b87b:10e9) (Ping timeout: 260 seconds)
2022-02-09 06:40:55 +0100jao(~jao@static-68-235-44-10.cust.tzulo.com) (Ping timeout: 256 seconds)
2022-02-09 06:44:30 +0100pavonia(~user@user/siracusa) (Quit: Bye!)
2022-02-09 06:47:40 +0100 <koala_man> hey I'm looking at the "infinite loops" section at the bottom of https://wiki.haskell.org/Debugging but I can't reproduce it. Does anyone know if this still works?
2022-02-09 06:48:26 +0100 <koala_man> or any other convenient way to track down an infinite loop
2022-02-09 06:49:02 +0100 <jackdk> call smaller and smaller parts of your program - if the small part doesn't infinitely loop, the loop is in the part you left our
2022-02-09 06:49:05 +0100 <jackdk> out*
2022-02-09 06:49:59 +0100 <Axman6> Debug.Trace can be useful too, if you have: loop some args = ..., you can do loop some args | trace ("loop",some,args) False = undefined; | otherwise = ...
2022-02-09 06:50:35 +0100 <koala_man> jackdk: due to laziness this is not the case
2022-02-09 06:51:44 +0100 <modnar> ksqsf: perhaps? grep -A2 "^resolver:" stack.yaml
2022-02-09 06:53:39 +0100 <ephemient> might not be on the same line since it's yaml. `python -c 'import yaml;print(yaml.load(open("stack.yaml"))["resolver"])' would reliably get the right stanza but as mentioned above, it could be a name or a path or a url...
2022-02-09 07:00:08 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-02-09 07:09:08 +0100zebrag(~chris@user/zebrag) (Quit: Konversation terminated!)
2022-02-09 07:13:25 +0100HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection)
2022-02-09 07:13:46 +0100HotblackDesiato(~HotblackD@gateway/tor-sasl/hotblackdesiato)
2022-02-09 07:14:30 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-09 07:15:27 +0100 <koala_man> I build my executable with profiling, but I'm not getting any results when I ctrl-c it. Is there anything I can do about that?
2022-02-09 07:16:13 +0100 <Axman6> what have you actually done?
2022-02-09 07:16:43 +0100 <koala_man> `cabal build -p` followed by `myexe +RTS -p`
2022-02-09 07:16:56 +0100 <Axman6> but what have you done to your code
2022-02-09 07:16:58 +0100 <koala_man> also --enable-profiling
2022-02-09 07:17:26 +0100 <Axman6> Keep in mind that that page you liked to is from the GHC 6 era, and a lot of it is probably pretty useless
2022-02-09 07:17:40 +0100 <koala_man> not sure what you mean. I've made extensive modifications to it?
2022-02-09 07:18:14 +0100 <Axman6> I suggested you make sone changes to your code to make it easier to see what's going on, did you try that?
2022-02-09 07:18:40 +0100 <koala_man> I'm very familiar with trace debugging, I'm just tired of doing it every time
2022-02-09 07:23:24 +0100 <ephemient> compile with ghc -prof -fprof-auto for some default {-# SCC #-} everywhere, run with +RTS -xc to include stack traces… should work but I always had a better time breaking things down into smaller testable components then using quickcheck or Debug.Trace
2022-02-09 07:31:44 +0100 <koala_man> ephemient: I'm not getting a stack trace, but Ctrl-C only kills it the second time so maybe the handler gets stuck
2022-02-09 07:33:31 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 07:33:31 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 07:33:31 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 07:33:31 +0100gentauro(~gentauro@user/gentauro) (Read error: Connection reset by peer)
2022-02-09 07:33:49 +0100gentauro(~gentauro@user/gentauro)
2022-02-09 07:34:17 +0100Inst(~delicacie@2601:6c4:4080:3f80:6cf2:b906:2bc7:1ff9) (Ping timeout: 240 seconds)
2022-02-09 07:35:33 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-09 07:36:18 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-09 07:37:15 +0100bliminse(~bliminse@host86-188-36-166.range86-188.btcentralplus.com) (Ping timeout: 256 seconds)
2022-02-09 07:37:27 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-09 07:37:39 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-09 07:38:06 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-09 07:38:38 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-09 07:38:51 +0100bliminse(~bliminse@host86-158-241-239.range86-158.btcentralplus.com)
2022-02-09 07:41:36 +0100Inst(~delicacie@2601:6c4:4080:3f80:1d81:9f23:5ac8:407a)
2022-02-09 07:41:46 +0100slowButPresent(~slowButPr@user/slowbutpresent) (Quit: leaving)
2022-02-09 07:43:10 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-09 07:53:26 +0100echoreply(~echoreply@45.32.163.16) (Quit: WeeChat 2.8)
2022-02-09 07:54:44 +0100echoreply(~echoreply@2001:19f0:9002:1f3b:5400:ff:fe6f:8b8d)
2022-02-09 07:59:12 +0100 <koala_man> ephemient: hah, I started the operation in a forkIO and killed the thread after a delay. it showed a stack trace that was at least close
2022-02-09 08:02:04 +0100little_mac(~little_ma@2601:410:4300:3ce0:c1b4:4e62:c0e4:304a) (Remote host closed the connection)
2022-02-09 08:02:21 +0100bitmapper(uid464869@id-464869.lymington.irccloud.com)
2022-02-09 08:02:26 +0100superbil(~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-09 08:04:38 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 08:04:52 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 08:05:00 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 08:05:16 +0100superbil(~superbil@1-34-176-171.hinet-ip.hinet.net)
2022-02-09 08:05:32 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 08:05:45 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 08:10:50 +0100michalz(~michalz@185.246.204.93)
2022-02-09 08:11:14 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-09 08:12:32 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-09 08:13:22 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-09 08:14:02 +0100alp(~alp@user/alp)
2022-02-09 08:16:41 +0100dschrempf(~dominik@mobiledyn-62-240-134-126.mrsn.at)
2022-02-09 08:18:14 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
2022-02-09 08:18:34 +0100phma_(~phma@2001:5b0:211f:d758:6f18:ab28:6bcc:58fd)
2022-02-09 08:18:34 +0100phma(phma@2001:5b0:211f:7e68:f18f:96de:b488:61b7) (Read error: Connection reset by peer)
2022-02-09 08:19:03 +0100deadmarshal(~deadmarsh@95.38.116.14)
2022-02-09 08:19:11 +0100dschrempf(~dominik@mobiledyn-62-240-134-126.mrsn.at) (Client Quit)
2022-02-09 08:22:07 +0100Jing(~hedgehog@240e:390:7c53:a7e1:dc0:c5aa:294f:7621)
2022-02-09 08:25:11 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 256 seconds)
2022-02-09 08:27:05 +0100cosimone(~user@93-34-133-254.ip49.fastwebnet.it)
2022-02-09 08:29:06 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection)
2022-02-09 08:30:02 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-09 08:31:33 +0100LiaoTao(~LiaoTao@gateway/tor-sasl/liaotao)
2022-02-09 08:32:14 +0100zaquest(~notzaques@5.130.79.72) (Remote host closed the connection)
2022-02-09 08:32:45 +0100 <dminuoso> koala_man: Last I checked it worked, yes.
2022-02-09 08:32:58 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
2022-02-09 08:34:04 +0100phma_phma
2022-02-09 08:34:08 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-09 08:35:32 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 08:36:53 +0100zaquest(~notzaques@5.130.79.72)
2022-02-09 08:39:49 +0100MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net)
2022-02-09 08:39:50 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
2022-02-09 08:44:39 +0100MajorBiscuit(~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 250 seconds)
2022-02-09 08:44:55 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 08:45:56 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 08:46:04 +0100MajorBiscuit(~MajorBisc@c-001-013-035.client.tudelft.eduvpn.nl)
2022-02-09 08:47:25 +0100Sgeo(~Sgeo@user/sgeo) (Read error: Connection reset by peer)
2022-02-09 08:48:41 +0100gehmehgeh(~user@user/gehmehgeh)
2022-02-09 08:54:12 +0100chele(~chele@user/chele)
2022-02-09 08:54:53 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 256 seconds)
2022-02-09 08:55:11 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 08:55:24 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 08:55:40 +0100mc47(~mc47@xmonad/TheMC47)
2022-02-09 08:56:13 +0100sektor|3(~kvirc@94.155.193.66)
2022-02-09 08:57:54 +0100max22-(~maxime@2a01cb088335980044f7b68859555b87.ipv6.abo.wanadoo.fr)
2022-02-09 08:58:09 +0100vysn(~vysn@user/vysn)
2022-02-09 08:58:52 +0100cfricke(~cfricke@user/cfricke)
2022-02-09 08:59:25 +0100sektor|2(~kvirc@87.227.175.182) (Ping timeout: 256 seconds)
2022-02-09 09:00:13 +0100michalz(~michalz@185.246.204.93) (Remote host closed the connection)
2022-02-09 09:00:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2022-02-09 09:02:58 +0100ksqsf(~user@134.209.106.31)
2022-02-09 09:05:20 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-09 09:06:47 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:cb78:26c4:6167:fc4)
2022-02-09 09:07:27 +0100elkcl(~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru)
2022-02-09 09:07:29 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-09 09:08:03 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-09 09:10:08 +0100AlexisTP(~AlexisTP3@92.57.44.63)
2022-02-09 09:11:25 +0100AlexisTP(~AlexisTP3@92.57.44.63) (Client Quit)
2022-02-09 09:11:45 +0100AlexisTP(~AlexisTP3@92.57.44.63)
2022-02-09 09:12:27 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Ping timeout: 256 seconds)
2022-02-09 09:12:37 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 240 seconds)
2022-02-09 09:13:01 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 256 seconds)
2022-02-09 09:13:53 +0100AlexisTP(~AlexisTP3@92.57.44.63) (Client Quit)
2022-02-09 09:14:11 +0100AlexisTP(~AlexisTP3@92.57.44.63)
2022-02-09 09:15:40 +0100AlexisTP(~AlexisTP3@92.57.44.63) (Client Quit)
2022-02-09 09:16:03 +0100AlexisTP(~AlexisTP@92.57.44.63)
2022-02-09 09:16:45 +0100hgolden(~hgolden2@cpe-172-114-81-123.socal.res.rr.com)
2022-02-09 09:17:36 +0100ksqsf(~user@134.209.106.31)
2022-02-09 09:17:59 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Remote host closed the connection)
2022-02-09 09:19:02 +0100michalz(~michalz@185.246.204.65)
2022-02-09 09:22:07 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 250 seconds)
2022-02-09 09:22:11 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be)
2022-02-09 09:24:57 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 09:25:32 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
2022-02-09 09:25:44 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 09:28:51 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-09 09:31:20 +0100ksqsf(~user@134.209.106.31)
2022-02-09 09:33:25 +0100foul_owl(~kerry@217.114.38.61) (Ping timeout: 256 seconds)
2022-02-09 09:34:17 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 09:34:17 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 09:34:17 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 09:34:29 +0100Pickchea(~private@user/pickchea)
2022-02-09 09:37:20 +0100 <elkcl> hi! I recently saw someone implement a function that checks if a list is a palindrome like this:
2022-02-09 09:37:20 +0100 <elkcl> isPalindrome = (==) <*> reverse
2022-02-09 09:37:20 +0100 <elkcl> I was trying to figure out how it works and after fooling around with type signatures it appears that (a ->) gets substituted in (Applicative f). My question is: how the hell does this work? I always thought -> was some special syntax, but here it works like a parametric type or something? Sorry if it's an absolute beginner question, but I could find any info
2022-02-09 09:37:38 +0100 <elkcl> *couldn't find any info about this
2022-02-09 09:39:16 +0100Tuplanolla(~Tuplanoll@91-159-68-166.elisa-laajakaista.fi)
2022-02-09 09:39:16 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 250 seconds)
2022-02-09 09:41:17 +0100Pickchea(~private@user/pickchea) (Quit: Leaving)
2022-02-09 09:43:43 +0100 <[exa]> elkcl: you're right, this is a result of `instance Applicative ((->) r)`
2022-02-09 09:45:05 +0100 <[exa]> anyway it's not an absolute beginner question, I'll need to have a look at how this actually decomposes too :D
2022-02-09 09:45:32 +0100 <[exa]> did you work with some other applicatives
2022-02-09 09:45:45 +0100 <[exa]> ...for example this:
2022-02-09 09:45:54 +0100 <[exa]> > (+) <$> Just 3 <*> Just 5
2022-02-09 09:45:55 +0100 <lambdabot> Just 8
2022-02-09 09:46:11 +0100RFV(~Thunderbi@243.red-88-5-247.dynamicip.rima-tde.net)
2022-02-09 09:47:01 +0100machinedgod(~machinedg@24.105.81.50)
2022-02-09 09:47:26 +0100 <elkcl> Yeah, I more or less understand how applicatives work in general, what confused me was (->) behaving like a parametric type
2022-02-09 09:47:40 +0100 <[exa]> yeah, well, it is. :D
2022-02-09 09:49:02 +0100 <[exa]> the instance is here: https://hackage.haskell.org/package/base-4.16.0.0/docs/src/GHC.Base.html#line-1007
2022-02-09 09:49:44 +0100 <[exa]> in short, (p ->) forms a proper functor, you may imagine it as a "box for a result that requires a parameter of type `p` to get a result"
2022-02-09 09:51:07 +0100 <[exa]> > (+1) 3 -- example: (+1) is a box for a result, and we get the result by giving it the parameter
2022-02-09 09:51:08 +0100 <lambdabot> 4
2022-02-09 09:51:43 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2022-02-09 09:51:45 +0100 <[exa]> > ((*2) <$> (+1)) 3 -- example 2: we multiply whatever is in the box by 2, then get it out of a box (and pretend the 3 was there even before :D )
2022-02-09 09:51:46 +0100 <lambdabot> 8
2022-02-09 09:52:31 +0100 <[exa]> applicative in this works similarly, you combine the boxes as with other applicative "containers", and when you finally supply the parameter, it gets sent to all boxes
2022-02-09 09:53:03 +0100 <[exa]> (if you worked with combinators, you might notice from the definition that <*> is perfectly equivalent to S combinator)
2022-02-09 09:53:31 +0100 <[exa]> so let's make a bit of an allegory with simpler applicatives:
2022-02-09 09:53:49 +0100 <[exa]> > (+) <$> Just 3 <*> Just 7
2022-02-09 09:53:50 +0100 <lambdabot> Just 10
2022-02-09 09:53:59 +0100cynomys(~cynomys@user/cynomys)
2022-02-09 09:54:07 +0100 <[exa]> :t (+) <$> (+3) <*> (+7)
2022-02-09 09:54:08 +0100 <lambdabot> Num b => b -> b
2022-02-09 09:54:21 +0100 <[exa]> > ( (+) <$> (+3) <*> (+7) ) 1
2022-02-09 09:54:23 +0100 <lambdabot> 12
2022-02-09 09:54:37 +0100AlexisTP(~AlexisTP@92.57.44.63) (Ping timeout: 250 seconds)
2022-02-09 09:54:48 +0100shriekingnoise(~shrieking@201.231.16.156) (Quit: Quit)
2022-02-09 09:55:09 +0100kuribas(~user@ptr-25vy0i7qdirbfvrk27x.18120a2.ip6.access.telenet.be)
2022-02-09 09:55:18 +0100 <[exa]> (basically rewrites to `(+) ((+3) 1) ((+7) 1)` )
2022-02-09 09:55:56 +0100 <[exa]> in your case, the parameter "broadcasting" works the same way, although the parameter is not explicitly there
2022-02-09 09:57:03 +0100 <[exa]> `isPalindrome p = ((==) <*> reverse) p` is basically equivalent to `p` getting sent to all boxes in the applicative expression, in this case: `isPalindrome p = ((==) p) (reverse p)`
2022-02-09 09:59:02 +0100cfricke(~cfricke@user/cfricke)
2022-02-09 10:00:37 +0100ishutin(~ishutin@80-95-86-56.pool.digikabel.hu) (Ping timeout: 256 seconds)
2022-02-09 10:01:43 +0100 <elkcl> woah, thanks, I think I get it now
2022-02-09 10:01:43 +0100 <elkcl> Does that also mean that all type signatures are just "applications" of parametric types then? I thought -> was special, but looks like the only special thing about it is being an infix operator
2022-02-09 10:01:43 +0100 <elkcl> Can I define my own "infix types" by the way?
2022-02-09 10:02:04 +0100 <[exa]> anyway, this allows a really nice form of passing "global parameters" to whole computations, people usually call it "Reader style", there's whole Reader monad for that purpose, which does roughly the same thing. Might be a nice intuition to have a look at it
2022-02-09 10:02:25 +0100ishutin(~ishutin@193-110-63-21.cable-modem.hdsnet.hu)
2022-02-09 10:02:59 +0100 <Axman6> % type a ~~> b = (a,a) -> (b,b)
2022-02-09 10:03:01 +0100 <yahb> Axman6:
2022-02-09 10:03:37 +0100 <Axman6> % both :: a -> b -> (a ~~> b); both f (x,y) = (f x, f y)
2022-02-09 10:03:37 +0100 <yahb> Axman6: ; <interactive>:2:45: error:; * Couldn't match type: (b0, b0); with: (a, a) -> (b, b); Expected: a ~~> b; Actual: (b0, b0); * In the expression: (f x, f y); In an equation for `both': both f (x, y) = (f x, f y); * Relevant bindings include; f :: a (bound at <interactive>:2:35); both :: a -> b -> a ~~> b (bound at <interactive>:2:30)
2022-02-09 10:03:53 +0100 <Axman6> % both :: (a -> b) -> (a ~~> b); both f (x,y) = (f x, f y)
2022-02-09 10:03:53 +0100 <yahb> Axman6:
2022-02-09 10:04:02 +0100 <Axman6> % both show (1,2)
2022-02-09 10:04:02 +0100 <yahb> Axman6: ("1","2")
2022-02-09 10:04:26 +0100 <[exa]> elkcl: technically (->) is not special at all, just a normal type with 2 parameters and sligtly complicated representation at runtime
2022-02-09 10:04:45 +0100 <lortabac> (->) is special because it's built-in
2022-02-09 10:04:58 +0100 <[exa]> infix types are AFAIK possible but you need to prefix them with `:` or something, not sure
2022-02-09 10:05:19 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection)
2022-02-09 10:05:32 +0100 <lortabac> infix types are possible but you have to enable TypeOperators
2022-02-09 10:06:09 +0100 <lortabac> and yes, prefix them with (:)
2022-02-09 10:06:27 +0100 <[exa]> wow, TypeOperators doesn't even need the : prefix
2022-02-09 10:06:39 +0100 <ski> they used to
2022-02-09 10:06:48 +0100 <[exa]> still it's a very useful distinction to keep.
2022-02-09 10:07:02 +0100 <lortabac> oh I didn't know, I thought only type families were allowed without :
2022-02-09 10:07:49 +0100 <lortabac> data constructors still require the :, right?
2022-02-09 10:08:10 +0100 <[exa]> yes, seems so
2022-02-09 10:08:17 +0100 <[exa]> (phew..!)
2022-02-09 10:08:40 +0100 <ski> % data (f <+> g) a = Left1 (f a) | Right1 (g a)
2022-02-09 10:08:40 +0100 <yahb> ski:
2022-02-09 10:09:17 +0100ardell(~ardell@user/ardell)
2022-02-09 10:09:29 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-09 10:11:17 +0100 <ski> you used to be able to say `graph :: Arrow (~>) => (a ~ b) -> (a ~> (a,b)); graph f = arr id &&& f; cograph :: ArrowChoice (~>) => (a ~> b) -> (Either a b ~> b); cograph f = f ||| arr id'
2022-02-09 10:11:56 +0100econo(uid147250@user/econo) (Quit: Connection closed for inactivity)
2022-02-09 10:12:53 +0100jco(~jco@90-228-194-139-no542.tbcn.telia.com)
2022-02-09 10:13:57 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 240 seconds)
2022-02-09 10:14:18 +0100 <ski> (`(~>)' there being a type variable .. just like you can say `on :: (b -> b -> c) -> (a -> b) -> (a -> a -> c); ((+) `on` f) x y = f x + f y', where `(+)' is a variable)
2022-02-09 10:14:42 +0100RFV(~Thunderbi@243.red-88-5-247.dynamicip.rima-tde.net) (Quit: RFV)
2022-02-09 10:15:26 +0100 <jco> I'm using Emacs, LSP, and company-mode. Is there a way to disable the feature that when autocompleting, the arguments to a function are also completed (i.e. their types are added after the function name). I'd only want the function name itself to be inserted as a result of selecting the completion candidate.
2022-02-09 10:17:25 +0100jonathanx(~jonathan@h-178-174-176-109.A357.priv.bahnhof.se)
2022-02-09 10:18:31 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-09 10:18:57 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
2022-02-09 10:19:16 +0100xsperry(~xs@user/xsperry)
2022-02-09 10:23:27 +0100eggplantade(~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 250 seconds)
2022-02-09 10:25:11 +0100 <elkcl> ah, so it's possible with a ghc extension, cool
2022-02-09 10:25:11 +0100 <elkcl> ok, thanks everyone
2022-02-09 10:25:14 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 10:25:26 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 10:25:49 +0100zer0bitz(~zer0bitz@2001:2003:f74d:b800:2df2:1ec5:8dd3:29f0)
2022-02-09 10:26:13 +0100takuan(~takuan@178-116-218-225.access.telenet.be)
2022-02-09 10:27:53 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2022-02-09 10:28:09 +0100 <InternetCitizen> any ideas why llvm-hs is stuck on 9.0?
2022-02-09 10:28:40 +0100 <InternetCitizen> even at upstream all I could find was an llvm-12 dev branch, and last release was in 2019
2022-02-09 10:30:14 +0100 <InternetCitizen> is the C API extension proving too costly to maintain? or is there very little interest in building LLVM-backed compilers in Haskell
2022-02-09 10:33:04 +0100 <[exa]> maintenance ain't easy I'd say
2022-02-09 10:34:59 +0100 <merijn> LLVM is a nightmare beast of Lovecraftian horror :p
2022-02-09 10:35:26 +0100 <InternetCitizen> I just find it odd since the OCaml bindings are up to date and I always imagined the Haskell community to be bigger
2022-02-09 10:35:54 +0100 <[exa]> related: https://github.com/llvm-hs/llvm-hs/issues/364
2022-02-09 10:36:50 +0100 <merijn> So, the answer is: the ocaml bindings aren't up to date either :p
2022-02-09 10:39:09 +0100 <InternetCitizen> ? apparently they're part of the llvm project
2022-02-09 10:39:31 +0100 <InternetCitizen> "Our FFI layer directly provides bindings to things that the C API doesn't expose, in addition to wrapping the C API for other things, so we have a decently large maintenance burden when something changes."
2022-02-09 10:39:42 +0100`2jt(~jtomas@130.red-88-22-46.staticip.rima-tde.net)
2022-02-09 10:39:57 +0100 <[exa]> that's one way to make maintenance hard, yes.
2022-02-09 10:39:58 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 10:40:13 +0100 <merijn> InternetCitizen: Yeah, but that llvm-hs issue mentions that Ocaml only supports the C interface and thus not all of LLVM's functionality
2022-02-09 10:40:31 +0100 <[exa]> isn't there some kind of simpler project that would just c2hs the whole thing?
2022-02-09 10:40:32 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-09 10:40:42 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 10:41:00 +0100 <InternetCitizen> merijn: ah yes of course, but that's standard practice in llvm bindings, most languages only wrap the C API
2022-02-09 10:41:19 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 10:41:25 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 10:41:43 +0100 <InternetCitizen> llvm-hs is unique in this regard and the reason I was interested in it
2022-02-09 10:42:20 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-09 10:43:30 +0100chenqisu1(~chenqisu1@183.217.200.249) (Remote host closed the connection)
2022-02-09 10:43:37 +0100cynomys(~cynomys@user/cynomys) (Quit: Lost terminal)
2022-02-09 10:43:48 +0100vglfr(~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer)
2022-02-09 10:43:56 +0100 <merijn> Right, but that alone would explain why llvm-hs is so much more work to maintain :)
2022-02-09 10:44:00 +0100vglfr(~vglfr@coupling.penchant.volia.net)
2022-02-09 10:44:04 +0100AlexisTP(~AlexisTP@92.57.44.63)
2022-02-09 10:44:20 +0100 <merijn> Wrapping C APIs in haskell? Easy peasy! Barely an inconvenience!
2022-02-09 10:44:36 +0100 <merijn> Wrapping C++ APIs in anything (including Haskell)? Please just kill me now
2022-02-09 10:45:09 +0100 <merijn> I would 100% rather stab myself in the leg than wrap C++ code in another language
2022-02-09 10:45:17 +0100 <merijn> At least the pain of stabs is temporary...
2022-02-09 10:49:02 +0100[exa]mixes in some random macros and templates
2022-02-09 10:50:07 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 10:50:44 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-02-09 10:52:04 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-09 10:53:01 +0100chenqisu1(~chenqisu1@183.217.200.249) (Max SendQ exceeded)
2022-02-09 10:53:28 +0100chenqisu1(~chenqisu1@183.217.200.249)
2022-02-09 10:53:55 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 10:55:16 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-09 10:55:19 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-09 10:55:38 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-09 10:55:45 +0100 <tomsmeding> I wonder if it wouldn't be better for llvm-hs (if only for publicity) if they would just release now, even without full support
2022-02-09 10:56:22 +0100 <tomsmeding> at least then you have a higher chance of people using it, running into limitations (perhaps, if at all), and having a bit of time to help completing functionality (perhaps)
2022-02-09 10:56:23 +0100 <[exa]> reflecting on whether "full support" of LLVM is even achievable in the long term could help, yes
2022-02-09 10:56:40 +0100 <tomsmeding> rather, whether full support is necessary to even cut a first release
2022-02-09 10:57:49 +0100 <kuribas> merijn: wrap it in C, then wrap the C in haskell?
2022-02-09 10:57:57 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-02-09 10:58:16 +0100ubert(~Thunderbi@p200300ecdf0994700e1bfcbc5fe04b55.dip0.t-ipconnect.de)
2022-02-09 10:59:58 +0100samtoth(~igloo@90.208.227.189)
2022-02-09 11:00:20 +0100 <tomsmeding> InternetCitizen: just for completeness' sake, that llvm-12 dev branch is working perfectly well, it just doesn't have full support for all the new stuff introduced in llvm 12
2022-02-09 11:04:35 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli)
2022-02-09 11:05:39 +0100marinelli(~marinelli@gateway/tor-sasl/marinelli) (Client Quit)
2022-02-09 11:06:13 +0100vysn(~vysn@user/vysn) (Ping timeout: 240 seconds)
2022-02-09 11:08:57 +0100ksqsf(~user@134.209.106.31) (Ping timeout: 256 seconds)
2022-02-09 11:10:52 +0100DNH(~DNH@2a02:8108:1100:16d8:adf2:7fd4:5ba2:8512)
2022-02-09 11:13:09 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2022-02-09 11:15:34 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-02-09 11:18:41 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr)
2022-02-09 11:20:52 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 11:20:52 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 11:20:52 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 11:21:25 +0100Tuplanolla(~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Ping timeout: 240 seconds)
2022-02-09 11:24:44 +0100fvr(uid503686@id-503686.uxbridge.irccloud.com)
2022-02-09 11:25:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-09 11:27:31 +0100rusrushal13(~rusrushal@2405:201:7003:8952:a27c:c592:8e19:8656)
2022-02-09 11:29:25 +0100samtoth(~igloo@90.208.227.189) (Ping timeout: 240 seconds)
2022-02-09 11:30:03 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
2022-02-09 11:30:05 +0100jamesmartinez(~pepsi@2a02:4780:1:1::1:a856)
2022-02-09 11:31:32 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds)
2022-02-09 11:31:36 +0100Codaraxis(~Codaraxis@user/codaraxis)
2022-02-09 11:31:53 +0100Codaraxis(~Codaraxis@user/codaraxis) (Client Quit)
2022-02-09 11:33:12 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-09 11:34:55 +0100Tuplanolla(~Tuplanoll@91-159-69-98.elisa-laajakaista.fi)
2022-02-09 11:36:05 +0100xkuru(~xkuru@user/xkuru)
2022-02-09 11:40:06 +0100jamesmartinez(~pepsi@2a02:4780:1:1::1:a856) (WeeChat 1.9.1)
2022-02-09 11:40:46 +0100Gurkenglas_(~Guest22@dslb-188-096-121-068.188.096.pools.vodafone-ip.de)
2022-02-09 11:41:44 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr) (Ping timeout: 256 seconds)
2022-02-09 11:41:53 +0100 <Gurkenglas_> Can GADTs be seen as merely sugar for a transformation like this one? https://gist.github.com/Gurkenglas/137914f5790f0e0390c631f9678832da because it looks more powerful than GADTs are
2022-02-09 11:42:01 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 245 seconds)
2022-02-09 11:42:17 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds)
2022-02-09 11:42:42 +0100safinaskar(~quassel@109.252.91.116)
2022-02-09 11:44:08 +0100 <Gurkenglas_> (edited in fits and bursts a little just now, reload if it doesn't look like it'd compile.)
2022-02-09 11:44:10 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-09 11:45:32 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-09 11:46:04 +0100 <Gurkenglas_> Also, is there a library that provides as-close-as-we-can-get-to type-level lambdas?
2022-02-09 11:47:04 +0100 <lortabac> @hackage first-class-families
2022-02-09 11:47:04 +0100 <lambdabot> https://hackage.haskell.org/package/first-class-families
2022-02-09 11:47:19 +0100 <lortabac> or if you are brave enough, singletons
2022-02-09 11:47:28 +0100 <lortabac> @hackage singletons
2022-02-09 11:47:28 +0100 <lambdabot> https://hackage.haskell.org/package/singletons
2022-02-09 11:48:11 +0100 <Gurkenglas_> Thanks! This must've been what value-level lambdas must have looked like 40 years ago :3
2022-02-09 11:48:12 +0100 <kuribas> Gurkenglas_: no, that looks weird.
2022-02-09 11:48:28 +0100 <kuribas> Gurkenglas_: what is `f`?
2022-02-09 11:48:47 +0100safinaskar(~quassel@109.252.91.116) ()
2022-02-09 11:48:49 +0100tiferrei(~tiferrei@user/tiferrei) (Remote host closed the connection)
2022-02-09 11:48:56 +0100 <Gurkenglas_> kuribas, universally quantified!
2022-02-09 11:49:37 +0100 <lortabac> Gurkenglas_: http://code.slipthrough.net/2016/08/10/approximating-gadts-in-purescript/
2022-02-09 11:49:43 +0100 <Gurkenglas_> kuribas, you mean, "GADTs can't been seen as merely sugar for that because that looks weird"?
2022-02-09 11:50:16 +0100 <lortabac> Gurkenglas_: your encoding looks very similar to the one described in the post
2022-02-09 11:50:22 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-09 11:50:34 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-09 11:51:40 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 11:51:40 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 11:51:40 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 11:52:40 +0100 <kuribas> Gurkenglas_: I mean, what do you plug in that `f`?
2022-02-09 11:52:43 +0100 <kuribas> Identity?
2022-02-09 11:54:10 +0100kilolympus(~kilolympu@31.205.200.235) (Quit: Quitting IRC :()
2022-02-09 11:55:19 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
2022-02-09 11:55:25 +0100 <Gurkenglas_> kuribas, whatever you need at the time. to get the string out of Foo2 (\bar baz -> baz "asd"), I suppose you could do runIdentity $ runFoo (\bar baz -> baz "asd") error Identity
2022-02-09 11:55:48 +0100 <Gurkenglas_> -error+undefined
2022-02-09 11:56:28 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-09 11:56:47 +0100 <kuribas> Gurkenglas_: what if it is just a phantom variable?
2022-02-09 11:56:55 +0100 <kuribas> phantom type...
2022-02-09 11:57:43 +0100 <Gurkenglas_> kuribas, then you won't have much luck passing anything to the output of runFoo!
2022-02-09 11:58:09 +0100 <kuribas> indeed, but phantom types are supported by GADTs.
2022-02-09 11:59:01 +0100 <Gurkenglas_> maybe i misunderstood? give me something that GADTs can do with this that my thing can't.
2022-02-09 11:59:30 +0100Lord_of_Life_(~Lord@user/lord-of-life/x-2819915)
2022-02-09 12:00:06 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
2022-02-09 12:00:43 +0100 <Gurkenglas_> *googles around* i guessed phantom type means, type without values. if it just means, f a is the same as f b, then there's no problem
2022-02-09 12:00:50 +0100Lord_of_Life_Lord_of_Life
2022-02-09 12:01:42 +0100 <Gurkenglas_> 'runConst $ runFoo (\bar baz -> baz "asd") undefined Const' will also get the string out.
2022-02-09 12:01:43 +0100 <merijn> Gurkenglas_: A phantom type is one without a body (i.e. it only exists in the type, not in the value)
2022-02-09 12:02:12 +0100 <merijn> As in "data Const a b = Const a" 'b' is a phantom type, 'cos no "body" (value)
2022-02-09 12:03:22 +0100 <Gurkenglas_> Okay. So kuribas, what do you mean by f being phantom? it's not appears-left-but-not-right, it's appears-right-but-not-left.
2022-02-09 12:03:36 +0100 <kuribas> yes
2022-02-09 12:04:34 +0100 <Gurkenglas_> You're going to have to give me more than yes! :D
2022-02-09 12:04:46 +0100 <kuribas> I'll have a look later...
2022-02-09 12:04:58 +0100 <kuribas> I have work to do.
2022-02-09 12:06:02 +0100califax(~califax@user/califx) (Remote host closed the connection)
2022-02-09 12:06:16 +0100califax(~califax@user/califx)
2022-02-09 12:11:29 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915) (Excess Flood)
2022-02-09 12:11:43 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-02-09 12:11:53 +0100Lord_of_Life(~Lord@user/lord-of-life/x-2819915)
2022-02-09 12:17:36 +0100 <Gurkenglas_> lortabac, that post does something quite different from me, i think - i don't expect any type equality problems. '(\foo2 -> runIdentity $ runFoo2 foo2 Identity Identity) :: Foo2 a -> a' works fine
2022-02-09 12:17:54 +0100 <lottaquestions_> Hi all new guy here
2022-02-09 12:18:09 +0100 <lottaquestions_> How does one create a cabal sandbox?
2022-02-09 12:18:43 +0100 <geekosaur> you don't any more, modern cabal automatically sandboxes
2022-02-09 12:19:20 +0100 <Gurkenglas_> I fear thinking about cabal directly indicates something unusual already? I would install https://docs.haskellstack.org/en/stable/README/
2022-02-09 12:20:06 +0100 <byorgey> There's nothing wrong with using cabal directly. stack is nice too. It depends on the use case.
2022-02-09 12:20:43 +0100 <maerwald> geekosaur: no it doesn't
2022-02-09 12:20:45 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Remote host closed the connection)
2022-02-09 12:20:48 +0100 <lottaquestions_> I am new to this whole thing and my mentor suggested Doom Emacs and nixos
2022-02-09 12:20:59 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-09 12:21:05 +0100 <lottaquestions_> But I want to get to the coding part of the language quickly
2022-02-09 12:21:06 +0100 <maerwald> to emulate sandboxes you have to run: cabal --store-dir=$(pwd)/.sandbox build
2022-02-09 12:21:09 +0100 <maerwald> for example
2022-02-09 12:21:16 +0100 <lottaquestions_> with minimal setup
2022-02-09 12:21:22 +0100 <Gurkenglas_> lortabac, singletons only if brave because it's powerful-but-more-scary in its... likelihood to throw me hard-to-interpret errors?
2022-02-09 12:22:10 +0100 <Gurkenglas_> lottaquestions_, do you use some sort of IDE, like VSCode, or more something like notepad
2022-02-09 12:22:11 +0100foul_owl(~kerry@23.82.193.78)
2022-02-09 12:22:24 +0100 <lottaquestions_> I am an emacs guy
2022-02-09 12:22:39 +0100 <lottaquestions_> coming from a CL background
2022-02-09 12:22:58 +0100 <lottaquestions_> so was thinking something along the lines of Emacs+Slime but for Haskell
2022-02-09 12:23:02 +0100 <yushyin> lottaquestions_: https://cabal.readthedocs.io/en/3.6/getting-started.html
2022-02-09 12:23:24 +0100 <Gurkenglas_> Common Lisp? Command Line?
2022-02-09 12:23:33 +0100 <lottaquestions_> Common Lisp
2022-02-09 12:25:28 +0100DNH(~DNH@2a02:8108:1100:16d8:adf2:7fd4:5ba2:8512) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-09 12:26:01 +0100 <Gurkenglas_> uhhh maybe this https://github.com/emacs-lsp/lsp-haskell for the "make emacs a haskell ide"
2022-02-09 12:26:26 +0100 <lottaquestions_> yushyin: Thanks.
2022-02-09 12:26:42 +0100 <lottaquestions_> Gurkenglas_: Thanks
2022-02-09 12:27:38 +0100 <Gurkenglas_> In singletons, why is Demote Nat Natural rather than Nat?
2022-02-09 12:32:03 +0100jalil(~jalil@pop.92-184-110-73.mobile.abo.orange.fr)
2022-02-09 12:36:27 +0100foul_owl(~kerry@23.82.193.78) (Ping timeout: 256 seconds)
2022-02-09 12:36:27 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!)
2022-02-09 12:36:36 +0100jalil(~jalil@pop.92-184-110-73.mobile.abo.orange.fr) (Ping timeout: 245 seconds)
2022-02-09 12:42:36 +0100 <lortabac> Gurkenglas_: because Nat used to be a different type, not very useful at runtime
2022-02-09 12:43:02 +0100 <lortabac> but, since base 4.15, type Nat = Natural
2022-02-09 12:43:39 +0100 <Gurkenglas_> phew
2022-02-09 12:44:49 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2022-02-09 12:44:52 +0100cynomys(~cynomys@user/cynomys)
2022-02-09 12:45:10 +0100 <Gurkenglas_> https://richarde.dev/papers/2012/singletons/paper.pdf <- "Any is an analogue of⊥at the type level" <- huh. I would have identified Any not by "this is in each kind" but by "this is the union of all elements of its kind". does "a is less defined than b" correspond, not to a->b, but to b->a ?
2022-02-09 12:45:43 +0100 <dminuoso> Can you delete a package candidate from hackage?
2022-02-09 12:46:16 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 12:46:16 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 12:46:16 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 12:48:02 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
2022-02-09 12:48:19 +0100 <Gurkenglas_> ...the meaning of "singleton" is coming to me now - this is just for building types with just one element, right? By type-level lambdas, I was looking more for something like being able to say \b a -> b instead of Const b a
2022-02-09 12:48:58 +0100 <neverwas> lottaquestions_: re slime, etc. development on haskell-mode seems to be pretty sleepy these days. I've been using this fella's fork, which favors comint for all interactive REPLing: https://github.com/tonyday567/haskell-mode.git (if you're into that sort of thing)
2022-02-09 12:49:17 +0100 <dminuoso> Gurkenglas_: Right. The idea of singletons is that if a type has just one value, then you can demote/promote between them.
2022-02-09 12:49:42 +0100 <dminuoso> So values can be treated as types and vice-versa
2022-02-09 12:50:18 +0100 <dminuoso> In combination with GADTs, pattern matching and some universal quantification you can pull of some fancy tricks with that
2022-02-09 12:50:57 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-02-09 12:51:36 +0100 <Gurkenglas_> So if I have (forall f. f a), how would I apply Const b to that to get out b, by using a type-level lambda instead of Const?
2022-02-09 12:51:55 +0100jco(~jco@90-228-194-139-no542.tbcn.telia.com) (Quit: leaving)
2022-02-09 12:52:21 +0100 <Gurkenglas_> or perhaps by promoting const to the type level
2022-02-09 12:52:26 +0100 <lortabac> Gurkenglas_: with singletons, you can write normal lambdas and the TH magic will generate the appropriate type families and defunctionalized definitions
2022-02-09 12:52:39 +0100 <dminuoso> Ah you mean you're looking for the type level isomorphism `Const B T ~~~ B`?
2022-02-09 12:53:33 +0100 <Gurkenglas_> lortabac, oh, i should have noticed that my eyes had passed over enough documentation words to deduce that
2022-02-09 12:53:34 +0100 <dminuoso> I dont quite understand the question
2022-02-09 12:55:23 +0100 <Gurkenglas_> dminuoso, the question was merely how to construct, say, foo :: (forall f. f a) -> b without the boilerplate of a custom data type. Where Const counts as custom enough ^^
2022-02-09 12:56:04 +0100 <Gurkenglas_> You could imagine that the f required for a particular usecase is significantly more complex than Const b. Like half the things edward kmett does
2022-02-09 12:56:05 +0100 <dminuoso> Sorry I gotta pass. I cant quite parse the intent from that
2022-02-09 12:56:27 +0100 <Gurkenglas_> Fair enough, it's answered.
2022-02-09 12:56:48 +0100pretty_dumm_guy(trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
2022-02-09 12:59:56 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-09 13:01:19 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl)
2022-02-09 13:01:37 +0100cynomys(~cynomys@user/cynomys) (Ping timeout: 240 seconds)
2022-02-09 13:03:13 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-02-09 13:07:36 +0100 <Gurkenglas_> Oh no, singletons-th can't promote (repeat 2)! i suppose one can promote (2:) and then use its fixed point. Does that solve the entire infinities problem?
2022-02-09 13:08:43 +0100vysn(~vysn@user/vysn)
2022-02-09 13:14:20 +0100DNH(~DNH@2a02:8108:1100:16d8:adf2:7fd4:5ba2:8512)
2022-02-09 13:22:09 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-09 13:23:23 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-09 13:28:16 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
2022-02-09 13:44:30 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep)
2022-02-09 13:52:42 +0100jalil(~jalil@lstlambert-656-1-270-247.w90-63.abo.wanadoo.fr)
2022-02-09 13:55:58 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 13:57:44 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-09 13:57:49 +0100chenqisu1(~chenqisu1@183.217.200.249) (Quit: Leaving)
2022-02-09 13:58:27 +0100jalil(~jalil@lstlambert-656-1-270-247.w90-63.abo.wanadoo.fr) (Quit: jalil)
2022-02-09 13:58:46 +0100jalil(~jalil@lstlambert-656-1-270-247.w90-63.abo.wanadoo.fr)
2022-02-09 13:58:59 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2022-02-09 13:59:36 +0100jlamothe(~jlamothe@198.251.61.229)
2022-02-09 13:59:49 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-09 14:00:26 +0100hololeap(~hololeap@user/hololeap)
2022-02-09 14:04:30 +0100 <merijn> Gurkenglas_: <clippy>It looks you're trying to write dependent types, have you considered using Idris? :D </clippy>
2022-02-09 14:05:19 +0100slack1256(~slack1256@191.125.227.212)
2022-02-09 14:06:49 +0100 <Gurkenglas_> merijn, all I wanted was for code to say the likes of "\f d c -> (f d -> c)" instead of "Costar"!
2022-02-09 14:07:49 +0100mvk(~mvk@2607:fea8:5cdc:bf00::5483) (Ping timeout: 240 seconds)
2022-02-09 14:12:17 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-09 14:12:27 +0100Flow(~none@gentoo/developer/flow) (Ping timeout: 250 seconds)
2022-02-09 14:15:02 +0100 <geekosaur> "all I wanted was…" is how you end up on the road to hell
2022-02-09 14:18:41 +0100max22-(~maxime@2a01cb088335980044f7b68859555b87.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds)
2022-02-09 14:18:55 +0100aforemny(~aforemny@static.248.158.34.188.clients.your-server.de) (Quit: ZNC 1.8.2 - https://znc.in)
2022-02-09 14:21:11 +0100 <dminuoso> Okay, so because you dont like Costar, you're now throwing template haskell to generate absurd singletons code at it instead?
2022-02-09 14:21:16 +0100dminuosoponders about that
2022-02-09 14:21:27 +0100aforemny(~aforemny@static.248.158.34.188.clients.your-server.de)
2022-02-09 14:24:27 +0100fvr(uid503686@id-503686.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
2022-02-09 14:31:17 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-02-09 14:32:01 +0100dschrempf(~dominik@mobiledyn-62-240-134-126.mrsn.at)
2022-02-09 14:45:56 +0100max22-(~maxime@2a01cb0883359800886894252541f01e.ipv6.abo.wanadoo.fr)
2022-02-09 14:46:38 +0100 <Gurkenglas_> Not Costar in particular. Would you rather see \a b c -> a b c or a named function with that definition?
2022-02-09 14:47:58 +0100o-90(~o-90@gateway/tor-sasl/o-90)
2022-02-09 14:56:06 +0100Flow(~none@gentoo/developer/flow)
2022-02-09 14:56:20 +0100 <lortabac> Gurkenglas_: this has been discussed recently on this channel, apparently what you are looking for is possible in Idris
2022-02-09 14:57:18 +0100 <lortabac> however I don't know what the implications are in terms of inference, of code readability etc.
2022-02-09 14:58:49 +0100 <lortabac> in Haskell it requires insane complexity, certainly more than Costar or whatever you are trying to avoid
2022-02-09 15:00:27 +0100o-90(~o-90@gateway/tor-sasl/o-90) (Ping timeout: 276 seconds)
2022-02-09 15:00:45 +0100hughjfchen(~hughjfche@vmi556545.contaboserver.net) (Quit: WeeChat 2.8)
2022-02-09 15:01:34 +0100 <lortabac> incidentally, the unsaturated type-families proposal has been accepted, I'm curious to see what will come out of it
2022-02-09 15:02:15 +0100 <Gurkenglas_> i can do Stream to, surely this construction has a name https://gist.github.com/Gurkenglas/137914f5790f0e0390c631f9678832da
2022-02-09 15:02:19 +0100 <Gurkenglas_> *too
2022-02-09 15:03:08 +0100Guest35(~Guest35@node-126p.pool-125-24.dynamic.totinternet.net)
2022-02-09 15:05:07 +0100hughjfchen(~hughjfche@vmi556545.contaboserver.net)
2022-02-09 15:05:34 +0100hololeap(~hololeap@user/hololeap) (Remote host closed the connection)
2022-02-09 15:06:01 +0100slac36430(~slack1256@186.11.25.57)
2022-02-09 15:06:43 +0100dschrempf(~dominik@mobiledyn-62-240-134-126.mrsn.at) (Quit: WeeChat 3.3)
2022-02-09 15:06:55 +0100hololeap(~hololeap@user/hololeap)
2022-02-09 15:07:57 +0100slack1256(~slack1256@191.125.227.212) (Ping timeout: 240 seconds)
2022-02-09 15:09:02 +0100 <Gurkenglas_> huh, it doesn't fit for "newtype CoStream a = CoStream {runCoStream :: forall f. (f a -> a) -> (f a -> f a) -> f a}" though.
2022-02-09 15:09:15 +0100neverfindme(~hayden@158.123.160.43)
2022-02-09 15:09:21 +0100neverfindme(~hayden@158.123.160.43) (Remote host closed the connection)
2022-02-09 15:14:24 +0100shriekingnoise(~shrieking@201.231.16.156)
2022-02-09 15:14:43 +0100 <Guest35> Any help with where to start?? Newbie here..
2022-02-09 15:14:43 +0100 <Guest35> Fill in the definition of the following function, using fst and snd:
2022-02-09 15:14:44 +0100 <Guest35> f :: (a, b) -> (c, d) -> ((b, d), (a, c))
2022-02-09 15:14:44 +0100 <Guest35> f = undefined
2022-02-09 15:16:55 +0100 <Gurkenglas_> Guest35, are you able to write any definition of any function?
2022-02-09 15:20:46 +0100 <Guest35> yes. basics
2022-02-09 15:21:05 +0100 <Guest35> for example. last exercise.
2022-02-09 15:21:06 +0100 <Guest35> isPalindrome :: String->IO()
2022-02-09 15:21:06 +0100 <Guest35> isPalindrome x =
2022-02-09 15:21:07 +0100 <Guest35>     if goodness
2022-02-09 15:21:07 +0100 <Guest35>         then print "yes"
2022-02-09 15:21:08 +0100 <Guest35>     else
2022-02-09 15:21:08 +0100 <Guest35>         print "no"
2022-02-09 15:21:09 +0100 <Guest35>     where goodness =
2022-02-09 15:21:09 +0100 <Guest35>             x == reverse x
2022-02-09 15:21:11 +0100 <Andrew> Don't paste here
2022-02-09 15:21:14 +0100zer0bitz(~zer0bitz@2001:2003:f74d:b800:2df2:1ec5:8dd3:29f0) (Ping timeout: 260 seconds)
2022-02-09 15:21:15 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
2022-02-09 15:21:25 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net)
2022-02-09 15:21:36 +0100 <Andrew> Guest35: That's not a function
2022-02-09 15:21:41 +0100 <Andrew> It's an IO Monad
2022-02-09 15:21:49 +0100 <Gurkenglas_> yes it's a function
2022-02-09 15:22:04 +0100 <Andrew> Oh, my bad.
2022-02-09 15:22:11 +0100 <Andrew> lol silly me
2022-02-09 15:22:30 +0100 <Gurkenglas_> And "an IO Monad" is, uh, not how those words are used :D
2022-02-09 15:22:40 +0100 <Andrew> f (a, b) (c, d) = ((b, d), (a, c))?
2022-02-09 15:22:49 +0100 <Andrew> It returns an IO monad
2022-02-09 15:22:55 +0100 <Andrew> Or, it evaluates to one
2022-02-09 15:22:56 +0100 <Andrew> Better
2022-02-09 15:23:03 +0100rusrushal13(~rusrushal@2405:201:7003:8952:a27c:c592:8e19:8656) (Ping timeout: 256 seconds)
2022-02-09 15:23:07 +0100 <xsperry> not sure if types were included in the excercise, but I'd make isPalindrome `String -> Bool' instead
2022-02-09 15:23:50 +0100 <Gurkenglas_> IO is a monad, IO isn't an adjective about monads.
2022-02-09 15:23:56 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-09 15:24:01 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection)
2022-02-09 15:24:17 +0100 <Guest35> ok.
2022-02-09 15:24:23 +0100adanwan(~adanwan@gateway/tor-sasl/adanwan)
2022-02-09 15:24:27 +0100 <Guest35> any help on where to start
2022-02-09 15:24:41 +0100 <Guest35> and if i dont paste here, then where
2022-02-09 15:24:58 +0100 <Gurkenglas_> Guest35, do you know what the type signature "f :: (a, b) -> (c, d) -> ((b, d), (a, c))" is supposed to tell you?
2022-02-09 15:25:42 +0100 <Guest35> takes a tuple and a tuple and maps it to a tuple?
2022-02-09 15:26:10 +0100 <Gurkenglas_> Sure. Can you write a definition for "g :: a -> b -> (b,a)"?
2022-02-09 15:26:45 +0100ystael(~ystael@user/ystael)
2022-02-09 15:27:23 +0100Ariakenom(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se)
2022-02-09 15:27:50 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr)
2022-02-09 15:28:37 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection)
2022-02-09 15:28:53 +0100 <merijn> Gurkenglas_: Here, save yourself the trouble trying to articulate the thing you're trying to articulate: https://blog.jle.im/entry/io-monad-considered-harmful.html
2022-02-09 15:29:06 +0100 <merijn> Andrew: See above ;)
2022-02-09 15:29:28 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-09 15:29:49 +0100slac36430(~slack1256@186.11.25.57) (Ping timeout: 250 seconds)
2022-02-09 15:30:11 +0100slack1256(~slack1256@191.125.227.212)
2022-02-09 15:30:22 +0100 <Andrew> :(
2022-02-09 15:30:33 +0100 <Andrew> I use them a lot
2022-02-09 15:30:43 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net)
2022-02-09 15:31:01 +0100 <Andrew> Gurkenglas_: Yeah? IO is an monad, so I call it a IO monad
2022-02-09 15:31:04 +0100haskell_(~haskell@65-102-32-32.ptld.qwest.net) (Remote host closed the connection)
2022-02-09 15:31:05 +0100 <Andrew> Whatever, English
2022-02-09 15:31:22 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 15:31:22 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 15:31:22 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 15:31:24 +0100 <merijn> Andrew: That blog posts clarifies why that's not great usage
2022-02-09 15:31:37 +0100 <Andrew> sure
2022-02-09 15:31:50 +0100 <geekosaur> imo it misleads people into thinking the Monad is what makes IO special, when IO is special because it is IO
2022-02-09 15:31:58 +0100 <geekosaur> all the Monad part does is enforce sequencing
2022-02-09 15:32:16 +0100 <Andrew> Well, yeah
2022-02-09 15:32:36 +0100 <Guest35> g (a,b) = (b,a)?
2022-02-09 15:32:36 +0100 <Gurkenglas_> merijn, not what I meant - i wouldn't have complained if he said that it has something to do with the IO monad, but using "an IO monad" to refer to a value of type `IO ()` confuses the fact that the thing that's supposed to have something to do with the word "monad" there is the one, the only, "IO"
2022-02-09 15:33:05 +0100 <geekosaur> Guest35, almost but not quite.
2022-02-09 15:33:18 +0100 <Gurkenglas_> Guest35, almost. That's (a,b) -> (b,a)
2022-02-09 15:33:41 +0100 <Andrew> g a b = (b,a)
2022-02-09 15:33:44 +0100 <Gurkenglas_> as in, an implementation of g :: (a,b) -> (b,a)
2022-02-09 15:34:02 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
2022-02-09 15:34:18 +0100 <Andrew> Guest35: (Fake) multiple parameters aren't tuples
2022-02-09 15:34:43 +0100 <Gurkenglas_> Andrew, don't spoil the puzzle :D though it's not much of a puzzle, Guest isn't supposed to have to guess the *syntax* of the language.
2022-02-09 15:34:53 +0100 <Andrew> ... If you put them in tuple-like things that's gonna look weird once you have currying.
2022-02-09 15:35:20 +0100 <Andrew> My fault :D
2022-02-09 15:35:29 +0100 <Guest35> hmmm.
2022-02-09 15:36:07 +0100 <Guest35> so i have no coding experience. just starting reading and trying out exercises the last 3 days.
2022-02-09 15:36:16 +0100 <Guest35> dont get too far ahead of me
2022-02-09 15:36:47 +0100 <Andrew> Guest35: It's okay :)
2022-02-09 15:37:00 +0100 <merijn> Gurkenglas_: That's literally what the blog is about, though ;)
2022-02-09 15:37:10 +0100 <Andrew> Guest35: it's also good to have Haskell as a first language, because you won't be brainwashed by the imperative stuff lol
2022-02-09 15:37:16 +0100 <geekosaur> this is a place where you'reliableto make mistakes because Haskell is unlike most other languages in this regard
2022-02-09 15:37:18 +0100 <Gurkenglas_> Guest35, the implementation of "f :: (a, b) -> (c, d) -> ((b, d), (a, c))" is going to start with "f ab cd = " this time, and you are supposed to use the functions "fst :: (x,y) -> x" and "snd :: (x,y) -> y". Can you assemble the part of f's implementation to the right of =?
2022-02-09 15:37:26 +0100 <Andrew> (Haskell is a functional language)
2022-02-09 15:38:01 +0100 <Andrew> Oh, silly me, I didn't use fst and stuff
2022-02-09 15:38:06 +0100 <Andrew> I always use pattern matching
2022-02-09 15:39:13 +0100 <Guest35> Gurkenglas_:  ill try. so what is the f ab cd telling me? same as "f (a,b) (c,d)" just short notation?
2022-02-09 15:39:21 +0100 <Gurkenglas_> Me too, let's hope the exercises he's doing won't instill the habit not to pattern-match in him.
2022-02-09 15:39:46 +0100Erutuon(~Erutuon@user/erutuon) (Quit: WeeChat 2.8)
2022-02-09 15:40:38 +0100 <Gurkenglas_> Guest35, "f ab cd = " makes it so that instead of having values of type a and b to work with, you only have a value ab of type (a,b). This is worse, since you plan to use a and b for other things. So you'll have to use fst and snd to get them out of the ab.
2022-02-09 15:40:45 +0100 <Guest35> im working from the text. Haskell Programming From First Principles
2022-02-09 15:40:45 +0100 <Guest35> by Christopher Allen https://www.goodreads.com/en/book/show/25587599-haskell-programming-from-first-principles
2022-02-09 15:41:17 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-02-09 15:41:34 +0100 <Andrew> I think that book is a good one
2022-02-09 15:43:33 +0100 <Gurkenglas_> merijn, I disagree! The blog tells people not to mention the word monad to newbies, my nitpick was that the usage of the term monad was technically incorrect.
2022-02-09 15:44:44 +0100Andrewagrees with Gurkenglas_ on this point
2022-02-09 15:49:36 +0100 <Guest35> ok just showing my thinking. i know this is wrong. but i want to type.  g :: (a,b) -> (b,a)     g ab = snd g, fst g
2022-02-09 15:49:52 +0100 <ski> you're almost there
2022-02-09 15:49:53 +0100 <Andrew> tuples?
2022-02-09 15:49:58 +0100 <Andrew> They need (parens)
2022-02-09 15:50:13 +0100 <Andrew> g a b = (snd g, fst g)
2022-02-09 15:50:40 +0100 <Gurkenglas_> Andrew, typos.
2022-02-09 15:50:44 +0100 <ski> what is `g' in `snd g' ?
2022-02-09 15:51:18 +0100 <Andrew> xD
2022-02-09 15:51:35 +0100 <Andrew> Wasn't paying attentions
2022-02-09 15:51:47 +0100 <Andrew> ~~you might do that with lisp macros~~
2022-02-09 15:51:52 +0100jao(~jao@66.63.167.168)
2022-02-09 15:52:06 +0100fef(~thedawn@user/thedawn)
2022-02-09 15:52:13 +0100skilooks at Guest35
2022-02-09 15:53:47 +0100 <Guest35> ab?
2022-02-09 15:55:06 +0100 <ski> what is `ab' ?
2022-02-09 15:56:21 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
2022-02-09 15:56:52 +0100slack1135(~slack1256@186.11.25.57)
2022-02-09 15:57:15 +0100 <Guest35> the parameters of g?
2022-02-09 15:57:27 +0100 <akhesacaro> Gurkenglas_: With my student I use the word "Chainable" instead of Monad :p
2022-02-09 15:57:36 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo)
2022-02-09 15:57:51 +0100pavonia(~user@user/siracusa)
2022-02-09 15:58:41 +0100 <Gurkenglas_> akhesacaro, you misunderstand. I would also complain if someone called "print 12" "an IO Chainable"
2022-02-09 15:58:59 +0100 <janus> i think ab is a value of type (a,b) that Gurkenglas_ describes
2022-02-09 15:59:19 +0100akegalj(~akegalj@141-136-168-212.dsl.iskon.hr) (Quit: leaving)
2022-02-09 15:59:20 +0100slack1256(~slack1256@191.125.227.212) (Ping timeout: 252 seconds)
2022-02-09 16:00:58 +0100 <Gurkenglas_> Maybe it would have been prudent not to use exactly the same names for a variable and its type ._.
2022-02-09 16:00:59 +0100 <ski> Guest35 : that's what `ab' is, in the context of `g ab'. it's what rôle it fills, in this context. it's not what it is, in itself
2022-02-09 16:01:04 +0100 <merijn> akhesacaro: The thing is that "being a Monad" is a property of a type (like 'IO') it doesn't say anything useful about *values*
2022-02-09 16:01:40 +0100 <merijn> akhesacaro: getLine is "an IO action" monads play no role there
2022-02-09 16:01:46 +0100 <ski> Guest35 : `ab' is a pair
2022-02-09 16:01:50 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-09 16:04:06 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-09 16:04:16 +0100 <Gurkenglas_> merijn, IO isn't a type, types are that which has kind * :P. IO has kind *->*
2022-02-09 16:04:39 +0100skiglances around nervously
2022-02-09 16:04:46 +0100 <Guest35> let me ask the original q again. i think maybe my goal isnt obvious anymore.
2022-02-09 16:04:46 +0100 <Guest35> Fill in the definition of the following function, using fst and snd:
2022-02-09 16:04:47 +0100 <Guest35> f :: (a, b) -> (c, d) -> ((b, d), (a, c))
2022-02-09 16:04:47 +0100 <Guest35> f =
2022-02-09 16:05:24 +0100 <ski> so, what is *your* question, at the moment ?
2022-02-09 16:05:50 +0100 <Gurkenglas_> Guest35, Note that you are also supposed to write something to the left of that =
2022-02-09 16:05:52 +0100 <Guest35> any hints without giving it away lol
2022-02-09 16:06:00 +0100skialso agrees with `IO' being a type
2022-02-09 16:06:14 +0100 <ski> Guest35 : which was your latest attempt ?
2022-02-09 16:06:44 +0100 <Guest35> f :: (a,b)->(c,d)->((b,d),(a,c))
2022-02-09 16:06:45 +0100 <Guest35> f (a, b) (c, d) = ((b, d), (a, c))
2022-02-09 16:06:50 +0100 <Guest35> but this doesnt use fst or snd
2022-02-09 16:06:53 +0100 <ski> yea
2022-02-09 16:07:13 +0100 <ski> i didn't see you finish the `g :: (a,b) -> (b,a)' one
2022-02-09 16:07:18 +0100 <ski> did you ?
2022-02-09 16:07:28 +0100 <Gurkenglas_> Huh, I didn't know people disagree that * is the kind of types. I suppose it's good to have a name for the union of those kinds.
2022-02-09 16:07:43 +0100 <Gurkenglas_> ski, are constraints also types?
2022-02-09 16:08:14 +0100jao(~jao@66.63.167.168) (Remote host closed the connection)
2022-02-09 16:08:24 +0100 <akhesacaro> Guest35, you've deconstructed the tuple too much
2022-02-09 16:08:38 +0100 <ski> Gurkenglas_ : sure, at least with `ConstraintKinds'
2022-02-09 16:08:42 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
2022-02-09 16:08:43 +0100 <geekosaur> the problem with * being the kind of types is that it takes away * as a type operator, so people prefer Type these days
2022-02-09 16:09:07 +0100jao(~jao@66.63.167.168)
2022-02-09 16:09:34 +0100 <Gurkenglas_> geekosaur, uh. Does Type contain IO?
2022-02-09 16:09:38 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41)
2022-02-09 16:09:52 +0100 <geekosaur> no,IO is Type -> Type
2022-02-09 16:09:56 +0100 <merijn> Gurkenglas_: Hard disagree
2022-02-09 16:10:00 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 16:10:00 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 16:10:00 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 16:10:04 +0100 <merijn> Gurkenglas_: IO very much is a type
2022-02-09 16:10:04 +0100 <ski> Gurkenglas_ : anyway, people used to say that `Either String' is not a type, but a type constructor. hence `Functor' is not a type class, but a constructor class. however, i think it's more useful to regard it as a type (and i use "type constructor" to not include `Either String')
2022-02-09 16:10:15 +0100 <Guest35> no.
2022-02-09 16:10:28 +0100 <merijn> I don't acknowledge Type as a thing anyway, because TypeInType is lunacy
2022-02-09 16:10:29 +0100 <geekosaur> guess there's still terminology disagreement
2022-02-09 16:10:31 +0100 <Guest35> bc im stuck lol
2022-02-09 16:10:31 +0100slack1256(~slack1256@191.125.227.212)
2022-02-09 16:11:04 +0100 <ski> Guest35 : it might help you if you finish this `g' first
2022-02-09 16:11:09 +0100 <ski> last i saw was
2022-02-09 16:11:17 +0100 <ski> <Guest35> ok just showing my thinking. i know this is wrong. but i want to type.  g :: (a,b) -> (b,a)     g ab = snd g, fst g
2022-02-09 16:11:28 +0100 <ski> which is close but no chocolate yet
2022-02-09 16:11:46 +0100 <Guest35> but i want chocolate
2022-02-09 16:11:50 +0100skismile
2022-02-09 16:12:12 +0100 <ski> <ski> what is `g' in `snd g' ?
2022-02-09 16:12:21 +0100 <ski> Guest35 : what about this question ^ ?
2022-02-09 16:12:25 +0100 <Guest35> i need a where statement?  where g =
2022-02-09 16:12:37 +0100 <ski> no, you don't need that here
2022-02-09 16:12:41 +0100 <akhesacaro> Guest35 no need a where here :p
2022-02-09 16:12:44 +0100 <merijn> Gurkenglas_: Consider this: Would you argue that 'f' (with "f :: Foo -> Bar") is not a value, because 'bar' (with 'bar :: Bar') is a value?
2022-02-09 16:12:55 +0100slack1135(~slack1256@186.11.25.57) (Ping timeout: 256 seconds)
2022-02-09 16:13:07 +0100 <Gurkenglas_> I'm willing to accept that we call IO a type, I'd also be willing to say Type instead of *, but both of those doesn't work, there needs to be some name for * is
2022-02-09 16:13:20 +0100 <Gurkenglas_> -is
2022-02-09 16:13:35 +0100skitends to call it "concrete type" .. but some people don't like that term
2022-02-09 16:13:41 +0100 <merijn> Like me ;)
2022-02-09 16:13:44 +0100skismiles
2022-02-09 16:14:18 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-09 16:14:22 +0100 <merijn> tbh, I dislike the use of Type and find the lack of * as type level operator acceptable, so I will just be a Luddite and stick to *
2022-02-09 16:14:44 +0100 <ski> o/
2022-02-09 16:15:10 +0100 <merijn> And much like Luddites are portrayed as "backwards" while really having pretty sensible ideas/motivations for their behaviour, so do I ;)
2022-02-09 16:15:34 +0100 <Gurkenglas_> just like presheaves
2022-02-09 16:15:48 +0100skilooks at Guest35
2022-02-09 16:15:54 +0100 <akhesacaro> Guest35, if the functions _fst_ and _snd_ take a tuple as parameter, you need to not deconstruct it and put it into a variable to pass it to your functions.
2022-02-09 16:16:47 +0100 <Guest35> what would it look like in my terminal. g "high" 5  would return (5, "high")
2022-02-09 16:17:05 +0100 <ski> g ("high,5) -- rather
2022-02-09 16:17:36 +0100 <Guest35> g("high",5)?
2022-02-09 16:17:39 +0100 <Ariakenom> I don't care about using up * as an operator. I think * is a bad name though.
2022-02-09 16:18:08 +0100 <ski> i prefer it with a space, `g ("high",5)' . you're not passing two parameters to `g', you're passing a single one, which happens to be a pair
2022-02-09 16:18:23 +0100 <ski> so, for that call, `ab' would become the pair `("high",5)'
2022-02-09 16:18:30 +0100 <merijn> Ariakenom: Why? Most of the literature uses it
2022-02-09 16:18:50 +0100 <Gurkenglas_> Ariakenom, what pair of names do you suggest for * and the thing that both Int and IO are?
2022-02-09 16:19:18 +0100Sgeo(~Sgeo@user/sgeo)
2022-02-09 16:19:34 +0100 <ski> Gurkenglas_ : now, for `g ab = snd g, fst g', if `ab' becomes `("high",5)', how could the result (which you've written as `snd g, fst g') become the pair `(5,"high")' ?
2022-02-09 16:19:39 +0100 <ski> er, Guest35 ^
2022-02-09 16:20:40 +0100Gurkenglas_.oO(type-level value)
2022-02-09 16:21:10 +0100 <merijn> Gurkenglas_: IO isn't *, though :p It's * -> * :p
2022-02-09 16:21:14 +0100k8yun(~k8yun@user/k8yun)
2022-02-09 16:21:32 +0100 <Gurkenglas_> merijn, I didn't claim otherwise, i asked for a pair of names for those two separate concepts
2022-02-09 16:22:15 +0100 <Ariakenom> I just don't like that it isn't alphanumerical. Star would be fine by me.
2022-02-09 16:22:19 +0100 <merijn> If you wanna solve the hierarchy problem, you should just go the stratification solution from Extended CoC (like Coq and (I think?) Agda use)
2022-02-09 16:22:34 +0100 <merijn> TypeInType is a stupid shortcut that confuses human brains
2022-02-09 16:22:40 +0100 <merijn> At least mine :p
2022-02-09 16:23:07 +0100geekosaurwonders how Ωmega solves this
2022-02-09 16:23:08 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 250 seconds)
2022-02-09 16:23:24 +0100 <Ariakenom> alphanumerical isn't quite right but you get the point. not what would be an operator on the value level
2022-02-09 16:23:33 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-09 16:23:36 +0100 <merijn> Easy, unicode star :p
2022-02-09 16:23:53 +0100 <Ariakenom> -.-
2022-02-09 16:24:02 +0100skiuses a five-pointed star, in hand-writing
2022-02-09 16:24:41 +0100 <Gurkenglas_> use x >:D
2022-02-09 16:24:59 +0100 <Ariakenom> I don't dislike type in type. Can I get an example for when it's terrible?
2022-02-09 16:25:15 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-09 16:25:46 +0100 <merijn> Ariakenom: It makes reading type level stuff very confusing because it ends up all being Type
2022-02-09 16:25:54 +0100 <Gurkenglas_> Ariakenom, the basic argument against is russel's paradox
2022-02-09 16:26:15 +0100 <merijn> Ariakenom: The "proper" solution is to (instead of collapsing everything into types) is to have an infinite hierarchy of types
2022-02-09 16:26:36 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net)
2022-02-09 16:27:37 +0100skiidly wonders how Guest35 is faring with the problem
2022-02-09 16:27:38 +0100 <merijn> Ariakenom: So values have types, the "type" of Type_0, then an Type_1 is "all of Type_0 *plus* things that include Type_0 itself)
2022-02-09 16:27:39 +0100 <Gurkenglas_> (i'd guess you can also prevent russel's paradox by not letting people define subtypes via predicates)
2022-02-09 16:27:49 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Ping timeout: 240 seconds)
2022-02-09 16:27:55 +0100 <merijn> and Type_2 is Type_1 *plus* all things using Type_1 itself
2022-02-09 16:28:09 +0100 <Gurkenglas_> merijn, why plus instead of making them all disjoint?
2022-02-09 16:28:11 +0100 <Ariakenom> example pls
2022-02-09 16:28:52 +0100 <merijn> Ariakenom: ok, so suppose we have "data Foo (f :: * -> *) = ..."
2022-02-09 16:29:01 +0100 <ski> well, one might want to be able to say things like `Integer -> Type_0'
2022-02-09 16:29:15 +0100 <merijn> Now, say we use Type_0 instead of *
2022-02-09 16:29:35 +0100 <merijn> so "data Foo (f :: Type_0 -> Type_0)"
2022-02-09 16:29:43 +0100 <merijn> With "Int :: Type_0"
2022-02-09 16:30:38 +0100 <merijn> So "Foo :: (Type_0 -> Type_0) -> Type_0"
2022-02-09 16:30:57 +0100 <merijn> But "(Type_0 -> Type_0) -> Type_0 :: Type_1"
2022-02-09 16:31:20 +0100 <merijn> Gurkenglas_: What ski said, yes
2022-02-09 16:31:35 +0100 <janus> will haskell get a universe hierarchy too?
2022-02-09 16:32:01 +0100 <Gurkenglas_> ski, then you should work with a surjection Type_1 -> Type_0, right? To forget the Type_1 structure of Tupe_0 so you can let it play in the Type_0 pool with Integer
2022-02-09 16:33:07 +0100 <ski> i don't see how that surjection would work
2022-02-09 16:33:10 +0100 <merijn> janus: No
2022-02-09 16:33:11 +0100 <Gurkenglas_> rather than an injection Type_0 -> Type_1
2022-02-09 16:33:23 +0100 <ski> what would that surjection, applied to `Type_0', yield ?
2022-02-09 16:33:34 +0100 <ski> yea, that's better, then
2022-02-09 16:33:39 +0100 <janus> merijn: what you're talking about, is a universe hierarchy, right? why would haskell not get one if it gets DT?
2022-02-09 16:34:19 +0100 <ski> Gurkenglas_ : so one can either use such implicit injections, or use cumulative hierarchy
2022-02-09 16:34:19 +0100 <merijn> janus: Because GHC currently has TypeInType instead of universe hierarchy
2022-02-09 16:34:24 +0100 <merijn> janus: aka the hacky solution
2022-02-09 16:34:36 +0100 <janus> ah, but if it's hacky, surely they will get rid of it
2022-02-09 16:34:38 +0100 <merijn> janus: And it makes no sense to build that if you plan to do it properly later
2022-02-09 16:34:44 +0100 <janus> oh my
2022-02-09 16:34:57 +0100 <Gurkenglas_> ski, it would yield the type_0 of type_0s, which has all the objects in it and none of the functions
2022-02-09 16:34:59 +0100 <merijn> janus: Doubt it, it's not like the universe approach is a new solution
2022-02-09 16:35:05 +0100 <geekosaur> thing also is, ghc used to do it properly
2022-02-09 16:35:07 +0100 <merijn> janus: Also, depends on how you view "Haskell"
2022-02-09 16:35:16 +0100 <geekosaur> kinds were a thing but not conflated with types
2022-02-09 16:35:18 +0100zer0bitz(~zer0bitz@2001:2003:f74d:b800:a89e:b347:cccb:c7e5)
2022-02-09 16:35:21 +0100 <janus> merijn: haskell is coq, but different
2022-02-09 16:35:23 +0100 <merijn> janus: The odds of *Haskell* getting dependent types are near 0
2022-02-09 16:35:29 +0100 <geekosaur> and sorts were at least conceptually a thing
2022-02-09 16:35:39 +0100 <Gurkenglas_> (or am i wrongly imagining the analogy Type_0 vs. Set as Type_1 vs. Cat?)
2022-02-09 16:35:40 +0100 <ski> Gurkenglas_ : i don't follow what that means
2022-02-09 16:35:42 +0100 <merijn> janus: GHC *may* get Dependent Types (although it's debatable whether that's a good thing)
2022-02-09 16:35:44 +0100 <geekosaur> (they kept changing though)
2022-02-09 16:35:51 +0100 <ski> (are you still talking about the surjection ?)
2022-02-09 16:36:04 +0100 <geekosaur> at one point there was BOX
2022-02-09 16:36:08 +0100shailangsa(~shailangs@host86-185-98-37.range86-185.btcentralplus.com) (Remote host closed the connection)
2022-02-09 16:36:09 +0100 <merijn> janus: GHC uses to have types :: kinds, kinds :: sort (but only one sort BOX)
2022-02-09 16:36:28 +0100 <merijn> janus: TypeInType was introduced to eliminate that to make room for various dependent Haskell experiments
2022-02-09 16:37:03 +0100 <janus> but maybe the experiements will fail and they will decide the universe hierarchy is the best way to go?
2022-02-09 16:37:23 +0100 <Gurkenglas_> geekosaur, why should ghc treat types differently from kinds at all? of course one needs to track which one one currently is looking at to prevent paradox, but shouldnt one be able to use all the same code in each case
2022-02-09 16:37:49 +0100 <geekosaur> "track which one one currently is looking at"
2022-02-09 16:38:17 +0100 <geekosaur> ghc even conflates to some extent values with types by not requiring ticks on promoted DataKinda
2022-02-09 16:38:21 +0100 <geekosaur> *DataKinds
2022-02-09 16:38:41 +0100 <geekosaur> it's *really* confusing for someone trying to keep track of what level each thing is
2022-02-09 16:38:56 +0100 <Ariakenom> hm was the example finished?
2022-02-09 16:38:58 +0100 <Gurkenglas_> for tracking, i'd think all you need to do is have an integer attached that says what level of the hierarchy this is
2022-02-09 16:39:05 +0100Guest35(~Guest35@node-126p.pool-125-24.dynamic.totinternet.net) (Quit: Client closed)
2022-02-09 16:39:37 +0100 <janus> geekosaur: there is -Wunticked-promoted-constructors and it is part of -Wall
2022-02-09 16:39:48 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-09 16:39:58 +0100 <geekosaur> we had someone in here yesterday who got caught by this, they were working with a promoted type but kept trying to treat its promoted type constructors as data constructors and couldn't understand ghc's error messages
2022-02-09 16:40:08 +0100 <merijn> Gurkenglas_: Yes, which is exactly what the *right* solution is, in a mathematical sense
2022-02-09 16:40:14 +0100 <merijn> Gurkenglas_: But that's not what GHC does
2022-02-09 16:41:46 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-09 16:41:52 +0100sleblanc(~sleblanc@user/sleblanc)
2022-02-09 16:42:34 +0100ec(~ec@gateway/tor-sasl/ec)
2022-02-09 16:43:16 +0100 <Gurkenglas_> and then there's the language Haskell_o for every ordinal number o, and GHC_{o+1} can't compile itself but can compile GHC_o. And then eventually we run out of descent, and someone panics and tries to use that it works for all the ordinals anyway, and then we're back to inconsistency
2022-02-09 16:43:48 +0100tdammers(~tdammers@77.109.72.177.res.static.edpnet.net)
2022-02-09 16:45:47 +0100 <Gurkenglas_> ski, Type_0 would presumably be mapped to a Type_0 that contains such values as String, Int, [a] for every element, and so on
2022-02-09 16:47:03 +0100mvk(~mvk@2607:fea8:5cdc:bf00::5483)
2022-02-09 16:47:53 +0100 <Gurkenglas_> Ohh, you presumably want to then use the outputs of Integer -> Type_0 as types. Yeah, that'll need the injection.
2022-02-09 16:49:12 +0100 <Gurkenglas_> merijn, sounds easy to go from TypeInType to that *right* solution, so we should promote TypeInType at the expense of all the code duplication, right?
2022-02-09 16:49:39 +0100 <Gurkenglas_> And then eventually someone adds ordinals with a 7-line patch
2022-02-09 16:50:56 +0100shapr`(~user@pool-173-73-44-186.washdc.fios.verizon.net)
2022-02-09 16:52:17 +0100shapr(~user@pool-173-73-44-186.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
2022-02-09 16:52:53 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-09 16:55:03 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:55:18 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:55:24 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:55:38 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:55:46 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:56:02 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:56:09 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:56:17 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds)
2022-02-09 16:56:23 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:56:30 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:56:44 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:56:52 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:57:07 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:57:13 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:57:27 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:57:35 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:57:48 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:57:56 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:58:11 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:58:18 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:58:32 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:58:39 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:58:54 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:59:02 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:59:17 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:59:24 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 16:59:38 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 16:59:46 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 17:00:01 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 17:00:09 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 17:00:24 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 17:00:31 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 17:00:45 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 17:00:52 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 17:01:06 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 17:01:14 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 17:01:30 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 17:01:36 +0100 <[exa]> lavaman: your connection seems to be breaking
2022-02-09 17:01:37 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 17:01:52 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 17:02:00 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 17:02:01 +0100__monty__(~toonn@user/toonn)
2022-02-09 17:02:02 +0100ChanServ+o geekosaur
2022-02-09 17:02:11 +0100cstml(~cstml@user/cstml)
2022-02-09 17:02:15 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 17:02:18 +0100geekosaur+b *!*@98.38.249.169
2022-02-09 17:02:22 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 17:03:51 +0100merijn(~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-09 17:04:41 +0100lortabac(~lortabac@2a01:e0a:541:b8f0:cb78:26c4:6167:fc4) (Quit: WeeChat 2.8)
2022-02-09 17:05:01 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 17:06:01 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl)
2022-02-09 17:09:27 +0100n3rdy1(~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
2022-02-09 17:09:50 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-09 17:14:08 +0100xff0x(~xff0x@2001:1a81:5384:400:cf7c:5041:a517:d608) (Ping timeout: 252 seconds)
2022-02-09 17:14:51 +0100xff0x(~xff0x@2001:1a81:5384:400:77b6:98fb:61ba:7d90)
2022-02-09 17:17:24 +0100ChanServ+o litharge
2022-02-09 17:17:25 +0100litharge-bo *!*@98.38.249.169 litharge
2022-02-09 17:17:57 +0100AlexisTP(~AlexisTP@92.57.44.63) (Ping timeout: 240 seconds)
2022-02-09 17:19:19 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-09 17:20:34 +0100mbuf(~Shakthi@171.61.235.32) (Quit: Leaving)
2022-02-09 17:21:03 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-09 17:25:27 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 256 seconds)
2022-02-09 17:28:45 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
2022-02-09 17:31:03 +0100biberu(~biberu@user/biberu) (Read error: Connection reset by peer)
2022-02-09 17:31:16 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 17:34:51 +0100caubert_(~caubert@136.244.111.235) (Quit: WeeChat 3.4)
2022-02-09 17:35:00 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-09 17:35:06 +0100caubert(~caubert@136.244.111.235)
2022-02-09 17:35:30 +0100son0p(~ff@181.136.122.143) (Remote host closed the connection)
2022-02-09 17:44:11 +0100jinsun__(~quassel@user/jinsun)
2022-02-09 17:44:43 +0100jinsun(~quassel@user/jinsun) (Ping timeout: 256 seconds)
2022-02-09 17:47:14 +0100slac66959(~slack1256@186.11.25.249)
2022-02-09 17:48:09 +0100fef(~thedawn@user/thedawn) (Ping timeout: 276 seconds)
2022-02-09 17:49:10 +0100ph88(~ph88@2a02:8109:9e00:71d0:713a:ad1d:dd0:bdcc) (Remote host closed the connection)
2022-02-09 17:49:17 +0100slack1256(~slack1256@191.125.227.212) (Ping timeout: 240 seconds)
2022-02-09 17:49:28 +0100ph88(~ph88@2a02:8109:9e00:71d0:980:dccb:621a:6731)
2022-02-09 17:49:32 +0100zebrag(~chris@user/zebrag)
2022-02-09 17:49:56 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 245 seconds)
2022-02-09 17:52:42 +0100Akiva(~Akiva@user/Akiva)
2022-02-09 17:56:04 +0100safinaskar(~quassel@109.252.91.116)
2022-02-09 17:56:44 +0100justsomeguy(~justsomeg@user/justsomeguy)
2022-02-09 17:57:39 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Remote host closed the connection)
2022-02-09 17:57:42 +0100 <justsomeguy> What's an easy way to pretty print a list?
2022-02-09 17:58:11 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net)
2022-02-09 17:58:31 +0100 <safinaskar> is there some tool in wide use for sharing reproducible environments? i. e. i want to write some code snippet, share it on IRC or some bug report and be sure that receiver will run this code in the same environment with same tools installed. Theoretically, I can use docker for this. I. e. write dockerfile, paste it to pastebin and share in irc. But it seems nobody does this. Why? People use some other tool?
2022-02-09 17:58:52 +0100 <safinaskar> justsomeguy: "show"?
2022-02-09 17:59:07 +0100 <c_wraith> safinaskar: in theory, nix does that
2022-02-09 18:00:20 +0100 <[exa]> justsomeguy: how much pretty do you want it? `pretty` package does it nice, there's even generics support so that you don't need to instance everything
2022-02-09 18:00:35 +0100merijn(~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
2022-02-09 18:00:36 +0100biberu(~biberu@user/biberu)
2022-02-09 18:01:09 +0100 <[exa]> safinaskar: most code snippets are either sufficiently reproducible by itself, or fixed when the person tries to create the reproducible environment.
2022-02-09 18:01:49 +0100 <justsomeguy> It will be nice if I can control the layout a little - like setting the max width so it fits in my terminal emulator, and if the list elements can be aligned. I'm looking at the docs for pretty now...
2022-02-09 18:01:55 +0100 <geekosaur> there are online environments like repl.it
2022-02-09 18:02:14 +0100 <DigitalKiwi> doesn't repl.it use nix or am i thinking of something else
2022-02-09 18:02:31 +0100DigitalKiwisaw a tweet a few days ago
2022-02-09 18:02:47 +0100 <geekosaur> or godbolt.org
2022-02-09 18:02:58 +0100 <geekosaur> they generally require accounts though
2022-02-09 18:03:08 +0100 <safinaskar> ok, thanks
2022-02-09 18:04:20 +0100 <DigitalKiwi> https://gist.github.com/Kiwi/ffc08bffb15798dc4b1ec2a1c47c6191#file-program-cabal-hs
2022-02-09 18:04:22 +0100 <geekosaur> docker's really heavyweight for this kind of thing. a nix expression would probably work
2022-02-09 18:04:44 +0100 <DigitalKiwi> this can be modified to use a specific channel or pinned
2022-02-09 18:06:11 +0100 <DigitalKiwi> https://gist.github.com/Kiwi/92415b46d58bfce34f7773944b6dcc67 early version of my paste client when it was only one file lol
2022-02-09 18:07:31 +0100jalil(~jalil@lstlambert-656-1-270-247.w90-63.abo.wanadoo.fr) (Quit: jalil)
2022-02-09 18:07:51 +0100jinsun__(~quassel@user/jinsun) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
2022-02-09 18:08:42 +0100 <DigitalKiwi> https://mostlyabsurd.com/files/snake_ToTitle
2022-02-09 18:09:10 +0100 <DigitalKiwi> https://dpaste.com/3CZMFPQH7
2022-02-09 18:11:17 +0100jinsun(~quassel@user/jinsun)
2022-02-09 18:13:16 +0100zopsi(~zopsi@104-237-136-227.ip.linodeusercontent.com)
2022-02-09 18:14:15 +0100MajorBiscuit(~MajorBisc@c-001-013-035.client.tudelft.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-09 18:17:37 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Ping timeout: 240 seconds)
2022-02-09 18:17:48 +0100whound(~dust@2409:4071:d13:8d27:350a:4519:8215:43f8)
2022-02-09 18:21:09 +0100slowButPresent(~slowButPr@user/slowbutpresent)
2022-02-09 18:23:30 +0100Akiva(~Akiva@user/Akiva) (Ping timeout: 256 seconds)
2022-02-09 18:25:07 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-02-09 18:29:14 +0100dajoer(~david@user/gvx) (Quit: leaving)
2022-02-09 18:31:01 +0100reactormonk[m](~reactormo@2001:470:69fc:105::3c24)
2022-02-09 18:32:27 +0100 <reactormonk[m]> I have a pretty standard query `select ( id, data, terms ) from config where id = ?` I run via postgresql-simple, where id is a uuid - however, when I try to extract the data, I get Incompatible {errSQLType = "record", errSQLTableOid = Nothing, errSQLField = "row", errHaskellType = "Text", errMessage = "types incompatible"}
2022-02-09 18:33:57 +0100wootehfoot(~wootehfoo@user/wootehfoot)
2022-02-09 18:34:01 +0100ss4(~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds)
2022-02-09 18:34:29 +0100little_mac(~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a)
2022-02-09 18:34:35 +0100Nendi(~Nendi@195.224.166.74)
2022-02-09 18:34:36 +0100dyeplexer(~dyeplexer@user/dyeplexer)
2022-02-09 18:34:48 +0100jalil(~jalil@2a01:e0a:277:4100:df65:87a3:4ed7:bb61)
2022-02-09 18:35:20 +0100 <safinaskar> how to make singletons work with "String"s?
2022-02-09 18:35:45 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-09 18:35:45 +0100 <safinaskar> i do "singletons [d|data X = Y String]" and it doesn't work
2022-02-09 18:35:59 +0100econo(uid147250@user/econo)
2022-02-09 18:36:48 +0100 <Nendi> https://stackoverflow.com/questions/31875/is-there-a-simple-elegant-way-to-define-singletons check this one should solve your problem
2022-02-09 18:39:44 +0100 <safinaskar> Nendi: ?!?!?!? you give me link about python
2022-02-09 18:39:58 +0100 <safinaskar> Nendi: my question is about haskell. and about haskell's lib "singletons"
2022-02-09 18:40:24 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4)
2022-02-09 18:40:30 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds)
2022-02-09 18:42:51 +0100alp(~alp@user/alp) (Ping timeout: 250 seconds)
2022-02-09 18:43:04 +0100chele(~chele@user/chele) (Remote host closed the connection)
2022-02-09 18:44:35 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 18:44:35 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 18:44:35 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 18:44:57 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
2022-02-09 18:46:48 +0100chir4gm(~chirag@user/chir4gm) (WeeChat 3.4)
2022-02-09 18:48:25 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
2022-02-09 18:49:17 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 240 seconds)
2022-02-09 18:49:25 +0100Topsi(~Tobias@dyndsl-091-249-082-173.ewe-ip-backbone.de)
2022-02-09 18:49:31 +0100 <janus> justsomeguy: there are multiple prettyprinter libraries
2022-02-09 18:49:34 +0100 <janus> @package pretty
2022-02-09 18:49:34 +0100 <lambdabot> https://hackage.haskell.org/package/pretty
2022-02-09 18:50:00 +0100 <Cheery> are there examples of implementing larger subsets of haskell?
2022-02-09 18:50:05 +0100 <janus> justsomeguy: that package is the 'official' one, i guess
2022-02-09 18:50:20 +0100Jing(~hedgehog@240e:390:7c53:a7e1:dc0:c5aa:294f:7621) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2022-02-09 18:50:26 +0100 <janus> but more people are using
2022-02-09 18:50:27 +0100mcgroin(~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 256 seconds)
2022-02-09 18:50:32 +0100 <janus> @package prettyprinter
2022-02-09 18:50:32 +0100 <lambdabot> https://hackage.haskell.org/package/prettyprinter
2022-02-09 18:50:40 +0100 <Cheery> I find difficulties with just data/codata.
2022-02-09 18:51:29 +0100 <awpr> ooh someone asked about pretty-printing? I second prettyprinter as a nicer rendering engine, but I have my own entry for the typeclass carrying pretty-printability-as-Haskell-syntax: https://hackage.haskell.org/package/portray
2022-02-09 18:51:29 +0100 <tomsmeding> Cheery: not sure if this is what you're looking for, but this exists https://github.com/Helium4Haskell/helium
2022-02-09 18:53:32 +0100InternetCitizen(~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 256 seconds)
2022-02-09 18:53:42 +0100 <awpr> (I'm not sure `pretty` is "official", but it is older and more venerable, and I think bundled with GHC. but that doesn't necessarily mean it's the one true package, just that GHC uses it)
2022-02-09 18:54:32 +0100waleee(~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
2022-02-09 18:54:33 +0100 <janus> but it is in the official haskell org on github
2022-02-09 18:54:50 +0100 <geekosaur> that's because ghc usesit
2022-02-09 18:55:03 +0100 <janus> would be weird if https://github.com/haskell is official but the projects within are not
2022-02-09 18:55:06 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net)
2022-02-09 18:55:18 +0100 <awpr> well, what does it mean for a package to be "official"?
2022-02-09 18:56:22 +0100 <Cheery> tomsmeding: I feel I'd need a paper that describes how to implement things. :)
2022-02-09 18:56:44 +0100kuribas(~user@ptr-25vy0i7qdirbfvrk27x.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
2022-02-09 18:56:51 +0100 <geekosaur> parsec's mirrored there too, I think, because of cabal. but attoparsec and megaparsec get more use
2022-02-09 18:56:56 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-09 18:56:57 +0100 <Cheery> for instance, operational semantics for CHR were real useful.
2022-02-09 18:57:20 +0100 <janus> geekosaur: attoparsec is in there too https://github.com/haskell/attoparsec
2022-02-09 18:57:59 +0100 <awpr> being in the Haskell org certainly does give it some level of trustworthiness, but I don't think that constitutes an official stance by the Haskell org that it should be preferred over alternatives
2022-02-09 18:58:33 +0100 <janus> what is 'the Haskell org'?
2022-02-09 18:58:37 +0100 <sclv> libraries in the github haskell organization are those that have been passed over to general maintainership by their authors
2022-02-09 18:59:02 +0100 <sclv> its status is that it hosts github repos for widely used packages whose maintainers want to share ownership broadly
2022-02-09 18:59:27 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
2022-02-09 18:59:37 +0100Vajb(~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
2022-02-09 18:59:42 +0100 <janus> but why was tasty made instead of getting updated at https://github.com/haskell/test-framework then?
2022-02-09 18:59:45 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4) (Remote host closed the connection)
2022-02-09 19:01:58 +0100 <geekosaur> [09 17:54:33] <janus> but it is in the official haskell org on github
2022-02-09 19:02:03 +0100 <geekosaur> [09 17:58:33] <janus> what is 'the Haskell org'?
2022-02-09 19:02:06 +0100 <geekosaur> make up your mind
2022-02-09 19:02:56 +0100 <janus> those are not the same 'org', the first usage of org is in the context of github. the second reference was not made by me and doesn't seem like it referred to github
2022-02-09 19:03:26 +0100 <awpr> right, I meant whoever owns that GitHub org. I don't actually know, perhaps the HF or the GHC maintainers
2022-02-09 19:03:49 +0100 <EvanR> the haskell shadow council
2022-02-09 19:04:46 +0100Gurkenglas_(~Guest22@dslb-188-096-121-068.188.096.pools.vodafone-ip.de) (Quit: Client closed)
2022-02-09 19:07:59 +0100 <awpr> anyway this is kind of going off course, so let's re-center: `pretty` and `prettyprinter` both exist, `pretty` is older, used by GHC, and maintained in the GH Haskell org; `prettyprinter` is newer, a bit different, also widely used, and has coloring support
2022-02-09 19:09:16 +0100 <sclv> tasty was made because someone thought they could do better than test-framework
2022-02-09 19:09:37 +0100Nendi(~Nendi@195.224.166.74) (Remote host closed the connection)
2022-02-09 19:10:05 +0100 <sclv> also i believe test-framework was transferred to the github org just for maintenance purposes well after tasty was made
2022-02-09 19:11:54 +0100 <janus> but who maintains test-framework? because the latest release had 8 revisions. if somebody maintained it, surely it wouldn't get so many revisions, but would get a new version.
2022-02-09 19:12:11 +0100 <janus> it says libraries list, but is that really true?
2022-02-09 19:12:25 +0100 <awpr> revisions /= unmaintained
2022-02-09 19:13:17 +0100 <awpr> if a package just needs a version bounds bump, it needs a revision and not a new version. package maintainers can and do make metadata revisions to their own packages
2022-02-09 19:14:19 +0100 <janus> but also PRs like this sit unreviewed: https://github.com/haskell/test-framework/pull/51
2022-02-09 19:14:57 +0100 <awpr> ah, that does seem like a maintainership question
2022-02-09 19:15:01 +0100 <sm> it's dead (sleeping) I think
2022-02-09 19:19:17 +0100whound(~dust@2409:4071:d13:8d27:350a:4519:8215:43f8) (Quit: Konversation terminated!)
2022-02-09 19:19:22 +0100CiaoSen(~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
2022-02-09 19:21:23 +0100sprout_(~quassel@2a02:a467:ccd6:1:a85e:5217:60c2:bcc7) (Ping timeout: 256 seconds)
2022-02-09 19:25:45 +0100f-a(f2a@f2a.jujube.ircnow.org)
2022-02-09 19:27:47 +0100safinaskar(~quassel@109.252.91.116) ()
2022-02-09 19:29:04 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b)
2022-02-09 19:29:14 +0100haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
2022-02-09 19:30:03 +0100justsomeguy(~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4)
2022-02-09 19:34:30 +0100cfricke(~cfricke@user/cfricke) (Quit: WeeChat 3.3)
2022-02-09 19:39:37 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 240 seconds)
2022-02-09 19:40:57 +0100Unicorn_Princess(~Unicorn_P@93-103-228-248.dynamic.t-2.net)
2022-02-09 19:42:28 +0100dyeplexer(~dyeplexer@user/dyeplexer) (Remote host closed the connection)
2022-02-09 19:43:48 +0100emf_(~emf@2620:10d:c090:400::5:c6d7)
2022-02-09 19:44:20 +0100 <Unicorn_Princess> i need to brush up on my haskell, stack/build system and all. what's the currently most up-to-date/recommended resource for that?
2022-02-09 19:44:32 +0100cstml(~cstml@user/cstml) (Ping timeout: 256 seconds)
2022-02-09 19:44:50 +0100 <maerwald> resource for?
2022-02-09 19:44:52 +0100 <Unicorn_Princess> (don't need to do anything fancy with the build system, just basic usage)
2022-02-09 19:45:01 +0100 <Unicorn_Princess> for learning that :)
2022-02-09 19:45:09 +0100 <maerwald> learning stack?
2022-02-09 19:45:17 +0100emf(~emf@2620:10d:c090:400::5:c6d7) (Ping timeout: 240 seconds)
2022-02-09 19:45:36 +0100 <Unicorn_Princess> if stack is still the recommended way to set up a project, then yes
2022-02-09 19:45:41 +0100 <EvanR> have you heard the good news about cabal
2022-02-09 19:45:56 +0100 <EvanR> come to the dark side
2022-02-09 19:46:07 +0100 <Unicorn_Princess> but i'm scared
2022-02-09 19:47:39 +0100 <f-a> https://cabal.readthedocs.io/en/latest/getting-started.html ← a good quickstart for cabal
2022-02-09 19:47:47 +0100 <carbolymer> Unicorn_Princess: http://dev.stephendiehl.com/hask/
2022-02-09 19:47:59 +0100 <carbolymer> Unicorn_Princess: good tl;dr
2022-02-09 19:48:33 +0100haskellberryfinn(~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Remote host closed the connection)
2022-02-09 19:48:39 +0100 <f-a> I am getting this error clip-ariis: /home/f/francesco/progetti/ariisit/./syncSite.sh: rawSystem: posix_spawnp: invalid argument (Exec format error)
2022-02-09 19:48:48 +0100 <f-a> on this line rawSystem "/home/f/francesco/progetti/ariisit/./syncSite.sh" [] >>
2022-02-09 19:49:08 +0100 <f-a> why does rawSystem like it no more?
2022-02-09 19:49:32 +0100 <Unicorn_Princess> thanks y'all
2022-02-09 19:50:04 +0100vandito(~vandito@131.0.224.113)
2022-02-09 19:52:03 +0100 <maerwald> f-a: posix_spawnp expects a filename
2022-02-09 19:52:16 +0100vandito(~vandito@131.0.224.113) (Client Quit)
2022-02-09 19:52:23 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b)
2022-02-09 19:52:41 +0100 <maerwald> rawSystem "sh" ["-c", "/home/f..."]
2022-02-09 19:54:16 +0100 <f-a> thanks
2022-02-09 19:54:40 +0100safinaskar(~quassel@109.252.91.116)
2022-02-09 19:55:41 +0100cosimone(~user@93-34-133-254.ip49.fastwebnet.it) (Remote host closed the connection)
2022-02-09 19:56:02 +0100vicfred(~vicfred@user/vicfred)
2022-02-09 19:56:55 +0100 <safinaskar> is there some programming language with prover with these properties: 1) the language is practical, i. e. it has some minimal set of packages useful in practice, at very least some general purpose parser lib and json parser and printer, 2) the prover is sound, i. e. termination checker should be included and there should no be type-in-type
2022-02-09 19:58:09 +0100 <EvanR> UrWeb maybe
2022-02-09 19:58:56 +0100slack1256(~slack1256@191.126.227.212)
2022-02-09 19:59:02 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
2022-02-09 20:00:05 +0100 <d34df00d> idris sounds kinda related.
2022-02-09 20:01:17 +0100slac66959(~slack1256@186.11.25.249) (Ping timeout: 250 seconds)
2022-02-09 20:01:36 +0100 <janus> Unicorn_Princess: you should use ghcup to get ghc and cabal
2022-02-09 20:02:43 +0100 <janus> d34df00d: idris still has type-in-type though, i think
2022-02-09 20:02:44 +0100 <Unicorn_Princess> i thought stack was the more easy to use one
2022-02-09 20:02:52 +0100 <Unicorn_Princess> why would i wanna use cabal instead
2022-02-09 20:02:56 +0100 <janus> Unicorn_Princess: it is easy but it is unmaintained, so better not invest in it
2022-02-09 20:03:30 +0100 <EvanR> I'm skeptical that you don't need to know cabal at all to use stack
2022-02-09 20:03:35 +0100 <Unicorn_Princess> oh really? darn
2022-02-09 20:03:41 +0100 <d34df00d> janus: nope. They have Type (which is equialent to Type 1) : Type 2 : Type 3 ...
2022-02-09 20:03:55 +0100 <d34df00d> Or it might starting from 0, I don't remember, but the idea is the same.
2022-02-09 20:04:01 +0100 <EvanR> (I thought Type : Type 1)
2022-02-09 20:04:12 +0100 <awpr> last I looked, Idris had cumulative universes and not TypeInType, but that was before Idris 2, so I'm not sure what it does today. it does (did) have `trust_me` and termination-checker escape hatches, though, so there are compromises to practicality
2022-02-09 20:04:43 +0100 <janus> Unicorn_Princess: cabal has a solver which stack hasn't. so it helps you to find a working set of dependencies. stack will ask you to add extra-deps that won't actually build with your snapshot
2022-02-09 20:04:49 +0100 <EvanR> safinaskar probably knows about idris that's why I didn't go into it
2022-02-09 20:04:56 +0100 <d34df00d> I hope it'll eventually have something like agda's {-# OPTIONS --safe #-} which forbids that.
2022-02-09 20:05:17 +0100 <janus> oh yeah i am not talking to safinaskar, since they are malicious
2022-02-09 20:05:46 +0100 <janus> but still wanted to reply to d34df00d. good to know it has the hierarchy, i wasn't aware
2022-02-09 20:06:50 +0100 <d34df00d> EvanR: you very well might be right about Type : Type 1 — last time I touched idris was about 1.5 years ago. Mostly agda that's never intended to run since then.
2022-02-09 20:06:56 +0100 <janus> Unicorn_Princess: it's not that much harder to use cabal and it's gonna save you a headache when you avoid a bug in stack
2022-02-09 20:07:25 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
2022-02-09 20:08:03 +0100 <janus> and the remote freeze files are slated for addition, which should bring the package sets you may miss
2022-02-09 20:08:49 +0100jalil(~jalil@2a01:e0a:277:4100:df65:87a3:4ed7:bb61) (Quit: jalil)
2022-02-09 20:09:11 +0100jalil(~jalil@2a01:e0a:277:4100:df65:87a3:4ed7:bb61)
2022-02-09 20:09:12 +0100 <Unicorn_Princess> i guess i'll bite the bullet then
2022-02-09 20:09:13 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds)
2022-02-09 20:09:40 +0100 <janus> yes, eat all of the u238
2022-02-09 20:10:02 +0100 <Unicorn_Princess> surely a bullet would be depleted, not enriched!
2022-02-09 20:10:05 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-09 20:10:30 +0100 <janus> u238 is depleted afaik
2022-02-09 20:10:34 +0100 <EvanR> u238 is the garbage isotope
2022-02-09 20:10:38 +0100 <Unicorn_Princess> oh, wait, how embarassing, i confused u238 for u235 :(
2022-02-09 20:10:45 +0100Unicorn_Princessruns away in shame
2022-02-09 20:10:51 +0100FinnElija(~finn_elij@user/finn-elija/x-0085643)
2022-02-09 20:10:57 +0100 <EvanR> turn in your factorio license and weapon now
2022-02-09 20:11:06 +0100 <awpr> is stack actually unmaintained? or is this sort of a sensationalized headline about people being unsatisfied with how active it is?
2022-02-09 20:11:15 +0100mon_aaraj(~MonAaraj@user/mon-aaraj/x-4416475)
2022-02-09 20:11:37 +0100 <maerwald> awpr: Snoyman put out a call for maintainers, because he's not developing it anymore
2022-02-09 20:12:05 +0100 <maerwald> and most of the PRs there are just ignored
2022-02-09 20:12:18 +0100 <janus> awpr: "none of the maintainers are spending a significant amount of time on it." https://www.snoyman.com/blog/babies-oss-maintenance/
2022-02-09 20:12:33 +0100 <EvanR> is it just "done" then
2022-02-09 20:12:46 +0100 <EvanR> software that is done
2022-02-09 20:13:33 +0100 <awpr> interesting, I hadn't heard that. I guess I'll file away "port builds to cabal v2-*" as a thing I might need to do in the medium term if it breaks
2022-02-09 20:13:47 +0100wavemode(~wavemode@2601:241:0:fc90:2892:d0:a7ec:bc11) (Quit: Client closed)
2022-02-09 20:14:14 +0100 <d34df00d> Or software maintainers that are done with the software.
2022-02-09 20:14:39 +0100 <EvanR> that's automatic when software is done
2022-02-09 20:14:42 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com)
2022-02-09 20:14:56 +0100 <EvanR> you don't hear about done software too much but it's possible in principle
2022-02-09 20:15:36 +0100 <maerwald> one of the arguments was that Cabal (the library) is going too fast, without coordination with stack maintainers
2022-02-09 20:16:22 +0100 <sclv> it is a silly argument. there are features Cabal the library released four years ago that are still not supported
2022-02-09 20:16:35 +0100slac27834(~slack1256@186.11.25.249)
2022-02-09 20:16:38 +0100 <sclv> no maintainer did the work to support them. They just weren't interested in keeping up!
2022-02-09 20:16:53 +0100 <EvanR> I retract that theory then
2022-02-09 20:17:11 +0100 <d34df00d> I'd say things like `cp` or `more` are more or less done, modulo occasional bitrot avoidance.
2022-02-09 20:17:18 +0100 <safinaskar> EvanR: thanks for mentioning UrWeb. cool project. i slightly have read the manual, and i think UrWeb doesn't include prover. it seems its type system is less powerful (not more powerful) than current ghc's type system. it seems there is no dependent types
2022-02-09 20:17:28 +0100 <d34df00d> But that's boring, and you can rewrite that in ~~rust~~ haskell anyway.
2022-02-09 20:17:37 +0100 <maerwald> sclv: I dunno... I think they even refused to talk to Cabal maintainers? So the argument is weird anyway :)
2022-02-09 20:17:39 +0100 <EvanR> full dependent types really is a tall order
2022-02-09 20:17:47 +0100 <sclv> also i would argue that build software in particular can't stay "done". the systems change out from underneath it, and they need to update based on that. There's a lot of churn from windows changing APIs, mac changing security policies, and now architectures.
2022-02-09 20:17:48 +0100 <safinaskar> d34df00d: as well as i understand in idris 2 we have type in type, right?
2022-02-09 20:17:58 +0100 <EvanR> it's not clear at all that "practical" requires full dependent types
2022-02-09 20:18:17 +0100 <sclv> Higher level libraries that give data structures and the like can stay "done" much more effectively than anything that needs to make even elementary syscalls
2022-02-09 20:18:19 +0100 <sm> the blog post suggests that more communication/collaboration between projects would have helped. But of course that is hard
2022-02-09 20:18:25 +0100 <d34df00d> safinaskar: I think they'll eventually have a proper hierarchy. Idris 2 is still in its 0.x years.
2022-02-09 20:18:37 +0100 <maerwald> sm: there were offers, but they declined (to my knowledge)
2022-02-09 20:18:51 +0100slack1256(~slack1256@191.126.227.212) (Ping timeout: 256 seconds)
2022-02-09 20:18:55 +0100 <d34df00d> Dang sounds like I should learn cabal finally.
2022-02-09 20:19:01 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4)
2022-02-09 20:19:34 +0100 <maerwald> and they also declined to collaborate with ghcup, although stack was added to ghcup as per their request, basically
2022-02-09 20:20:13 +0100slack1256(~slack1256@191.125.227.197)
2022-02-09 20:20:23 +0100doyougnu(~doyougnu@cpe-67-249-83-190.twcny.res.rr.com) (Remote host closed the connection)
2022-02-09 20:20:27 +0100 <sm> at bottom line, changes in the foundations of haskell tools (GHC, Cabal) are indeed a constant treadmill, so it's got be costly / fatiguing to keep up
2022-02-09 20:20:51 +0100 <sm> and dude has a job and new babies
2022-02-09 20:21:11 +0100 <Unicorn_Princess> sounds like a case of misplaced priorities...
2022-02-09 20:21:21 +0100 <sm> i know right
2022-02-09 20:21:26 +0100 <ski> Unicorn_Princess : did you see <https://gist.github.com/merijn/8152d561fb8b011f9313c48d876ceb07> ?
2022-02-09 20:21:30 +0100 <sm> :-)
2022-02-09 20:21:57 +0100 <Unicorn_Princess> babies come and go, but haskell build systems are forever
2022-02-09 20:22:08 +0100 <maerwald> sm: I find it hard to believe that they find time to argue about Haskell installers for half a year, but then don't have time to communicate with either cabal or ghcup teams... and that because of babies
2022-02-09 20:22:14 +0100 <EvanR> I vaguely understand that stack was created in an environment where cabal kind of sucked, long ago
2022-02-09 20:22:30 +0100slac27834(~slack1256@186.11.25.249) (Ping timeout: 256 seconds)
2022-02-09 20:22:31 +0100 <EvanR> environment changed?
2022-02-09 20:22:38 +0100 <Unicorn_Princess> ski, maybe, long ago. probably a good idea i read it again, thanks :)
2022-02-09 20:22:43 +0100 <sclv> basically its a lot easier to greenfield something that solves _some_ problems than to maintain something that solves a _lot_ of problems
2022-02-09 20:22:52 +0100 <ski> np :)
2022-02-09 20:23:27 +0100 <janus> Unicorn_Princess: that document was last modified in 2019. so it was written before the baby
2022-02-09 20:23:30 +0100 <sm> maerwald: you always complain about this, but I don't hear much empathy so it doesn't really carry that much weight
2022-02-09 20:23:43 +0100Erutuon(~Erutuon@user/erutuon) (Ping timeout: 256 seconds)
2022-02-09 20:23:47 +0100 <maerwald> sm: huh?
2022-02-09 20:23:48 +0100 <sclv> i mean empathy or blame or whatever is besides the point. the situation is what it is.
2022-02-09 20:24:13 +0100 <sclv> people should make choices based on how things actually are, whatever reasons in the past there may be
2022-02-09 20:24:47 +0100 <sm> bery true
2022-02-09 20:24:51 +0100 <EvanR> safinaskar, but you're right UrWeb does look cool. Not sure if it even works though
2022-02-09 20:25:23 +0100 <maerwald> sm: I don't understand what you mean by that
2022-02-09 20:26:33 +0100Erutuon(~Erutuon@user/erutuon)
2022-02-09 20:26:34 +0100skiidly wonders if Smerdyakov is even on Libera
2022-02-09 20:26:56 +0100alp(~alp@user/alp)
2022-02-09 20:26:56 +0100 <ski> (well, there's a new user, who grabbed that nickname, in any case)
2022-02-09 20:27:24 +0100 <sm> maerwald: I mean no offense. Just that you never miss a chance to remind us how stack/snoyman didn't respond to your PR or whatever, and therefore (implied) they suck.. but I'm sure there was a reason. Ultimately noone has unlimited time for communication and argument with all parties
2022-02-09 20:27:36 +0100 <ski> (hm .. or maybe they dropped it, now ?)
2022-02-09 20:27:48 +0100 <maerwald> sm: I'm not implying that at all
2022-02-09 20:27:53 +0100 <EvanR> their ears were burning
2022-02-09 20:28:00 +0100 <maerwald> sm: but I'm pretty confident it is *not* lack of time
2022-02-09 20:28:00 +0100 <sm> simple fatigue/burnout/other priorities I expect
2022-02-09 20:28:05 +0100 <sm> I can't even keep up with my own one project
2022-02-09 20:28:47 +0100 <maerwald> asking for maintainers and then not caring when people fix your code doesn't align
2022-02-09 20:28:53 +0100slac52342(~slack1256@186.11.25.249)
2022-02-09 20:29:09 +0100 <EvanR> wait isn't that consistent AF
2022-02-09 20:29:12 +0100 <sm> I think that's oversimplifying
2022-02-09 20:29:14 +0100cynomys(~cynomys@user/cynomys)
2022-02-09 20:30:08 +0100 <sm> but you could be right, and he is inconsistent and screwed up in this case. I don't know everybody's motivations. I try to assume the best.
2022-02-09 20:30:23 +0100 <sm> based on my own failings :)
2022-02-09 20:30:41 +0100 <janus> d34df00d: where did you read about Type 0 : Type 1? my idris2 repl says 'Type : Type'
2022-02-09 20:31:07 +0100 <EvanR> mine said Type : Type 1 back in the day (idris 1)
2022-02-09 20:31:07 +0100 <maerwald> sm: I just get annoyed when people paint him as a victim, while others did considerable work to support stack
2022-02-09 20:31:18 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-02-09 20:31:31 +0100 <awpr> https://idris2.readthedocs.io/en/latest/tutorial/miscellany.html#cumulativity seems to give a definitive answer: cumulativity is how they want it to work, but Idris 2 doesn't have it yet
2022-02-09 20:31:43 +0100 <EvanR> also I never ran into a case where this hierarchy of types, real or imagined, actually mattered
2022-02-09 20:31:53 +0100slack1256(~slack1256@191.125.227.197) (Ping timeout: 256 seconds)
2022-02-09 20:32:15 +0100 <janus> awpr: oh ok thanks, that explains it
2022-02-09 20:32:58 +0100 <janus> EvanR: but would you necessarily realize if you relied on an invalid proof? you may just have been lucky
2022-02-09 20:33:22 +0100 <EvanR> no it's apparently very hard to stumble upon something that exploits type in type
2022-02-09 20:35:46 +0100 <EvanR> "a simplification of girard's paradox" https://www.cs.cmu.edu/~kw/research/hurkens95tlca.elf xD
2022-02-09 20:36:45 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-09 20:36:47 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net) (Remote host closed the connection)
2022-02-09 20:37:19 +0100 <dolio> The assumptions of Girard's paradox are weaker than type-in-type, so it might be easier to exploit the latter.
2022-02-09 20:37:25 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-02-09 20:38:03 +0100max22-(~maxime@2a01cb0883359800886894252541f01e.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
2022-02-09 20:38:11 +0100mmhat(~mmh@55d4f954.access.ecotel.net)
2022-02-09 20:39:13 +0100notzmv(~zmv@user/notzmv) (Ping timeout: 250 seconds)
2022-02-09 20:40:59 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-02-09 20:41:31 +0100jalil(~jalil@2a01:e0a:277:4100:df65:87a3:4ed7:bb61) (Quit: jalil)
2022-02-09 20:43:20 +0100max22-(~maxime@2a01cb088335980012c6117e30bee14c.ipv6.abo.wanadoo.fr)
2022-02-09 20:43:53 +0100cosimone(~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC (IRC client for Emacs 27.1))
2022-02-09 20:45:20 +0100vysn(~vysn@user/vysn) (Ping timeout: 252 seconds)
2022-02-09 20:46:41 +0100cosimone(~user@93-34-133-254.ip49.fastwebnet.it)
2022-02-09 20:48:38 +0100little_mac(~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a) (Ping timeout: 252 seconds)
2022-02-09 20:50:03 +0100ubert(~Thunderbi@p200300ecdf0994700e1bfcbc5fe04b55.dip0.t-ipconnect.de) (Remote host closed the connection)
2022-02-09 20:56:13 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com)
2022-02-09 20:56:13 +0100wroathe(~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
2022-02-09 20:56:13 +0100wroathe(~wroathe@user/wroathe)
2022-02-09 20:58:48 +0100jalil(~jalil@2a01:e0a:277:4100:8718:f702:59d2:5fba)
2022-02-09 20:59:34 +0100shapr`shapr
2022-02-09 21:00:47 +0100raehik(~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
2022-02-09 21:01:07 +0100wroathe(~wroathe@user/wroathe) (Ping timeout: 256 seconds)
2022-02-09 21:02:49 +0100geekosaur(~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
2022-02-09 21:04:22 +0100Inst(~delicacie@2601:6c4:4080:3f80:1d81:9f23:5ac8:407a) (Ping timeout: 250 seconds)
2022-02-09 21:04:59 +0100geekosaur(~geekosaur@xmonad/geekosaur)
2022-02-09 21:05:02 +0100juhp(~juhp@128.106.188.82) (Ping timeout: 240 seconds)
2022-02-09 21:06:07 +0100dhouthoo(~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4)
2022-02-09 21:06:35 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Quit: mikoto-chan)
2022-02-09 21:06:48 +0100mikoto-chan(~mikoto-ch@213.177.151.239)
2022-02-09 21:06:58 +0100juhp(~juhp@128.106.188.82)
2022-02-09 21:07:12 +0100notzmv(~zmv@user/notzmv)
2022-02-09 21:07:56 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-09 21:09:45 +0100k8yun(~k8yun@user/k8yun) (Quit: Leaving)
2022-02-09 21:10:38 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Remote host closed the connection)
2022-02-09 21:10:52 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-09 21:15:00 +0100jalil(~jalil@2a01:e0a:277:4100:8718:f702:59d2:5fba) (Quit: jalil)
2022-02-09 21:15:31 +0100jao(~jao@66.63.167.168) (Ping timeout: 256 seconds)
2022-02-09 21:15:53 +0100Hildegunst(~luc@80.248.12.109.rev.sfr.net)
2022-02-09 21:16:01 +0100motherfsck(~motherfsc@user/motherfsck) (Remote host closed the connection)
2022-02-09 21:17:07 +0100ehammarstrom(~ehammarst@62-20-203-39-no182.tbcn.telia.com)
2022-02-09 21:17:08 +0100ehammarstrom(~ehammarst@62-20-203-39-no182.tbcn.telia.com) (Client Quit)
2022-02-09 21:17:53 +0100 <monochrom> janus: BTW even in Coq, the notation "Type : Type" is just shorthand for the anti-climatic "Type n : Type (n+1) but since the indexes are clear from the context we will omit them".
2022-02-09 21:18:57 +0100ehammarstrom(~ehammarst@62-20-203-39-no182.tbcn.telia.com)
2022-02-09 21:26:02 +0100 <ehammarstrom> Is there something like `cargo watch` for haskell? I'd like to get immediate type feedback after each file save in a separate terminal window
2022-02-09 21:26:18 +0100 <monochrom> ghcid
2022-02-09 21:26:55 +0100 <monochrom> https://hackage.haskell.org/package/ghcid
2022-02-09 21:27:20 +0100 <byorgey> ehammarstrom: also `stack build --file-watch`
2022-02-09 21:27:54 +0100 <EvanR> stack is dead, long live stack
2022-02-09 21:28:19 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-02-09 21:28:30 +0100 <ehammarstrom> EvanR: byorgey: i was told not to use stack, so i only use cabal :)
2022-02-09 21:29:41 +0100 <ehammarstrom> monochrom: thanks, works great
2022-02-09 21:33:53 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-09 21:34:25 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-02-09 21:38:41 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:38:55 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:39:03 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:39:17 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:39:24 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:39:39 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:39:46 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:39:49 +0100yauhsien(~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
2022-02-09 21:40:00 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:40:07 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:40:21 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:40:29 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:40:43 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:40:50 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:41:04 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:41:05 +0100yauhsien(~yauhsien@61-231-45-223.dynamic-ip.hinet.net)
2022-02-09 21:41:12 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:41:24 +0100little_mac(~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a)
2022-02-09 21:41:26 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:41:33 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:41:47 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:41:55 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:42:10 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:42:17 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:42:32 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:42:39 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:42:53 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:43:01 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:43:14 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:43:22 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:43:37 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:43:44 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:43:57 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:44:05 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:44:20 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:44:27 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:44:41 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:44:49 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:45:04 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:45:11 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:45:22 +0100gehmehgeh(~user@user/gehmehgeh) (Remote host closed the connection)
2022-02-09 21:45:25 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:45:32 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:45:47 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:45:54 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:46:06 +0100gehmehgeh(~user@user/gehmehgeh)
2022-02-09 21:46:08 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:46:15 +0100safinaskar(~quassel@109.252.91.116) ()
2022-02-09 21:46:16 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:46:30 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:46:35 +0100 <ehammarstrom> Is there more well-typed version of readFile? One that evaluates to a Maybe perhaps
2022-02-09 21:46:37 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:46:52 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:47:00 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:47:15 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:47:20 +0100 <EvanR> what does Nothing represent, failure to open it?
2022-02-09 21:47:23 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:47:37 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 21:47:44 +0100lavaman(~lavaman@98.38.249.169) (Remote host closed the connection)
2022-02-09 21:47:46 +0100 <EvanR> that and other issues are covered under Control.Exception s
2022-02-09 21:48:21 +0100 <Hecate> ehammarstrom: considering the amount of posible POSIX *or* Win32 error modes, I'm pretty sure you either want something that gives you the error
2022-02-09 21:48:40 +0100 <Hecate> no the way you get the error has to be ergonomic, and an ADT is not going to be alright :')
2022-02-09 21:48:55 +0100 <d34df00d> janus: that was about idris 1. I wouldn't take idris 2's behaviour as set in stone for now given it's still in its pre-release ages.
2022-02-09 21:48:59 +0100 <EvanR> an indexed monad might be an overengineered way to express the dance of opening reading and closing a file
2022-02-09 21:49:14 +0100 <EvanR> (a single file)
2022-02-09 21:49:15 +0100 <Hecate> EvanR: wat :'D
2022-02-09 21:49:40 +0100 <dminuoso> Dont underestimate the power of `withFile`?
2022-02-09 21:50:07 +0100 <ehammarstrom> And the pragmatic answer?
2022-02-09 21:50:13 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd)
2022-02-09 21:50:15 +0100 <EvanR> use exceptions xD
2022-02-09 21:50:21 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Remote host closed the connection)
2022-02-09 21:50:22 +0100 <EvanR> (and not lazy readFile)
2022-02-09 21:50:36 +0100 <dminuoso> Yes, use exceptions.
2022-02-09 21:50:45 +0100 <ehammarstrom> Cheers, I've done that once before. Never again
2022-02-09 21:51:08 +0100zeenk(~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5)
2022-02-09 21:51:08 +0100 <dminuoso> ehammarstrom: I say get comfortable with them, they aren't unpleasant to work with.
2022-02-09 21:51:20 +0100 <awpr> I feel like file handle lifecycles and door open/close states are to indexed monads as `class Bicycle : Vehicle` and `class Weevil : Animal` are to OOP inheritance
2022-02-09 21:51:28 +0100_ht(~quassel@231-169-21-31.ftth.glasoperator.nl)
2022-02-09 21:51:43 +0100 <dminuoso> It's async exceptions that can cause most headaches, but exceptions - especially with the subtyping tricks we can use - are really nice.
2022-02-09 21:52:18 +0100jao(~jao@static-68-235-44-24.cust.tzulo.com)
2022-02-09 21:52:53 +0100 <ehammarstrom> dminuoso: I'll go ahead an use exceptions, the subtyping stuff is over my head at the moment :)
2022-02-09 21:53:15 +0100 <EvanR> it's true that working with files and catching their specific exceptions isn't really type safe, at least, the compiler doesn't know or tell you what exception types are possible. It's trial and error afaict
2022-02-09 21:54:02 +0100 <dminuoso> ehammarstrom: it's super easy. :)
2022-02-09 21:54:36 +0100 <monochrom> You can use try to convert exceptions to Either. http://www.vex.net/~trebla/haskell/exception-tutorial.xhtml
2022-02-09 21:55:09 +0100 <dminuoso> And its also widely underused.
2022-02-09 21:55:16 +0100 <EvanR> you still need to name the exception type like rumplestiltskin
2022-02-09 21:55:19 +0100alp(~alp@user/alp) (Ping timeout: 268 seconds)
2022-02-09 21:55:30 +0100 <monochrom> The attraction of an exception system though is you can choose how large your lexical scope of your "try" is.
2022-02-09 21:56:15 +0100 <monochrom> For example my opening example there can't be bothered to have 3 try's for 3 IO operations. 1 is quite enough.
2022-02-09 21:57:32 +0100 <monochrom> http://www.vex.net/~trebla/haskell/exception.xhtml is my satire to anti-exception FUD.
2022-02-09 21:57:44 +0100 <ehammarstrom> monochrom: Reducing a larger set of exceptions to a set of fewer Errors as a type would be preferrable
2022-02-09 21:59:16 +0100 <EvanR> you basically need to learn the exception associated with file ops
2022-02-09 21:59:44 +0100 <EvanR> or really the specific ones that you are interested in detecting
2022-02-09 22:03:36 +0100slack1256(~slack1256@191.126.227.70)
2022-02-09 22:04:29 +0100 <EvanR> https://i.imgur.com/IQ6OcWF.png enjoy
2022-02-09 22:05:37 +0100slac52342(~slack1256@186.11.25.249) (Ping timeout: 240 seconds)
2022-02-09 22:05:59 +0100chessai(sid225296@id-225296.lymington.irccloud.com)
2022-02-09 22:07:37 +0100[itchyjunk](~itchyjunk@user/itchyjunk/x-7353470)
2022-02-09 22:08:03 +0100 <janus> how do you limit the scope of exceptions with lexical constructs? i thought exceptions do not care about syntactical constructs?
2022-02-09 22:10:07 +0100 <dminuoso> janus: We're talking about IO exceptions.
2022-02-09 22:10:20 +0100 <EvanR> the catch primitives scope over some lexical scope
2022-02-09 22:10:43 +0100 <EvanR> what they catch is up to the type system though
2022-02-09 22:10:45 +0100alMalsamo(~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds)
2022-02-09 22:10:51 +0100 <EvanR> (dynamic types)
2022-02-09 22:11:24 +0100 <EvanR> and yeah this is IO onlty
2022-02-09 22:11:42 +0100burnsidesLlama(~burnsides@dhcp168-051.wadham.ox.ac.uk)
2022-02-09 22:12:31 +0100dsrt^(~dsrt@128-092-160-106.biz.spectrum.com)
2022-02-09 22:15:19 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-02-09 22:16:43 +0100mikoto-chan(~mikoto-ch@213.177.151.239) (Ping timeout: 256 seconds)
2022-02-09 22:18:16 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 22:21:26 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-02-09 22:22:41 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
2022-02-09 22:26:20 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
2022-02-09 22:28:26 +0100Hildegunst(~luc@80.248.12.109.rev.sfr.net) (Quit: leaving)
2022-02-09 22:28:55 +0100 <ehammarstrom> I am using this to catch file read exceptions (it's used in a `catch` expression): https://paste.tomsmeding.com/dlyRWQ52 how do I know that the evaluation is strict, can I verify it somehow?
2022-02-09 22:30:18 +0100wavemode(~wavemode@2601:241:0:fc90:2892:d0:a7ec:bc11)
2022-02-09 22:31:03 +0100 <ehammarstrom> I am using the BangPatterns language extension; forgot to include that
2022-02-09 22:31:33 +0100 <EvanR> oh, don't use readFile for that
2022-02-09 22:31:51 +0100zincy(~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4) (Remote host closed the connection)
2022-02-09 22:31:53 +0100 <EvanR> there are variants that are just strict already
2022-02-09 22:32:06 +0100 <EvanR> e.g. Data.ByteString, Data.Text have readFile
2022-02-09 22:32:26 +0100albet70(~xxx@2400:8902::f03c:92ff:fe60:98d8)
2022-02-09 22:32:35 +0100 <EvanR> presumably you also would catch an exception too
2022-02-09 22:32:46 +0100 <ehammarstrom> How do I "exclude" my current readFile?
2022-02-09 22:33:07 +0100 <EvanR> you can speak of the other versions qualified like T.readFile or import Prelude reading hiding if you want
2022-02-09 22:33:21 +0100 <EvanR> import Prelude hiding (readFile)
2022-02-09 22:33:51 +0100 <EvanR> qualifying the other one is more conventional I think
2022-02-09 22:34:17 +0100mc47(~mc47@xmonad/TheMC47) (Remote host closed the connection)
2022-02-09 22:37:42 +0100 <ehammarstrom> Is it preferrable to work with Text instead of String?
2022-02-09 22:37:56 +0100 <EvanR> for large amount of text yes
2022-02-09 22:38:03 +0100 <EvanR> (at a time)
2022-02-09 22:38:29 +0100 <EvanR> consider if you're trying to work Char by Char or.. .basically any other pattern
2022-02-09 22:38:51 +0100 <EvanR> String = [Char]
2022-02-09 22:39:57 +0100 <ehammarstrom> Do I have to `pack` every string in my program or is there some way to infer Text from my "current strings"?
2022-02-09 22:40:23 +0100 <EvanR> OverloadedStrings extension interprets string literals using a type class
2022-02-09 22:40:33 +0100 <EvanR> as long as it's unambiguous it's pretty nice
2022-02-09 22:41:06 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-09 22:41:45 +0100 <EvanR> you could also load your file as Text, then work with the unpacked stream of Char sourced from it
2022-02-09 22:42:33 +0100tzh_(~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
2022-02-09 22:42:55 +0100Topsi(~Tobias@dyndsl-091-249-082-173.ewe-ip-backbone.de) (Read error: Connection reset by peer)
2022-02-09 22:42:57 +0100 <ober> How do I create a file?
2022-02-09 22:42:59 +0100mmhat(~mmh@55d4f954.access.ecotel.net) (Quit: WeeChat 3.4)
2022-02-09 22:43:16 +0100tzh(~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Ping timeout: 245 seconds)
2022-02-09 22:45:35 +0100 <EvanR> :t writeFile
2022-02-09 22:45:36 +0100 <lambdabot> FilePath -> String -> IO ()
2022-02-09 22:47:18 +0100 <ober> So I can just pass an empty string to writeFile?
2022-02-09 22:47:25 +0100 <EvanR> yeah
2022-02-09 22:48:03 +0100motherfsck(~motherfsc@user/motherfsck)
2022-02-09 22:49:42 +0100tiferrei(~tiferrei@user/tiferrei)
2022-02-09 22:50:44 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-09 22:51:48 +0100alp(~alp@user/alp)
2022-02-09 22:54:57 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Ping timeout: 240 seconds)
2022-02-09 22:56:17 +0100takuan(~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
2022-02-09 23:03:18 +0100tiferrei(~tiferrei@user/tiferrei) (Remote host closed the connection)
2022-02-09 23:04:30 +0100lavaman(~lavaman@98.38.249.169)
2022-02-09 23:05:17 +0100Midjak(~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
2022-02-09 23:06:01 +0100deadmarshal(~deadmarsh@95.38.116.14) (Ping timeout: 256 seconds)
2022-02-09 23:06:47 +0100tiferrei(~tiferrei@user/tiferrei)
2022-02-09 23:07:23 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl)
2022-02-09 23:08:37 +0100lavaman(~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
2022-02-09 23:13:02 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-09 23:13:20 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-09 23:15:31 +0100 <maerwald> do we have a good HTML parser?
2022-02-09 23:17:45 +0100__monty__(~toonn@user/toonn) (Quit: leaving)
2022-02-09 23:20:14 +0100ober_(~ober@c-73-68-74-41.hsd1.ma.comcast.net)
2022-02-09 23:20:24 +0100 <dminuoso> For potentially malformed tagsoup is your best bet I think.
2022-02-09 23:20:31 +0100 <dminuoso> If you expect it to be well formed, no clue
2022-02-09 23:20:34 +0100 <maerwald> I tried tagsoup, it has bugs
2022-02-09 23:22:47 +0100ober(~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 256 seconds)
2022-02-09 23:24:53 +0100ProfSimm(~ProfSimm@87.227.196.109) (Remote host closed the connection)
2022-02-09 23:25:13 +0100ProfSimm(~ProfSimm@87.227.196.109)
2022-02-09 23:26:17 +0100wavemode(~wavemode@2601:241:0:fc90:2892:d0:a7ec:bc11) (Quit: Client closed)
2022-02-09 23:26:36 +0100alx741(~alx741@157.100.197.240) (Quit: alx741)
2022-02-09 23:27:19 +0100wombat875(~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 256 seconds)
2022-02-09 23:28:52 +0100wavemode(~wavemode@2601:241:0:fc90:2892:d0:a7ec:bc11)
2022-02-09 23:29:20 +0100cosimone(~user@93-34-133-254.ip49.fastwebnet.it) (Quit: ERC (IRC client for Emacs 27.1))
2022-02-09 23:30:07 +0100 <maerwald> can only find projects that are half done, don't support the HTML5 parsing algorithm or are just buggy
2022-02-09 23:32:15 +0100jgeerds(~jgeerds@55d4a547.access.ecotel.net)
2022-02-09 23:32:23 +0100michalz(~michalz@185.246.204.65) (Remote host closed the connection)
2022-02-09 23:33:37 +0100 <EvanR> I wonder what the proper interface for an HTML parser is
2022-02-09 23:33:49 +0100ec(~ec@gateway/tor-sasl/ec) (Quit: ec)
2022-02-09 23:35:00 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in)
2022-02-09 23:35:48 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2022-02-09 23:35:48 +0100deadmarshal(~deadmarsh@95.38.117.25)
2022-02-09 23:37:42 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net) (Read error: Connection reset by peer)
2022-02-09 23:38:03 +0100erisco(~erisco@d24-57-249-233.home.cgocable.net)
2022-02-09 23:38:13 +0100machinedgod(~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
2022-02-09 23:38:41 +0100little_mac(~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a) (Ping timeout: 245 seconds)
2022-02-09 23:40:21 +0100deadmarshal(~deadmarsh@95.38.117.25) (Ping timeout: 256 seconds)
2022-02-09 23:41:14 +0100merijn(~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds)
2022-02-09 23:42:57 +0100Pickchea(~private@user/pickchea)
2022-02-09 23:43:03 +0100wyrd(~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds)
2022-02-09 23:43:08 +0100gehmehgeh(~user@user/gehmehgeh) (Quit: Leaving)
2022-02-09 23:46:16 +0100max22-(~maxime@2a01cb088335980012c6117e30bee14c.ipv6.abo.wanadoo.fr) (Quit: Leaving)
2022-02-09 23:46:27 +0100bontaq(~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection)
2022-02-09 23:51:43 +0100slack1256(~slack1256@191.126.227.70) (Remote host closed the connection)
2022-02-09 23:55:51 +0100eggplantade(~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c)
2022-02-09 23:56:25 +0100foul_owl(~kerry@71.212.148.11)
2022-02-09 23:56:35 +0100zincy(~zincy@host86-151-99-97.range86-151.btcentralplus.com)
2022-02-09 23:56:39 +0100deadmarshal(~deadmarsh@95.38.117.25)
2022-02-09 23:58:12 +0100Ariakenom(~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: Leaving)
2022-02-09 23:59:00 +0100sprout(~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 250 seconds)
2022-02-09 23:59:45 +0100ober__(~ober@c-73-68-74-41.hsd1.ma.comcast.net)