2022-02-09 00:00:06 +0100 | motherfsck | (~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 +0100 | zeenk | (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!) |
2022-02-09 00:01:16 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4) |
2022-02-09 00:01:49 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-02-09 00:02:26 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-02-09 00:03:52 +0100 | deadmarshal | (~deadmarsh@95.38.116.14) |
2022-02-09 00:04:44 +0100 | wombat875 | (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Quit: WeeChat 2.2-dev) |
2022-02-09 00:05:58 +0100 | foul_owl | (~kerry@23.82.194.73) |
2022-02-09 00:09:11 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Quit: Leaving.) |
2022-02-09 00:09:13 +0100 | lottaquestions_ | (~nick@2607:fa49:5041:a200:78c8:bb9f:f5b1:85aa) |
2022-02-09 00:10:25 +0100 | lottaquestions | (~nick@2607:fa49:5041:a200:4100:dd4:ee5e:72a7) |
2022-02-09 00:14:06 +0100 | AlexisTP | (~AlexisTP3@92.57.44.63) (Ping timeout: 245 seconds) |
2022-02-09 00:15:12 +0100 | burnsidesLlama | (~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-02-09 00:16:17 +0100 | jao | (~jao@211.68.17.95.dynamic.jazztel.es) (Ping timeout: 240 seconds) |
2022-02-09 00:17:12 +0100 | mikail | (~mikail@94.3.253.161) (Quit: Leaving) |
2022-02-09 00:18:29 +0100 | jao | (~jao@static-68-235-44-10.cust.tzulo.com) |
2022-02-09 00:19:09 +0100 | deadmarshal | (~deadmarsh@95.38.116.14) (Ping timeout: 250 seconds) |
2022-02-09 00:19:13 +0100 | k8yun | (~k8yun@user/k8yun) (Read error: Connection reset by peer) |
2022-02-09 00:28:30 +0100 | cynomys | (~cynomys@user/cynomys) |
2022-02-09 00:30:13 +0100 | bitdex | (~bitdex@gateway/tor-sasl/bitdex) |
2022-02-09 00:30:39 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4) |
2022-02-09 00:30:55 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-02-09 00:32:22 +0100 | burnsidesLlama | (~burnsides@dhcp168-036.wadham.ox.ac.uk) |
2022-02-09 00:34:16 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Remote host closed the connection) |
2022-02-09 00:34:30 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit) |
2022-02-09 00:34:39 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds) |
2022-02-09 00:35:25 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-02-09 00:38:47 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit) |
2022-02-09 00:38:57 +0100 | mcgroin | (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Ping timeout: 240 seconds) |
2022-02-09 00:39:03 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-02-09 00:39:48 +0100 | machinedgod | (~machinedg@24.105.81.50) |
2022-02-09 00:41:03 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit) |
2022-02-09 00:41:18 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-02-09 00:44:18 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) |
2022-02-09 00:44:39 +0100 | stiell | (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection) |
2022-02-09 00:45:25 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Client Quit) |
2022-02-09 00:45:51 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-02-09 00:46:47 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) (Client Quit) |
2022-02-09 00:47:14 +0100 | foul_owl | (~kerry@23.82.194.73) (Ping timeout: 256 seconds) |
2022-02-09 00:47:33 +0100 | stiell | (~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 +0100 | chenqisu1 | (~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 +0100 | myShoggoth | (~myShoggot@75.164.32.244) (Ping timeout: 240 seconds) |
2022-02-09 00:50:17 +0100 | MatthiasG2 | (~matthias@i6DFA026C.versanet.de) (Quit: leaving) |
2022-02-09 00:50:18 +0100 | Guest67 | (~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 +0100 | ober | (~ober@c-73-68-74-41.hsd1.ma.comcast.net) |
2022-02-09 00:58:52 +0100 | shailangsa | (~shailangs@host86-185-98-37.range86-185.btcentralplus.com) |
2022-02-09 01:00:59 +0100 | Clatters | (~Clatters@host86-130-58-7.range86-130.btcentralplus.com) |
2022-02-09 01:01:29 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 256 seconds) |
2022-02-09 01:02:13 +0100 | foul_owl | (~kerry@217.114.38.61) |
2022-02-09 01:02:13 +0100 | <EvanR> | "jQuery is a monad" |
2022-02-09 01:02:17 +0100 | Pickchea | (~private@user/pickchea) (Ping timeout: 240 seconds) |
2022-02-09 01:02:26 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-02-09 01:05:06 +0100 | Guest67 | (~Guest67@host86-130-58-7.range86-130.btcentralplus.com) (Quit: Client closed) |
2022-02-09 01:05:12 +0100 | Clatters | (~Clatters@host86-130-58-7.range86-130.btcentralplus.com) (Client Quit) |
2022-02-09 01:06:07 +0100 | Codaraxis__ | (~Codaraxis@user/codaraxis) |
2022-02-09 01:07:07 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-02-09 01:09:12 +0100 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection) |
2022-02-09 01:09:26 +0100 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) |
2022-02-09 01:10:02 +0100 | Codaraxis_ | (~Codaraxis@user/codaraxis) (Ping timeout: 260 seconds) |
2022-02-09 01:12:58 +0100 | Majiir | (~majiir@pool-96-237-149-35.bstnma.fios.verizon.net) |
2022-02-09 01:14:29 +0100 | ec | (~ec@gateway/tor-sasl/ec) |
2022-02-09 01:16:40 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) |
2022-02-09 01:22:12 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 01:22:12 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 01:22:12 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 01:25:54 +0100 | max22- | (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Remote host closed the connection) |
2022-02-09 01:26:06 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4) |
2022-02-09 01:26:57 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-02-09 01:27:02 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Quit: ec) |
2022-02-09 01:29:53 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
2022-02-09 01:31:16 +0100 | deadmarshal | (~deadmarsh@95.38.116.14) |
2022-02-09 01:33:27 +0100 | jgeerds | (~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 256 seconds) |
2022-02-09 01:34:41 +0100 | vicfred | (~vicfred@user/vicfred) (Quit: Leaving) |
2022-02-09 01:35:17 +0100 | deadmarshal | (~deadmarsh@95.38.116.14) (Ping timeout: 240 seconds) |
2022-02-09 01:36:10 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 260 seconds) |
2022-02-09 01:39:41 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 252 seconds) |
2022-02-09 01:41:54 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-02-09 01:44:54 +0100 | mvk | (~mvk@2607:fea8:5cdc:bf00::5483) |
2022-02-09 01:46:59 +0100 | mmhat | (~mmh@55d4b3be.access.ecotel.net) (Quit: WeeChat 3.4) |
2022-02-09 01:48:26 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 01:48:41 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 01:48:48 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 01:53:55 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:30a6:9d4e:5fe4:7e50) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
2022-02-09 02:04:42 +0100 | Codaraxis__ | (~Codaraxis@user/codaraxis) (Ping timeout: 250 seconds) |
2022-02-09 02:09:12 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) (Remote host closed the connection) |
2022-02-09 02:09:33 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-02-09 02:10:35 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 02:11:17 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-02-09 02:12:48 +0100 | jlamothe | (~jlamothe@198.251.61.229) (Ping timeout: 256 seconds) |
2022-02-09 02:13:28 +0100 | lbseale_ | (~ep1ctetus@user/ep1ctetus) (Quit: Leaving) |
2022-02-09 02:14:33 +0100 | d34df00d | (~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 +0100 | cynomys | (~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 +0100 | albet70 | (~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 +0100 | alp | (~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 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 256 seconds) |
2022-02-09 02:30:50 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 02:30:52 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Remote host closed the connection) |
2022-02-09 02:38:55 +0100 | x_kuru | (~xkuru@user/xkuru) (Read error: Connection reset by peer) |
2022-02-09 02:38:59 +0100 | cynomys | (~cynomys@user/cynomys) |
2022-02-09 02:40:11 +0100 | Majiir | (~majiir@pool-96-237-149-35.bstnma.fios.verizon.net) (Quit: Lost terminal) |
2022-02-09 02:47:56 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds) |
2022-02-09 02:48:06 +0100 | ensyde | (~ensyde@2600:1700:2050:1040::48) |
2022-02-09 02:49:17 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-02-09 02:56:33 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-02-09 03:00:37 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4) |
2022-02-09 03:01:23 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 03:04:41 +0100 | xsperry | (~xs@user/xsperry) (Remote host closed the connection) |
2022-02-09 03:06:04 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-02-09 03:06:09 +0100 | xff0x | (~xff0x@2001:1a81:533f:ea00:4e49:abcb:9c05:c4b8) (Ping timeout: 256 seconds) |
2022-02-09 03:06:32 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) |
2022-02-09 03:08:06 +0100 | xff0x | (~xff0x@2001:1a81:537c:5300:675b:21ba:4e49:e802) |
2022-02-09 03:08:37 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-02-09 03:11:29 +0100 | neurocyte0917090 | (~neurocyte@user/neurocyte) (Ping timeout: 256 seconds) |
2022-02-09 03:13:59 +0100 | califax- | (~califax@user/califx) |
2022-02-09 03:17:09 +0100 | califax | (~califax@user/califx) (Ping timeout: 276 seconds) |
2022-02-09 03:17:10 +0100 | califax- | califax |
2022-02-09 03:20:19 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-02-09 03:22:35 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-02-09 03:30:08 +0100 | fef | (~thedawn@user/thedawn) |
2022-02-09 03:32:51 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-02-09 03:42:23 +0100 | cynomys | (~cynomys@user/cynomys) (Ping timeout: 250 seconds) |
2022-02-09 03:50:07 +0100 | ober | (~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Remote host closed the connection) |
2022-02-09 03:51:13 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-02-09 03:56:34 +0100 | mbuf | (~Shakthi@171.61.235.32) |
2022-02-09 04:01:00 +0100 | k8yun | (~k8yun@user/k8yun) |
2022-02-09 04:02:17 +0100 | xff0x | (~xff0x@2001:1a81:537c:5300:675b:21ba:4e49:e802) (Ping timeout: 240 seconds) |
2022-02-09 04:04:17 +0100 | xff0x | (~xff0x@2001:1a81:5384:400:cf7c:5041:a517:d608) |
2022-02-09 04:06:32 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Ping timeout: 252 seconds) |
2022-02-09 04:07:01 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-02-09 04:07:30 +0100 | tzh | (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
2022-02-09 04:12:29 +0100 | jao | (~jao@static-68-235-44-10.cust.tzulo.com) (Remote host closed the connection) |
2022-02-09 04:14:43 +0100 | fef | (~thedawn@user/thedawn) (Quit: Leaving) |
2022-02-09 04:16:18 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) |
2022-02-09 04:18:56 +0100 | jao | (~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 +0100 | cynomys | (~cynomys@user/cynomys) |
2022-02-09 04:28:12 +0100 | wavemode30 | (~wavemode@2601:241:0:fc90:ed74:bac6:9a73:6e1a) |
2022-02-09 04:28:53 +0100 | wavemode30 | (~wavemode@2601:241:0:fc90:ed74:bac6:9a73:6e1a) (Client Quit) |
2022-02-09 04:29:06 +0100 | wavemode | (~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 +0100 | wavemode | (~wavemode@2601:241:0:fc90:ed74:bac6:9a73:6e1a) |
2022-02-09 04:42:28 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) (Quit: The Lounge - https://thelounge.chat) |
2022-02-09 04:43:30 +0100 | k8yun_ | (~k8yun@user/k8yun) |
2022-02-09 04:43:40 +0100 | terrorjack | (~terrorjac@2a01:4f8:1c1e:509a::1) |
2022-02-09 04:45:49 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-02-09 04:47:14 +0100 | k8yun | (~k8yun@user/k8yun) (Ping timeout: 252 seconds) |
2022-02-09 04:47:15 +0100 | td_ | (~td@muedsl-82-207-238-149.citykom.de) (Ping timeout: 256 seconds) |
2022-02-09 04:48:42 +0100 | td_ | (~td@94.134.91.16) |
2022-02-09 04:58:27 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-02-09 04:59:52 +0100 | ystael | (~ystael@user/ystael) (Quit: Lost terminal) |
2022-02-09 05:00:01 +0100 | haasn | (~nand@haasn.dev) (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
2022-02-09 05:01:56 +0100 | haasn | (~nand@haasn.dev) |
2022-02-09 05:03:25 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds) |
2022-02-09 05:06:01 +0100 | ensyde | (~ensyde@2600:1700:2050:1040::48) (Ping timeout: 250 seconds) |
2022-02-09 05:08:18 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-02-09 05:14:54 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-02-09 05:15:24 +0100 | burnsidesLlama | (~burnsides@dhcp168-036.wadham.ox.ac.uk) (Remote host closed the connection) |
2022-02-09 05:15:56 +0100 | burnsidesLlama | (~burnsides@client-8-95.eduroam.oxuni.org.uk) |
2022-02-09 05:20:07 +0100 | burnsidesLlama | (~burnsides@client-8-95.eduroam.oxuni.org.uk) (Ping timeout: 256 seconds) |
2022-02-09 05:21:07 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 05:22:04 +0100 | dajoer | (~david@user/gvx) |
2022-02-09 05:25:47 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-02-09 05:26:00 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
2022-02-09 05:26:28 +0100 | adanwan | (~adanwan@gateway/tor-sasl/adanwan) |
2022-02-09 05:27:50 +0100 | caubert_ | (~caubert@136.244.111.235) |
2022-02-09 05:28:16 +0100 | deadmarshal | (~deadmarsh@95.38.116.14) |
2022-02-09 05:28:57 +0100 | caubert | (~caubert@136.244.111.235) (Ping timeout: 240 seconds) |
2022-02-09 05:32:04 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
2022-02-09 05:34:00 +0100 | k8yun_ | (~k8yun@user/k8yun) (Ping timeout: 250 seconds) |
2022-02-09 05:34:34 +0100 | modnar | (~modnar@shell.sonic.net) (Quit: No Ping reply in 180 seconds.) |
2022-02-09 05:36:05 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 05:37:16 +0100 | modnar | (~modnar@shell.sonic.net) |
2022-02-09 05:46:03 +0100 | sebastiandb | (~sebastian@2620:0:5301:2101:1fb2:b569:b87b:10e9) |
2022-02-09 06:02:03 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) (Ping timeout: 256 seconds) |
2022-02-09 06:06:03 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 250 seconds) |
2022-02-09 06:07:51 +0100 | wavemode | (~wavemode@2601:241:0:fc90:ed74:bac6:9a73:6e1a) (Quit: Client closed) |
2022-02-09 06:08:21 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-02-09 06:14:10 +0100 | wavemode | (~wavemode@2601:241:0:fc90:2892:d0:a7ec:bc11) |
2022-02-09 06:19:01 +0100 | ksqsf | (~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 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-09 06:22:13 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-09 06:24:20 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-09 06:24:32 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-09 06:28:27 +0100 | wroathe | (~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 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 06:33:06 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 06:33:06 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 06:33:47 +0100 | deadmarshal | (~deadmarsh@95.38.116.14) (Ping timeout: 256 seconds) |
2022-02-09 06:37:26 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-02-09 06:37:27 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2022-02-09 06:38:34 +0100 | sebastiandb | (~sebastian@2620:0:5301:2101:1fb2:b569:b87b:10e9) (Ping timeout: 260 seconds) |
2022-02-09 06:40:55 +0100 | jao | (~jao@static-68-235-44-10.cust.tzulo.com) (Ping timeout: 256 seconds) |
2022-02-09 06:44:30 +0100 | pavonia | (~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 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-02-09 07:09:08 +0100 | zebrag | (~chris@user/zebrag) (Quit: Konversation terminated!) |
2022-02-09 07:13:25 +0100 | HotblackDesiato | (~HotblackD@gateway/tor-sasl/hotblackdesiato) (Remote host closed the connection) |
2022-02-09 07:13:46 +0100 | HotblackDesiato | (~HotblackD@gateway/tor-sasl/hotblackdesiato) |
2022-02-09 07:14:30 +0100 | ProfSimm | (~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 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 07:33:31 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 07:33:31 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 07:33:31 +0100 | gentauro | (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
2022-02-09 07:33:49 +0100 | gentauro | (~gentauro@user/gentauro) |
2022-02-09 07:34:17 +0100 | Inst | (~delicacie@2601:6c4:4080:3f80:6cf2:b906:2bc7:1ff9) (Ping timeout: 240 seconds) |
2022-02-09 07:35:33 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-02-09 07:36:18 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) |
2022-02-09 07:37:15 +0100 | bliminse | (~bliminse@host86-188-36-166.range86-188.btcentralplus.com) (Ping timeout: 256 seconds) |
2022-02-09 07:37:27 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-02-09 07:37:39 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) |
2022-02-09 07:38:06 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) |
2022-02-09 07:38:38 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-02-09 07:38:51 +0100 | bliminse | (~bliminse@host86-158-241-239.range86-158.btcentralplus.com) |
2022-02-09 07:41:36 +0100 | Inst | (~delicacie@2601:6c4:4080:3f80:1d81:9f23:5ac8:407a) |
2022-02-09 07:41:46 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) (Quit: leaving) |
2022-02-09 07:43:10 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-02-09 07:53:26 +0100 | echoreply | (~echoreply@45.32.163.16) (Quit: WeeChat 2.8) |
2022-02-09 07:54:44 +0100 | echoreply | (~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 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:c1b4:4e62:c0e4:304a) (Remote host closed the connection) |
2022-02-09 08:02:21 +0100 | bitmapper | (uid464869@id-464869.lymington.irccloud.com) |
2022-02-09 08:02:26 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-02-09 08:04:38 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 08:04:52 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 08:05:00 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 08:05:16 +0100 | superbil | (~superbil@1-34-176-171.hinet-ip.hinet.net) |
2022-02-09 08:05:32 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-09 08:05:45 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-09 08:10:50 +0100 | michalz | (~michalz@185.246.204.93) |
2022-02-09 08:11:14 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) |
2022-02-09 08:12:32 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-02-09 08:13:22 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) |
2022-02-09 08:14:02 +0100 | alp | (~alp@user/alp) |
2022-02-09 08:16:41 +0100 | dschrempf | (~dominik@mobiledyn-62-240-134-126.mrsn.at) |
2022-02-09 08:18:14 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 250 seconds) |
2022-02-09 08:18:34 +0100 | phma_ | (~phma@2001:5b0:211f:d758:6f18:ab28:6bcc:58fd) |
2022-02-09 08:18:34 +0100 | phma | (phma@2001:5b0:211f:7e68:f18f:96de:b488:61b7) (Read error: Connection reset by peer) |
2022-02-09 08:19:03 +0100 | deadmarshal | (~deadmarsh@95.38.116.14) |
2022-02-09 08:19:11 +0100 | dschrempf | (~dominik@mobiledyn-62-240-134-126.mrsn.at) (Client Quit) |
2022-02-09 08:22:07 +0100 | Jing | (~hedgehog@240e:390:7c53:a7e1:dc0:c5aa:294f:7621) |
2022-02-09 08:25:11 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 256 seconds) |
2022-02-09 08:27:05 +0100 | cosimone | (~user@93-34-133-254.ip49.fastwebnet.it) |
2022-02-09 08:29:06 +0100 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) (Remote host closed the connection) |
2022-02-09 08:30:02 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) |
2022-02-09 08:31:33 +0100 | LiaoTao | (~LiaoTao@gateway/tor-sasl/liaotao) |
2022-02-09 08:32:14 +0100 | zaquest | (~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 +0100 | zeenk | (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) |
2022-02-09 08:34:04 +0100 | phma_ | phma |
2022-02-09 08:34:08 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-02-09 08:35:32 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 08:36:53 +0100 | zaquest | (~notzaques@5.130.79.72) |
2022-02-09 08:39:49 +0100 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) |
2022-02-09 08:39:50 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 256 seconds) |
2022-02-09 08:44:39 +0100 | MajorBiscuit | (~MajorBisc@86-88-79-148.fixed.kpn.net) (Ping timeout: 250 seconds) |
2022-02-09 08:44:55 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-09 08:45:56 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-09 08:46:04 +0100 | MajorBiscuit | (~MajorBisc@c-001-013-035.client.tudelft.eduvpn.nl) |
2022-02-09 08:47:25 +0100 | Sgeo | (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
2022-02-09 08:48:41 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-02-09 08:54:12 +0100 | chele | (~chele@user/chele) |
2022-02-09 08:54:53 +0100 | cynomys | (~cynomys@user/cynomys) (Ping timeout: 256 seconds) |
2022-02-09 08:55:11 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-09 08:55:24 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-09 08:55:40 +0100 | mc47 | (~mc47@xmonad/TheMC47) |
2022-02-09 08:56:13 +0100 | sektor|3 | (~kvirc@94.155.193.66) |
2022-02-09 08:57:54 +0100 | max22- | (~maxime@2a01cb088335980044f7b68859555b87.ipv6.abo.wanadoo.fr) |
2022-02-09 08:58:09 +0100 | vysn | (~vysn@user/vysn) |
2022-02-09 08:58:52 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-02-09 08:59:25 +0100 | sektor|2 | (~kvirc@87.227.175.182) (Ping timeout: 256 seconds) |
2022-02-09 09:00:13 +0100 | michalz | (~michalz@185.246.204.93) (Remote host closed the connection) |
2022-02-09 09:00:37 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 240 seconds) |
2022-02-09 09:02:58 +0100 | ksqsf | (~user@134.209.106.31) |
2022-02-09 09:05:20 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds) |
2022-02-09 09:06:47 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:cb78:26c4:6167:fc4) |
2022-02-09 09:07:27 +0100 | elkcl | (~elkcl@broadband-37-110-156-162.ip.moscow.rt.ru) |
2022-02-09 09:07:29 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-02-09 09:08:03 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
2022-02-09 09:10:08 +0100 | AlexisTP | (~AlexisTP3@92.57.44.63) |
2022-02-09 09:11:25 +0100 | AlexisTP | (~AlexisTP3@92.57.44.63) (Client Quit) |
2022-02-09 09:11:45 +0100 | AlexisTP | (~AlexisTP3@92.57.44.63) |
2022-02-09 09:12:27 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) (Ping timeout: 256 seconds) |
2022-02-09 09:12:37 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 240 seconds) |
2022-02-09 09:13:01 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 256 seconds) |
2022-02-09 09:13:53 +0100 | AlexisTP | (~AlexisTP3@92.57.44.63) (Client Quit) |
2022-02-09 09:14:11 +0100 | AlexisTP | (~AlexisTP3@92.57.44.63) |
2022-02-09 09:15:40 +0100 | AlexisTP | (~AlexisTP3@92.57.44.63) (Client Quit) |
2022-02-09 09:16:03 +0100 | AlexisTP | (~AlexisTP@92.57.44.63) |
2022-02-09 09:16:45 +0100 | hgolden | (~hgolden2@cpe-172-114-81-123.socal.res.rr.com) |
2022-02-09 09:17:36 +0100 | ksqsf | (~user@134.209.106.31) |
2022-02-09 09:17:59 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:dd3b:3d16:5046:6705) (Remote host closed the connection) |
2022-02-09 09:19:02 +0100 | michalz | (~michalz@185.246.204.65) |
2022-02-09 09:22:07 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 250 seconds) |
2022-02-09 09:22:11 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) |
2022-02-09 09:24:57 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-09 09:25:32 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 240 seconds) |
2022-02-09 09:25:44 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-09 09:28:51 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-02-09 09:31:20 +0100 | ksqsf | (~user@134.209.106.31) |
2022-02-09 09:33:25 +0100 | foul_owl | (~kerry@217.114.38.61) (Ping timeout: 256 seconds) |
2022-02-09 09:34:17 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 09:34:17 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 09:34:17 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 09:34:29 +0100 | Pickchea | (~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 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) |
2022-02-09 09:39:16 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
2022-02-09 09:41:17 +0100 | Pickchea | (~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 +0100 | RFV | (~Thunderbi@243.red-88-5-247.dynamicip.rima-tde.net) |
2022-02-09 09:47:01 +0100 | machinedgod | (~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 +0100 | cfricke | (~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 +0100 | cynomys | (~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 +0100 | AlexisTP | (~AlexisTP@92.57.44.63) (Ping timeout: 250 seconds) |
2022-02-09 09:54:48 +0100 | shriekingnoise | (~shrieking@201.231.16.156) (Quit: Quit) |
2022-02-09 09:55:09 +0100 | kuribas | (~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 +0100 | cfricke | (~cfricke@user/cfricke) |
2022-02-09 10:00:37 +0100 | ishutin | (~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 +0100 | ishutin | (~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 +0100 | jonathanx | (~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 +0100 | ardell | (~ardell@user/ardell) |
2022-02-09 10:09:29 +0100 | merijn | (~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 +0100 | econo | (uid147250@user/econo) (Quit: Connection closed for inactivity) |
2022-02-09 10:12:53 +0100 | jco | (~jco@90-228-194-139-no542.tbcn.telia.com) |
2022-02-09 10:13:57 +0100 | dyeplexer | (~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 +0100 | RFV | (~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 +0100 | jonathanx | (~jonathan@h-178-174-176-109.A357.priv.bahnhof.se) |
2022-02-09 10:18:31 +0100 | Erutuon | (~Erutuon@user/erutuon) (Ping timeout: 256 seconds) |
2022-02-09 10:18:57 +0100 | eggplantade | (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) |
2022-02-09 10:19:16 +0100 | xsperry | (~xs@user/xsperry) |
2022-02-09 10:23:27 +0100 | eggplantade | (~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 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-09 10:25:26 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-09 10:25:49 +0100 | zer0bitz | (~zer0bitz@2001:2003:f74d:b800:2df2:1ec5:8dd3:29f0) |
2022-02-09 10:26:13 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) |
2022-02-09 10:27:53 +0100 | InternetCitizen | (~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 +0100 | vglfr | (~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 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds) |
2022-02-09 10:40:42 +0100 | vglfr | (~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 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) (Read error: Connection reset by peer) |
2022-02-09 10:41:25 +0100 | vglfr | (~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 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-02-09 10:43:30 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) (Remote host closed the connection) |
2022-02-09 10:43:37 +0100 | cynomys | (~cynomys@user/cynomys) (Quit: Lost terminal) |
2022-02-09 10:43:48 +0100 | vglfr | (~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 +0100 | vglfr | (~vglfr@coupling.penchant.volia.net) |
2022-02-09 10:44:04 +0100 | AlexisTP | (~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 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 10:50:44 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-02-09 10:52:04 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) |
2022-02-09 10:53:01 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) (Max SendQ exceeded) |
2022-02-09 10:53:28 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) |
2022-02-09 10:53:55 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 10:55:16 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-02-09 10:55:19 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-02-09 10:55:38 +0100 | geekosaur | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-02-09 10:58:16 +0100 | ubert | (~Thunderbi@p200300ecdf0994700e1bfcbc5fe04b55.dip0.t-ipconnect.de) |
2022-02-09 10:59:58 +0100 | samtoth | (~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 +0100 | marinelli | (~marinelli@gateway/tor-sasl/marinelli) |
2022-02-09 11:05:39 +0100 | marinelli | (~marinelli@gateway/tor-sasl/marinelli) (Client Quit) |
2022-02-09 11:06:13 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 240 seconds) |
2022-02-09 11:08:57 +0100 | ksqsf | (~user@134.209.106.31) (Ping timeout: 256 seconds) |
2022-02-09 11:10:52 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:adf2:7fd4:5ba2:8512) |
2022-02-09 11:13:09 +0100 | InternetCitizen | (~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 +0100 | akegalj | (~akegalj@141-136-168-212.dsl.iskon.hr) |
2022-02-09 11:20:52 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 11:20:52 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 11:20:52 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 11:21:25 +0100 | Tuplanolla | (~Tuplanoll@91-159-68-166.elisa-laajakaista.fi) (Ping timeout: 240 seconds) |
2022-02-09 11:24:44 +0100 | fvr | (uid503686@id-503686.uxbridge.irccloud.com) |
2022-02-09 11:25:57 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-02-09 11:27:31 +0100 | rusrushal13 | (~rusrushal@2405:201:7003:8952:a27c:c592:8e19:8656) |
2022-02-09 11:29:25 +0100 | samtoth | (~igloo@90.208.227.189) (Ping timeout: 240 seconds) |
2022-02-09 11:30:03 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
2022-02-09 11:30:05 +0100 | jamesmartinez | (~pepsi@2a02:4780:1:1::1:a856) |
2022-02-09 11:31:32 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 240 seconds) |
2022-02-09 11:31:36 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) |
2022-02-09 11:31:53 +0100 | Codaraxis | (~Codaraxis@user/codaraxis) (Client Quit) |
2022-02-09 11:33:12 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-02-09 11:34:55 +0100 | Tuplanolla | (~Tuplanoll@91-159-69-98.elisa-laajakaista.fi) |
2022-02-09 11:36:05 +0100 | xkuru | (~xkuru@user/xkuru) |
2022-02-09 11:40:06 +0100 | jamesmartinez | (~pepsi@2a02:4780:1:1::1:a856) (WeeChat 1.9.1) |
2022-02-09 11:40:46 +0100 | Gurkenglas_ | (~Guest22@dslb-188-096-121-068.188.096.pools.vodafone-ip.de) |
2022-02-09 11:41:44 +0100 | akegalj | (~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 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 245 seconds) |
2022-02-09 11:42:17 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Ping timeout: 240 seconds) |
2022-02-09 11:42:42 +0100 | safinaskar | (~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 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-02-09 11:45:32 +0100 | geekosaur | (~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 +0100 | safinaskar | (~quassel@109.252.91.116) () |
2022-02-09 11:48:49 +0100 | tiferrei | (~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 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-02-09 11:50:34 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) |
2022-02-09 11:51:40 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 11:51:40 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 11:51:40 +0100 | wroathe | (~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 +0100 | kilolympus | (~kilolympu@31.205.200.235) (Quit: Quitting IRC :() |
2022-02-09 11:55:19 +0100 | tzh | (~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 +0100 | wroathe | (~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 +0100 | Lord_of_Life_ | (~Lord@user/lord-of-life/x-2819915) |
2022-02-09 12:00:06 +0100 | Lord_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 +0100 | Lord_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 +0100 | califax | (~califax@user/califx) (Remote host closed the connection) |
2022-02-09 12:06:16 +0100 | califax | (~califax@user/califx) |
2022-02-09 12:11:29 +0100 | Lord_of_Life | (~Lord@user/lord-of-life/x-2819915) (Excess Flood) |
2022-02-09 12:11:43 +0100 | jgeerds | (~jgeerds@55d4a547.access.ecotel.net) |
2022-02-09 12:11:53 +0100 | Lord_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 +0100 | wyrd | (~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 +0100 | wyrd | (~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 +0100 | foul_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 +0100 | DNH | (~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 +0100 | jalil | (~jalil@pop.92-184-110-73.mobile.abo.orange.fr) |
2022-02-09 12:36:27 +0100 | foul_owl | (~kerry@23.82.193.78) (Ping timeout: 256 seconds) |
2022-02-09 12:36:27 +0100 | zeenk | (~zeenk@2a02:2f04:a30d:1300:51a3:bcfc:6cda:9fc5) (Quit: Konversation terminated!) |
2022-02-09 12:36:36 +0100 | jalil | (~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 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2022-02-09 12:44:52 +0100 | cynomys | (~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 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 12:46:16 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 12:46:16 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 12:48:02 +0100 | bitdex | (~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 +0100 | wroathe | (~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 +0100 | jco | (~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 +0100 | pretty_dumm_guy | (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) |
2022-02-09 12:59:56 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-02-09 13:01:19 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) |
2022-02-09 13:01:37 +0100 | cynomys | (~cynomys@user/cynomys) (Ping timeout: 240 seconds) |
2022-02-09 13:03:13 +0100 | mcgroin | (~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 +0100 | vysn | (~vysn@user/vysn) |
2022-02-09 13:14:20 +0100 | DNH | (~DNH@2a02:8108:1100:16d8:adf2:7fd4:5ba2:8512) |
2022-02-09 13:22:09 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Remote host closed the connection) |
2022-02-09 13:23:23 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) |
2022-02-09 13:28:16 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 256 seconds) |
2022-02-09 13:44:30 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) (Quit: This computer has gone to sleep) |
2022-02-09 13:52:42 +0100 | jalil | (~jalil@lstlambert-656-1-270-247.w90-63.abo.wanadoo.fr) |
2022-02-09 13:55:58 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 13:57:44 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) (Ping timeout: 256 seconds) |
2022-02-09 13:57:49 +0100 | chenqisu1 | (~chenqisu1@183.217.200.249) (Quit: Leaving) |
2022-02-09 13:58:27 +0100 | jalil | (~jalil@lstlambert-656-1-270-247.w90-63.abo.wanadoo.fr) (Quit: jalil) |
2022-02-09 13:58:46 +0100 | jalil | (~jalil@lstlambert-656-1-270-247.w90-63.abo.wanadoo.fr) |
2022-02-09 13:58:59 +0100 | hololeap | (~hololeap@user/hololeap) (Remote host closed the connection) |
2022-02-09 13:59:36 +0100 | jlamothe | (~jlamothe@198.251.61.229) |
2022-02-09 13:59:49 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-02-09 14:00:26 +0100 | hololeap | (~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 +0100 | slack1256 | (~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 +0100 | mvk | (~mvk@2607:fea8:5cdc:bf00::5483) (Ping timeout: 240 seconds) |
2022-02-09 14:12:17 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) |
2022-02-09 14:12:27 +0100 | Flow | (~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 +0100 | max22- | (~maxime@2a01cb088335980044f7b68859555b87.ipv6.abo.wanadoo.fr) (Ping timeout: 252 seconds) |
2022-02-09 14:18:55 +0100 | aforemny | (~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 +0100 | dminuoso | ponders about that |
2022-02-09 14:21:27 +0100 | aforemny | (~aforemny@static.248.158.34.188.clients.your-server.de) |
2022-02-09 14:24:27 +0100 | fvr | (uid503686@id-503686.uxbridge.irccloud.com) (Quit: Connection closed for inactivity) |
2022-02-09 14:31:17 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-02-09 14:32:01 +0100 | dschrempf | (~dominik@mobiledyn-62-240-134-126.mrsn.at) |
2022-02-09 14:45:56 +0100 | max22- | (~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 +0100 | o-90 | (~o-90@gateway/tor-sasl/o-90) |
2022-02-09 14:56:06 +0100 | Flow | (~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 +0100 | o-90 | (~o-90@gateway/tor-sasl/o-90) (Ping timeout: 276 seconds) |
2022-02-09 15:00:45 +0100 | hughjfchen | (~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 +0100 | Guest35 | (~Guest35@node-126p.pool-125-24.dynamic.totinternet.net) |
2022-02-09 15:05:07 +0100 | hughjfchen | (~hughjfche@vmi556545.contaboserver.net) |
2022-02-09 15:05:34 +0100 | hololeap | (~hololeap@user/hololeap) (Remote host closed the connection) |
2022-02-09 15:06:01 +0100 | slac36430 | (~slack1256@186.11.25.57) |
2022-02-09 15:06:43 +0100 | dschrempf | (~dominik@mobiledyn-62-240-134-126.mrsn.at) (Quit: WeeChat 3.3) |
2022-02-09 15:06:55 +0100 | hololeap | (~hololeap@user/hololeap) |
2022-02-09 15:07:57 +0100 | slack1256 | (~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 +0100 | neverfindme | (~hayden@158.123.160.43) |
2022-02-09 15:09:21 +0100 | neverfindme | (~hayden@158.123.160.43) (Remote host closed the connection) |
2022-02-09 15:14:24 +0100 | shriekingnoise | (~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 +0100 | zer0bitz | (~zer0bitz@2001:2003:f74d:b800:2df2:1ec5:8dd3:29f0) (Ping timeout: 260 seconds) |
2022-02-09 15:21:15 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds) |
2022-02-09 15:21:25 +0100 | bontaq | (~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 +0100 | rusrushal13 | (~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 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-02-09 15:24:01 +0100 | adanwan | (~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 +0100 | adanwan | (~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 +0100 | ystael | (~ystael@user/ystael) |
2022-02-09 15:27:23 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) |
2022-02-09 15:27:50 +0100 | akegalj | (~akegalj@141-136-168-212.dsl.iskon.hr) |
2022-02-09 15:28:37 +0100 | yauhsien | (~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 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) |
2022-02-09 15:29:49 +0100 | slac36430 | (~slack1256@186.11.25.57) (Ping timeout: 250 seconds) |
2022-02-09 15:30:11 +0100 | slack1256 | (~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 +0100 | haskell_ | (~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 +0100 | haskell_ | (~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 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 15:31:22 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 15:31:22 +0100 | wroathe | (~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 +0100 | yauhsien | (~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 +0100 | Erutuon | (~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 +0100 | alMalsamo | (~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 +0100 | Andrew | agrees 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 +0100 | jao | (~jao@66.63.167.168) |
2022-02-09 15:52:06 +0100 | fef | (~thedawn@user/thedawn) |
2022-02-09 15:52:13 +0100 | ski | looks 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 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) (Ping timeout: 276 seconds) |
2022-02-09 15:56:52 +0100 | slack1135 | (~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 +0100 | alMalsamo | (~alMalsamo@gateway/tor-sasl/almalsamo) |
2022-02-09 15:57:51 +0100 | pavonia | (~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 +0100 | akegalj | (~akegalj@141-136-168-212.dsl.iskon.hr) (Quit: leaving) |
2022-02-09 15:59:20 +0100 | slack1256 | (~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 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) |
2022-02-09 16:04:06 +0100 | wroathe | (~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 +0100 | ski | glances 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 +0100 | ski | also 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 +0100 | jao | (~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 +0100 | wyrd | (~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 +0100 | jao | (~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 +0100 | n3rdy1 | (~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 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 16:10:00 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 16:10:00 +0100 | wroathe | (~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 +0100 | slack1256 | (~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 +0100 | ski | smile |
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 +0100 | slack1135 | (~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 +0100 | ski | tends 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 +0100 | ski | smiles |
2022-02-09 16:14:18 +0100 | wroathe | (~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 +0100 | ski | looks 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 +0100 | Sgeo | (~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 +0100 | Gurkenglas_ | .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 +0100 | k8yun | (~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 +0100 | geekosaur | wonders how Ωmega solves this |
2022-02-09 16:23:08 +0100 | mon_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 +0100 | eggplantade | (~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 +0100 | ski | uses 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 +0100 | mon_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 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) |
2022-02-09 16:27:37 +0100 | ski | idly 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 +0100 | eggplantade | (~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 +0100 | zer0bitz | (~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 +0100 | shailangsa | (~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 +0100 | Guest35 | (~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 +0100 | mon_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 +0100 | mon_aaraj | (~MonAaraj@user/mon-aaraj/x-4416475) |
2022-02-09 16:41:52 +0100 | sleblanc | (~sleblanc@user/sleblanc) |
2022-02-09 16:42:34 +0100 | ec | (~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 +0100 | tdammers | (~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 +0100 | mvk | (~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 +0100 | shapr` | (~user@pool-173-73-44-186.washdc.fios.verizon.net) |
2022-02-09 16:52:17 +0100 | shapr | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:55:18 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:55:24 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:55:38 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:55:46 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:56:02 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:56:09 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:56:17 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480::41) (Ping timeout: 240 seconds) |
2022-02-09 16:56:23 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:56:30 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:56:44 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:56:52 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:57:07 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:57:13 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:57:27 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:57:35 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:57:48 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:57:56 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:58:11 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:58:18 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:58:32 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:58:39 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:58:54 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:59:02 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:59:17 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:59:24 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 16:59:38 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 16:59:46 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 17:00:01 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 17:00:09 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 17:00:24 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 17:00:31 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 17:00:45 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 17:00:52 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 17:01:06 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 17:01:14 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 17:01:30 +0100 | lavaman | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 17:01:52 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 17:02:00 +0100 | lavaman | (~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 +0100 | ChanServ | +o geekosaur |
2022-02-09 17:02:11 +0100 | cstml | (~cstml@user/cstml) |
2022-02-09 17:02:15 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 17:02:18 +0100 | geekosaur | +b *!*@98.38.249.169 |
2022-02-09 17:02:22 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 17:03:51 +0100 | merijn | (~merijn@c-001-001-018.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
2022-02-09 17:04:41 +0100 | lortabac | (~lortabac@2a01:e0a:541:b8f0:cb78:26c4:6167:fc4) (Quit: WeeChat 2.8) |
2022-02-09 17:05:01 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 17:06:01 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) |
2022-02-09 17:09:27 +0100 | n3rdy1 | (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) |
2022-02-09 17:09:50 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-02-09 17:14:08 +0100 | xff0x | (~xff0x@2001:1a81:5384:400:cf7c:5041:a517:d608) (Ping timeout: 252 seconds) |
2022-02-09 17:14:51 +0100 | xff0x | (~xff0x@2001:1a81:5384:400:77b6:98fb:61ba:7d90) |
2022-02-09 17:17:24 +0100 | ChanServ | +o litharge |
2022-02-09 17:17:25 +0100 | litharge | -bo *!*@98.38.249.169 litharge |
2022-02-09 17:17:57 +0100 | AlexisTP | (~AlexisTP@92.57.44.63) (Ping timeout: 240 seconds) |
2022-02-09 17:19:19 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-02-09 17:20:34 +0100 | mbuf | (~Shakthi@171.61.235.32) (Quit: Leaving) |
2022-02-09 17:21:03 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-02-09 17:25:27 +0100 | jgeerds | (~jgeerds@55d4a547.access.ecotel.net) (Ping timeout: 256 seconds) |
2022-02-09 17:28:45 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds) |
2022-02-09 17:31:03 +0100 | biberu | (~biberu@user/biberu) (Read error: Connection reset by peer) |
2022-02-09 17:31:16 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 17:34:51 +0100 | caubert_ | (~caubert@136.244.111.235) (Quit: WeeChat 3.4) |
2022-02-09 17:35:00 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) |
2022-02-09 17:35:06 +0100 | caubert | (~caubert@136.244.111.235) |
2022-02-09 17:35:30 +0100 | son0p | (~ff@181.136.122.143) (Remote host closed the connection) |
2022-02-09 17:44:11 +0100 | jinsun__ | (~quassel@user/jinsun) |
2022-02-09 17:44:43 +0100 | jinsun | (~quassel@user/jinsun) (Ping timeout: 256 seconds) |
2022-02-09 17:47:14 +0100 | slac66959 | (~slack1256@186.11.25.249) |
2022-02-09 17:48:09 +0100 | fef | (~thedawn@user/thedawn) (Ping timeout: 276 seconds) |
2022-02-09 17:49:10 +0100 | ph88 | (~ph88@2a02:8109:9e00:71d0:713a:ad1d:dd0:bdcc) (Remote host closed the connection) |
2022-02-09 17:49:17 +0100 | slack1256 | (~slack1256@191.125.227.212) (Ping timeout: 240 seconds) |
2022-02-09 17:49:28 +0100 | ph88 | (~ph88@2a02:8109:9e00:71d0:980:dccb:621a:6731) |
2022-02-09 17:49:32 +0100 | zebrag | (~chris@user/zebrag) |
2022-02-09 17:49:56 +0100 | waleee | (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 245 seconds) |
2022-02-09 17:52:42 +0100 | Akiva | (~Akiva@user/Akiva) |
2022-02-09 17:56:04 +0100 | safinaskar | (~quassel@109.252.91.116) |
2022-02-09 17:56:44 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) |
2022-02-09 17:57:39 +0100 | eggplantade | (~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 +0100 | wombat875 | (~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 +0100 | merijn | (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
2022-02-09 18:00:36 +0100 | biberu | (~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 +0100 | DigitalKiwi | saw 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 +0100 | jalil | (~jalil@lstlambert-656-1-270-247.w90-63.abo.wanadoo.fr) (Quit: jalil) |
2022-02-09 18:07:51 +0100 | jinsun__ | (~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 +0100 | jinsun | (~quassel@user/jinsun) |
2022-02-09 18:13:16 +0100 | zopsi | (~zopsi@104-237-136-227.ip.linodeusercontent.com) |
2022-02-09 18:14:15 +0100 | MajorBiscuit | (~MajorBisc@c-001-013-035.client.tudelft.eduvpn.nl) (Ping timeout: 250 seconds) |
2022-02-09 18:17:37 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Ping timeout: 240 seconds) |
2022-02-09 18:17:48 +0100 | whound | (~dust@2409:4071:d13:8d27:350a:4519:8215:43f8) |
2022-02-09 18:21:09 +0100 | slowButPresent | (~slowButPr@user/slowbutpresent) |
2022-02-09 18:23:30 +0100 | Akiva | (~Akiva@user/Akiva) (Ping timeout: 256 seconds) |
2022-02-09 18:25:07 +0100 | jgeerds | (~jgeerds@55d4a547.access.ecotel.net) |
2022-02-09 18:29:14 +0100 | dajoer | (~david@user/gvx) (Quit: leaving) |
2022-02-09 18:31:01 +0100 | reactormonk[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 +0100 | wootehfoot | (~wootehfoo@user/wootehfoot) |
2022-02-09 18:34:01 +0100 | ss4 | (~wootehfoo@user/wootehfoot) (Ping timeout: 256 seconds) |
2022-02-09 18:34:29 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a) |
2022-02-09 18:34:35 +0100 | Nendi | (~Nendi@195.224.166.74) |
2022-02-09 18:34:36 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) |
2022-02-09 18:34:48 +0100 | jalil | (~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 +0100 | merijn | (~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 +0100 | econo | (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 +0100 | zincy | (~zincy@2a00:23c8:970c:4801:68f0:cbbd:5b77:19e4) |
2022-02-09 18:40:30 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 256 seconds) |
2022-02-09 18:42:51 +0100 | alp | (~alp@user/alp) (Ping timeout: 250 seconds) |
2022-02-09 18:43:04 +0100 | chele | (~chele@user/chele) (Remote host closed the connection) |
2022-02-09 18:44:35 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 18:44:35 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 18:44:35 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 18:44:57 +0100 | InternetCitizen | (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) |
2022-02-09 18:46:48 +0100 | chir4gm | (~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 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 240 seconds) |
2022-02-09 18:49:25 +0100 | Topsi | (~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 +0100 | Jing | (~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 +0100 | mcgroin | (~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 +0100 | InternetCitizen | (~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 +0100 | waleee | (~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 +0100 | tzh | (~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 +0100 | kuribas | (~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 +0100 | eggplantade | (~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 +0100 | Vajb | (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer) |
2022-02-09 18:59:37 +0100 | Vajb | (~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 +0100 | zincy | (~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 +0100 | Gurkenglas_ | (~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 +0100 | Nendi | (~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 +0100 | whound | (~dust@2409:4071:d13:8d27:350a:4519:8215:43f8) (Quit: Konversation terminated!) |
2022-02-09 19:19:22 +0100 | CiaoSen | (~Jura@p200300c95737a2002a3a4dfffe84dbd5.dip0.t-ipconnect.de) |
2022-02-09 19:21:23 +0100 | sprout_ | (~quassel@2a02:a467:ccd6:1:a85e:5217:60c2:bcc7) (Ping timeout: 256 seconds) |
2022-02-09 19:25:45 +0100 | f-a | (f2a@f2a.jujube.ircnow.org) |
2022-02-09 19:27:47 +0100 | safinaskar | (~quassel@109.252.91.116) () |
2022-02-09 19:29:04 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) |
2022-02-09 19:29:14 +0100 | haskellberryfinn | (~nut@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) |
2022-02-09 19:30:03 +0100 | justsomeguy | (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.4) |
2022-02-09 19:34:30 +0100 | cfricke | (~cfricke@user/cfricke) (Quit: WeeChat 3.3) |
2022-02-09 19:39:37 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 240 seconds) |
2022-02-09 19:40:57 +0100 | Unicorn_Princess | (~Unicorn_P@93-103-228-248.dynamic.t-2.net) |
2022-02-09 19:42:28 +0100 | dyeplexer | (~dyeplexer@user/dyeplexer) (Remote host closed the connection) |
2022-02-09 19:43:48 +0100 | emf_ | (~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 +0100 | cstml | (~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 +0100 | emf | (~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 +0100 | haskellberryfinn | (~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 +0100 | vandito | (~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 +0100 | vandito | (~vandito@131.0.224.113) (Client Quit) |
2022-02-09 19:52:23 +0100 | sprout | (~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 +0100 | safinaskar | (~quassel@109.252.91.116) |
2022-02-09 19:55:41 +0100 | cosimone | (~user@93-34-133-254.ip49.fastwebnet.it) (Remote host closed the connection) |
2022-02-09 19:56:02 +0100 | vicfred | (~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 +0100 | slack1256 | (~slack1256@191.126.227.212) |
2022-02-09 19:59:02 +0100 | cosimone | (~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 +0100 | slac66959 | (~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 +0100 | FinnElija | (~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 +0100 | jalil | (~jalil@2a01:e0a:277:4100:df65:87a3:4ed7:bb61) (Quit: jalil) |
2022-02-09 20:09:11 +0100 | jalil | (~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 +0100 | mon_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 +0100 | Erutuon | (~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 +0100 | Unicorn_Princess | runs away in shame |
2022-02-09 20:10:51 +0100 | FinnElija | (~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 +0100 | mon_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 +0100 | wavemode | (~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 +0100 | doyougnu | (~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 +0100 | slac27834 | (~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 +0100 | slack1256 | (~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 +0100 | zincy | (~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 +0100 | slack1256 | (~slack1256@191.125.227.197) |
2022-02-09 20:20:23 +0100 | doyougnu | (~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 +0100 | slac27834 | (~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 +0100 | Erutuon | (~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 +0100 | Erutuon | (~Erutuon@user/erutuon) |
2022-02-09 20:26:34 +0100 | ski | idly wonders if Smerdyakov is even on Libera |
2022-02-09 20:26:56 +0100 | alp | (~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 +0100 | slac52342 | (~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 +0100 | cynomys | (~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 +0100 | albet70 | (~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 +0100 | slack1256 | (~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 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
2022-02-09 20:36:47 +0100 | jgeerds | (~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 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-02-09 20:38:03 +0100 | max22- | (~maxime@2a01cb0883359800886894252541f01e.ipv6.abo.wanadoo.fr) (Remote host closed the connection) |
2022-02-09 20:38:11 +0100 | mmhat | (~mmh@55d4f954.access.ecotel.net) |
2022-02-09 20:39:13 +0100 | notzmv | (~zmv@user/notzmv) (Ping timeout: 250 seconds) |
2022-02-09 20:40:59 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-02-09 20:41:31 +0100 | jalil | (~jalil@2a01:e0a:277:4100:df65:87a3:4ed7:bb61) (Quit: jalil) |
2022-02-09 20:43:20 +0100 | max22- | (~maxime@2a01cb088335980012c6117e30bee14c.ipv6.abo.wanadoo.fr) |
2022-02-09 20:43:53 +0100 | cosimone | (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Quit: ERC (IRC client for Emacs 27.1)) |
2022-02-09 20:45:20 +0100 | vysn | (~vysn@user/vysn) (Ping timeout: 252 seconds) |
2022-02-09 20:46:41 +0100 | cosimone | (~user@93-34-133-254.ip49.fastwebnet.it) |
2022-02-09 20:48:38 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a) (Ping timeout: 252 seconds) |
2022-02-09 20:50:03 +0100 | ubert | (~Thunderbi@p200300ecdf0994700e1bfcbc5fe04b55.dip0.t-ipconnect.de) (Remote host closed the connection) |
2022-02-09 20:56:13 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) |
2022-02-09 20:56:13 +0100 | wroathe | (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host) |
2022-02-09 20:56:13 +0100 | wroathe | (~wroathe@user/wroathe) |
2022-02-09 20:58:48 +0100 | jalil | (~jalil@2a01:e0a:277:4100:8718:f702:59d2:5fba) |
2022-02-09 20:59:34 +0100 | shapr` | shapr |
2022-02-09 21:00:47 +0100 | raehik | (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds) |
2022-02-09 21:01:07 +0100 | wroathe | (~wroathe@user/wroathe) (Ping timeout: 256 seconds) |
2022-02-09 21:02:49 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) (Remote host closed the connection) |
2022-02-09 21:04:22 +0100 | Inst | (~delicacie@2601:6c4:4080:3f80:1d81:9f23:5ac8:407a) (Ping timeout: 250 seconds) |
2022-02-09 21:04:59 +0100 | geekosaur | (~geekosaur@xmonad/geekosaur) |
2022-02-09 21:05:02 +0100 | juhp | (~juhp@128.106.188.82) (Ping timeout: 240 seconds) |
2022-02-09 21:06:07 +0100 | dhouthoo | (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.4) |
2022-02-09 21:06:35 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Quit: mikoto-chan) |
2022-02-09 21:06:48 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) |
2022-02-09 21:06:58 +0100 | juhp | (~juhp@128.106.188.82) |
2022-02-09 21:07:12 +0100 | notzmv | (~zmv@user/notzmv) |
2022-02-09 21:07:56 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-02-09 21:09:45 +0100 | k8yun | (~k8yun@user/k8yun) (Quit: Leaving) |
2022-02-09 21:10:38 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Remote host closed the connection) |
2022-02-09 21:10:52 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
2022-02-09 21:15:00 +0100 | jalil | (~jalil@2a01:e0a:277:4100:8718:f702:59d2:5fba) (Quit: jalil) |
2022-02-09 21:15:31 +0100 | jao | (~jao@66.63.167.168) (Ping timeout: 256 seconds) |
2022-02-09 21:15:53 +0100 | Hildegunst | (~luc@80.248.12.109.rev.sfr.net) |
2022-02-09 21:16:01 +0100 | motherfsck | (~motherfsc@user/motherfsck) (Remote host closed the connection) |
2022-02-09 21:17:07 +0100 | ehammarstrom | (~ehammarst@62-20-203-39-no182.tbcn.telia.com) |
2022-02-09 21:17:08 +0100 | ehammarstrom | (~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 +0100 | ehammarstrom | (~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 +0100 | albet70 | (~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 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) |
2022-02-09 21:34:25 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-02-09 21:38:41 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:38:55 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:39:03 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:39:17 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:39:24 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:39:39 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:39:46 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:39:49 +0100 | yauhsien | (~yauhsien@61-231-29-69.dynamic-ip.hinet.net) (Ping timeout: 240 seconds) |
2022-02-09 21:40:00 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:40:07 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:40:21 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:40:29 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:40:43 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:40:50 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:41:04 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:41:05 +0100 | yauhsien | (~yauhsien@61-231-45-223.dynamic-ip.hinet.net) |
2022-02-09 21:41:12 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:41:24 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a) |
2022-02-09 21:41:26 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:41:33 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:41:47 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:41:55 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:42:10 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:42:17 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:42:32 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:42:39 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:42:53 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:43:01 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:43:14 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:43:22 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:43:37 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:43:44 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:43:57 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:44:05 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:44:20 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:44:27 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:44:41 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:44:49 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:45:04 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:45:11 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:45:22 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Remote host closed the connection) |
2022-02-09 21:45:25 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:45:32 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:45:47 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:45:54 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:46:06 +0100 | gehmehgeh | (~user@user/gehmehgeh) |
2022-02-09 21:46:08 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:46:15 +0100 | safinaskar | (~quassel@109.252.91.116) () |
2022-02-09 21:46:16 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:46:30 +0100 | lavaman | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:46:52 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:47:00 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:47:15 +0100 | lavaman | (~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 +0100 | lavaman | (~lavaman@98.38.249.169) (Remote host closed the connection) |
2022-02-09 21:47:37 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 21:47:44 +0100 | lavaman | (~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 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) |
2022-02-09 21:50:15 +0100 | <EvanR> | use exceptions xD |
2022-02-09 21:50:21 +0100 | eggplantade | (~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 +0100 | zeenk | (~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 +0100 | jao | (~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 +0100 | alp | (~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 +0100 | slack1256 | (~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 +0100 | slac52342 | (~slack1256@186.11.25.249) (Ping timeout: 240 seconds) |
2022-02-09 22:05:59 +0100 | chessai | (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 +0100 | alMalsamo | (~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 +0100 | burnsidesLlama | (~burnsides@dhcp168-051.wadham.ox.ac.uk) |
2022-02-09 22:12:31 +0100 | dsrt^ | (~dsrt@128-092-160-106.biz.spectrum.com) |
2022-02-09 22:15:19 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-02-09 22:16:43 +0100 | mikoto-chan | (~mikoto-ch@213.177.151.239) (Ping timeout: 256 seconds) |
2022-02-09 22:18:16 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 22:21:26 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
2022-02-09 22:22:41 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 252 seconds) |
2022-02-09 22:26:20 +0100 | albet70 | (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
2022-02-09 22:28:26 +0100 | Hildegunst | (~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 +0100 | wavemode | (~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 +0100 | zincy | (~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 +0100 | albet70 | (~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 +0100 | mc47 | (~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 +0100 | ober | (~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 +0100 | tzh_ | (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
2022-02-09 22:42:55 +0100 | Topsi | (~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 +0100 | mmhat | (~mmh@55d4f954.access.ecotel.net) (Quit: WeeChat 3.4) |
2022-02-09 22:43:16 +0100 | tzh | (~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 +0100 | motherfsck | (~motherfsc@user/motherfsck) |
2022-02-09 22:49:42 +0100 | tiferrei | (~tiferrei@user/tiferrei) |
2022-02-09 22:50:44 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) |
2022-02-09 22:51:48 +0100 | alp | (~alp@user/alp) |
2022-02-09 22:54:57 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) (Ping timeout: 240 seconds) |
2022-02-09 22:56:17 +0100 | takuan | (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
2022-02-09 23:03:18 +0100 | tiferrei | (~tiferrei@user/tiferrei) (Remote host closed the connection) |
2022-02-09 23:04:30 +0100 | lavaman | (~lavaman@98.38.249.169) |
2022-02-09 23:05:17 +0100 | Midjak | (~Midjak@may53-1-78-226-116-92.fbx.proxad.net) |
2022-02-09 23:06:01 +0100 | deadmarshal | (~deadmarsh@95.38.116.14) (Ping timeout: 256 seconds) |
2022-02-09 23:06:47 +0100 | tiferrei | (~tiferrei@user/tiferrei) |
2022-02-09 23:07:23 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) |
2022-02-09 23:08:37 +0100 | lavaman | (~lavaman@98.38.249.169) (Ping timeout: 240 seconds) |
2022-02-09 23:13:02 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-02-09 23:13:20 +0100 | ProfSimm | (~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 +0100 | ober_ | (~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 +0100 | ober | (~ober@c-73-68-74-41.hsd1.ma.comcast.net) (Ping timeout: 256 seconds) |
2022-02-09 23:24:53 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) (Remote host closed the connection) |
2022-02-09 23:25:13 +0100 | ProfSimm | (~ProfSimm@87.227.196.109) |
2022-02-09 23:26:17 +0100 | wavemode | (~wavemode@2601:241:0:fc90:2892:d0:a7ec:bc11) (Quit: Client closed) |
2022-02-09 23:26:36 +0100 | alx741 | (~alx741@157.100.197.240) (Quit: alx741) |
2022-02-09 23:27:19 +0100 | wombat875 | (~wombat875@pool-72-89-24-154.nycmny.fios.verizon.net) (Ping timeout: 256 seconds) |
2022-02-09 23:28:52 +0100 | wavemode | (~wavemode@2601:241:0:fc90:2892:d0:a7ec:bc11) |
2022-02-09 23:29:20 +0100 | cosimone | (~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 +0100 | jgeerds | (~jgeerds@55d4a547.access.ecotel.net) |
2022-02-09 23:32:23 +0100 | michalz | (~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 +0100 | ec | (~ec@gateway/tor-sasl/ec) (Quit: ec) |
2022-02-09 23:35:00 +0100 | erisco | (~erisco@d24-57-249-233.home.cgocable.net) (Quit: ZNC 1.8.2+cygwin2 - https://znc.in) |
2022-02-09 23:35:48 +0100 | erisco | (~erisco@d24-57-249-233.home.cgocable.net) |
2022-02-09 23:35:48 +0100 | deadmarshal | (~deadmarsh@95.38.117.25) |
2022-02-09 23:37:42 +0100 | erisco | (~erisco@d24-57-249-233.home.cgocable.net) (Read error: Connection reset by peer) |
2022-02-09 23:38:03 +0100 | erisco | (~erisco@d24-57-249-233.home.cgocable.net) |
2022-02-09 23:38:13 +0100 | machinedgod | (~machinedg@24.105.81.50) (Ping timeout: 240 seconds) |
2022-02-09 23:38:41 +0100 | little_mac | (~little_ma@2601:410:4300:3ce0:89bd:bcbb:df15:8e9a) (Ping timeout: 245 seconds) |
2022-02-09 23:40:21 +0100 | deadmarshal | (~deadmarsh@95.38.117.25) (Ping timeout: 256 seconds) |
2022-02-09 23:41:14 +0100 | merijn | (~merijn@c-001-001-027.client.esciencecenter.eduvpn.nl) (Ping timeout: 250 seconds) |
2022-02-09 23:42:57 +0100 | Pickchea | (~private@user/pickchea) |
2022-02-09 23:43:03 +0100 | wyrd | (~wyrd@gateway/tor-sasl/wyrd) (Ping timeout: 276 seconds) |
2022-02-09 23:43:08 +0100 | gehmehgeh | (~user@user/gehmehgeh) (Quit: Leaving) |
2022-02-09 23:46:16 +0100 | max22- | (~maxime@2a01cb088335980012c6117e30bee14c.ipv6.abo.wanadoo.fr) (Quit: Leaving) |
2022-02-09 23:46:27 +0100 | bontaq | (~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection) |
2022-02-09 23:51:43 +0100 | slack1256 | (~slack1256@191.126.227.70) (Remote host closed the connection) |
2022-02-09 23:55:51 +0100 | eggplantade | (~Eggplanta@2600:1700:bef1:5e10:30cc:b923:a3cb:c39c) |
2022-02-09 23:56:25 +0100 | foul_owl | (~kerry@71.212.148.11) |
2022-02-09 23:56:35 +0100 | zincy | (~zincy@host86-151-99-97.range86-151.btcentralplus.com) |
2022-02-09 23:56:39 +0100 | deadmarshal | (~deadmarsh@95.38.117.25) |
2022-02-09 23:58:12 +0100 | Ariakenom | (~Ariakenom@h-82-196-111-63.NA.cust.bahnhof.se) (Quit: Leaving) |
2022-02-09 23:59:00 +0100 | sprout | (~quassel@2a02:a467:ccd6:1:511a:5eb2:c96:106b) (Ping timeout: 250 seconds) |
2022-02-09 23:59:45 +0100 | ober__ | (~ober@c-73-68-74-41.hsd1.ma.comcast.net) |