Logs on 2021-01-24 (freenode/#haskell)
| 00:09:03 | → | mirrorbird joins (~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0) |
| 00:10:15 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 00:10:19 | × | hyperisco quits (~hyperisco@104-195-141-253.cpe.teksavvy.com) (Ping timeout: 264 seconds) |
| 00:10:20 | → | poljar1 joins (~poljar@93-139-54-120.adsl.net.t-com.hr) |
| 00:13:05 | × | poljar quits (~poljar@93-139-54-120.adsl.net.t-com.hr) (Ping timeout: 240 seconds) |
| 00:19:26 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 00:20:12 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 00:20:34 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) |
| 00:22:27 | × | flatheap quits (~quassel@pool-74-104-136-149.bstnma.fios.verizon.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 00:22:45 | <ezzieyguywuf> | optparse-applicative is quite nice |
| 00:23:33 | → | flatheap joins (~quassel@pool-74-104-136-149.bstnma.fios.verizon.net) |
| 00:23:43 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 246 seconds) |
| 00:24:02 | ← | gzc[m] parts (gzcmatrixo@gateway/shell/matrix.org/x-aaxylewkawpexjut) ("User left") |
| 00:25:26 | × | geyaeb quits (~geyaeb@gateway/tor-sasl/geyaeb) (Quit: Leaving) |
| 00:26:18 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 00:26:40 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 00:26:44 | → | Tops21 joins (~Tobias@dyndsl-095-033-016-051.ewe-ip-backbone.de) |
| 00:26:57 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 00:27:33 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds) |
| 00:30:05 | × | Tops2 quits (~Tobias@dyndsl-095-033-016-051.ewe-ip-backbone.de) (Ping timeout: 240 seconds) |
| 00:31:29 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 00:31:55 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 264 seconds) |
| 00:32:53 | × | flatheap quits (~quassel@pool-74-104-136-149.bstnma.fios.verizon.net) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
| 00:34:01 | → | flatheap joins (~quassel@pool-74-104-136-149.bstnma.fios.verizon.net) |
| 00:35:47 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 260 seconds) |
| 00:38:57 | × | Lowl3v3l quits (~Lowl3v3l@dslb-002-203-233-121.002.203.pools.vodafone-ip.de) (Quit: Leaving.) |
| 00:41:09 | → | byzgen joins (427395e3@66.115.149.227) |
| 00:43:56 | → | geyaeb joins (~geyaeb@gateway/tor-sasl/geyaeb) |
| 00:44:16 | × | ulidtko|kk quits (~ulidtko@193.111.48.79) (Ping timeout: 272 seconds) |
| 00:45:39 | → | Tario joins (~Tario@201.192.165.173) |
| 00:46:05 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 00:47:20 | × | geyaeb quits (~geyaeb@gateway/tor-sasl/geyaeb) (Remote host closed the connection) |
| 00:48:01 | → | byzgen71 joins (6b4de6a8@mobile-107-77-230-168.mobile.att.net) |
| 00:48:33 | × | byzgen quits (427395e3@66.115.149.227) (Ping timeout: 248 seconds) |
| 00:49:34 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Ping timeout: 268 seconds) |
| 00:49:42 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 00:50:04 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 00:50:47 | × | conal quits (~conal@192.145.117.135) (Quit: Computer has gone to sleep.) |
| 00:51:05 | → | geyaeb joins (~geyaeb@gateway/tor-sasl/geyaeb) |
| 00:51:21 | → | conal joins (~conal@192.145.117.135) |
| 00:51:32 | × | conal quits (~conal@192.145.117.135) (Client Quit) |
| 00:53:31 | → | conal joins (~conal@192.145.117.135) |
| 00:55:19 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds) |
| 00:56:17 | <ezzieyguywuf> | is reflex-backend-socket and reflex-backend-wai deprecated? They both depend on reflex-basic-host, which is clearly deprecated (per hackage) |
| 00:56:23 | × | conal quits (~conal@192.145.117.135) (Client Quit) |
| 00:57:02 | → | conal joins (~conal@192.145.117.135) |
| 00:57:18 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 265 seconds) |
| 00:57:18 | × | alx741 quits (~alx741@186.178.110.72) (Quit: alx741) |
| 00:57:35 | → | alx741 joins (~alx741@186.178.110.72) |
| 00:58:42 | × | steven2 quits (~steven@139.28.218.148) (Remote host closed the connection) |
| 01:02:11 | × | viluon quits (uid453725@gateway/web/irccloud.com/x-bmmqtddhvrpxqftw) (Quit: Connection closed for inactivity) |
| 01:03:32 | × | conal quits (~conal@192.145.117.135) (Quit: Computer has gone to sleep.) |
| 01:04:15 | × | Tuplanolla quits (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) (Quit: Leaving.) |
| 01:05:00 | → | conal joins (~conal@192.145.117.135) |
| 01:06:25 | × | kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 272 seconds) |
| 01:07:58 | → | mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl) |
| 01:07:58 | × | mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host) |
| 01:07:58 | → | mouseghost joins (~draco@wikipedia/desperek) |
| 01:08:25 | → | olligobber joins (olligobber@gateway/vpn/privateinternetaccess/olligobber) |
| 01:10:30 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 01:10:35 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 01:14:05 | → | bcremer joins (~bcremer@185.204.1.185) |
| 01:15:13 | × | conal quits (~conal@192.145.117.135) (Quit: Computer has gone to sleep.) |
| 01:15:53 | → | conal joins (~conal@192.145.117.135) |
| 01:19:23 | × | Guest81775 quits (~textual@2603-7000-3040-0000-c9ad-d200-ba76-775e.res6.spectrum.com) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 01:19:50 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 264 seconds) |
| 01:19:52 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 01:20:11 | → | Tario joins (~Tario@201.192.165.173) |
| 01:20:13 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 01:20:15 | × | conal quits (~conal@192.145.117.135) (Ping timeout: 256 seconds) |
| 01:20:34 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) |
| 01:21:11 | → | dlbh^ joins (~hph@ip98-184-89-2.mc.at.cox.net) |
| 01:21:30 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 01:22:19 | → | conal joins (~conal@66.115.157.135) |
| 01:30:19 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 01:32:57 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 260 seconds) |
| 01:33:19 | → | rajivr joins (uid269651@gateway/web/irccloud.com/x-dbiyulzuylwqsfrt) |
| 01:33:40 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 01:35:36 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 01:35:36 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 01:36:40 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 01:38:23 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 01:38:39 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 01:41:49 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 01:43:09 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 272 seconds) |
| 01:46:03 | × | conal quits (~conal@66.115.157.135) (Quit: Computer has gone to sleep.) |
| 01:46:41 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 01:47:00 | → | conal joins (~conal@66.115.157.135) |
| 01:51:05 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 01:51:38 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 264 seconds) |
| 01:52:00 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 01:53:50 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 01:55:05 | × | conal quits (~conal@66.115.157.135) (Quit: Computer has gone to sleep.) |
| 01:57:08 | → | conal joins (~conal@192.145.117.143) |
| 01:57:13 | × | conal quits (~conal@192.145.117.143) (Client Quit) |
| 01:57:27 | <zebrag> | `data X a = X a b`, is a relevant inductive type definition? It is rejected with "not in scope type variable b". What is the minimum to have it accepted? |
| 02:01:23 | × | mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew) |
| 02:02:10 | → | conal joins (~conal@66.115.157.106) |
| 02:03:21 | <zebrag> | What confuses me is several extensions are providing `forall`, and I don't know which to chose. |
| 02:04:49 | × | byzgen71 quits (6b4de6a8@mobile-107-77-230-168.mobile.att.net) (Ping timeout: 248 seconds) |
| 02:05:37 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 260 seconds) |
| 02:05:38 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0) |
| 02:06:32 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 02:07:22 | <zebrag> | I did `{-# LANGUAGE GADTs, RankNTypes #-}`, as suggested there: https://rcalsaverini.github.io/blog/2018-02-12-type-safe-records/ |
| 02:08:24 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 02:11:03 | × | conal quits (~conal@66.115.157.106) (Quit: Computer has gone to sleep.) |
| 02:15:24 | → | conal joins (~conal@66.115.157.106) |
| 02:16:18 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Quit: oisdk) |
| 02:16:52 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 02:17:19 | <monochrom> | Depends on why you have that extra "b". |
| 02:20:12 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 02:20:19 | × | conal quits (~conal@66.115.157.106) (Quit: Computer has gone to sleep.) |
| 02:20:35 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) |
| 02:23:51 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 02:24:26 | → | conal joins (~conal@66.115.157.106) |
| 02:25:19 | × | Benzi-Junior quits (~BenziJuni@88-149-65-135.du.xdsl.is) (Quit: gone) |
| 02:25:21 | <zebrag> | Yes, yes, the cited page above is quite well written. For instance now I have `xs = [X 1 'a', X 2 2]`. Imagine I had a function returning the second field of the head of the list. That function would have an interesting type. Still reading... |
| 02:26:43 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 265 seconds) |
| 02:27:06 | × | conal quits (~conal@66.115.157.106) (Client Quit) |
| 02:27:13 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 02:27:13 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 02:28:10 | → | sgibber2018 joins (d055ed90@208.85.237.144) |
| 02:29:04 | <zebrag> | Really I'm reading p. 9 of https://arxiv.org/pdf/1403.0749.pdf "free applicative functors", and I already have enough on my plate, but I think, a must understand what the `forall` is for in that circumstance |
| 02:30:49 | → | conal joins (~conal@192.145.116.161) |
| 02:31:12 | → | Benzi-Junior joins (~BenziJuni@88-149-65-135.du.xdsl.is) |
| 02:31:21 | <hololeap> | someone in here suggested using haskell-language-server and ALE, and i have both installed, but i don't really understand how to use them. anyone familiar with this setup? |
| 02:31:25 | → | conal_ joins (~conal@192.145.117.129) |
| 02:31:41 | <zebrag> | I hope the forall of the tutorial is related to the forall of the article. But in any case the tutorial is interesting |
| 02:32:16 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 240 seconds) |
| 02:34:11 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 02:34:48 | × | Benzi-Junior quits (~BenziJuni@88-149-65-135.du.xdsl.is) (Client Quit) |
| 02:35:20 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 02:35:31 | × | conal quits (~conal@192.145.116.161) (Ping timeout: 264 seconds) |
| 02:35:43 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 02:38:31 | → | Benzi-Junior joins (~BenziJuni@dsl-149-65-135.hive.is) |
| 02:40:13 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 246 seconds) |
| 02:42:07 | × | Mr_Cue quits (~Mr._Cue@pengyuzhou.com) (Remote host closed the connection) |
| 02:42:21 | → | Mr_Cue joins (~Mr._Cue@pengyuzhou.com) |
| 02:43:09 | × | xff0x quits (~xff0x@2001:1a81:52f5:9400:43b:dce9:5389:7818) (Ping timeout: 265 seconds) |
| 02:43:32 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 260 seconds) |
| 02:44:04 | × | notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 246 seconds) |
| 02:44:42 | → | xff0x joins (~xff0x@2001:1a81:532d:4a00:cdd6:7cbf:2c73:b840) |
| 02:45:04 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 02:45:15 | <shachaf> | zebrag: The forall in that article is an existential. |
| 02:45:26 | <shachaf> | Or, it's used to make that type existential, I mean. forall is forall. |
| 02:45:45 | <shachaf> | It's a bit confusing that Haskell uses it like this, but I think it makes sense. |
| 02:46:37 | <shachaf> | You can think of it like this: data A = B Int means that, if x :: Int, then B x :: A |
| 02:46:59 | <shachaf> | data A = forall t. B t means that, for any type t, if x :: t, then B x :: A |
| 02:48:02 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Read error: Connection reset by peer) |
| 02:48:48 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 02:51:42 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 260 seconds) |
| 02:51:58 | × | conal_ quits (~conal@192.145.117.129) (Quit: Computer has gone to sleep.) |
| 02:52:17 | × | ep1ctetus quits (~epictetus@ip184-187-162-163.sb.sd.cox.net) (Read error: Connection reset by peer) |
| 02:52:38 | → | conal joins (~conal@192.145.117.129) |
| 02:52:42 | × | conal quits (~conal@192.145.117.129) (Client Quit) |
| 02:54:58 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 02:55:57 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 02:56:38 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 02:58:08 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds) |
| 02:59:48 | → | conal joins (~conal@209.58.133.168) |
| 03:00:18 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 268 seconds) |
| 03:01:02 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 260 seconds) |
| 03:01:42 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 03:03:23 | → | jollygood2 joins (~bc8134e3@217.29.117.252) |
| 03:04:50 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 264 seconds) |
| 03:05:32 | <zebrag> | monochrom: :set -XGADTs -XRankNTypes; data X a = forall b . X a b; xs = [X 1 'a', X 2 2]; { f :: forall b . b -> Int; f b = 3}; { fs [] = 2; fs (X a b : _) = f b }; fs xs -- returns 3. It suits well with the existential elimination p. 5 of https://courses.cs.washington.edu/courses/cse321/10wi/natural-deduction.pdf |
| 03:07:14 | <zebrag> | I'm quite happy with that explanation, even though there are several versions of the existential elimination rule, and I'd like to know the specific name of the one in the last link p. 5 |
| 03:07:33 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 03:09:24 | → | xcmw joins (~textual@dyn-72-33-0-89.uwnet.wisc.edu) |
| 03:09:48 | <shachaf> | That code looks a bit like it's confusing things, though I'm not sure. |
| 03:11:18 | × | Tops21 quits (~Tobias@dyndsl-095-033-016-051.ewe-ip-backbone.de) (Read error: Connection reset by peer) |
| 03:11:34 | <shachaf> | Maybe not and I'm just not seeing what it's trying to do. |
| 03:14:27 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 260 seconds) |
| 03:15:07 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 264 seconds) |
| 03:16:59 | × | darjeeling_ quits (~darjeelin@115.215.41.174) (Ping timeout: 265 seconds) |
| 03:17:23 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 03:20:09 | × | conal quits (~conal@209.58.133.168) (Quit: Computer has gone to sleep.) |
| 03:20:22 | → | Codaraxis__ joins (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) |
| 03:20:44 | → | conal joins (~conal@209.58.133.168) |
| 03:20:50 | × | conal quits (~conal@209.58.133.168) (Client Quit) |
| 03:21:35 | <zebrag> | shachaf: it shows a function that makes use of the second field of the data constructor `X`, whose type is nevertheless not allowed to "escape its scope". Which we have been able to use on a list whose elements are of any possible type `[X 1 'a', X 2 2]`. I personally find it amazing. And IMO it follows the pattern of the existential elimination rule in sequent calculus NJ. |
| 03:22:22 | <shachaf> | Sure, that's true. f is just a constant function here, though, it doesn't really use the value. |
| 03:22:27 | <shachaf> | You can do something like this: |
| 03:22:40 | <shachaf> | @let data T = forall x. T x (x -> Int) |
| 03:22:41 | <lambdabot> | Defined. |
| 03:23:02 | → | conal joins (~conal@209.58.133.168) |
| 03:23:18 | <shachaf> | > let f :: T -> Int; f (T x f) = f x in f (T 'a' ord) |
| 03:23:20 | <lambdabot> | 97 |
| 03:23:33 | <zebrag> | Yes, yes, I see |
| 03:23:36 | × | Codaraxis_ quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Ping timeout: 240 seconds) |
| 03:23:50 | <shachaf> | Even this is kind of useless, of course, because you'd rather f just take an Int argument directly. |
| 03:24:07 | <zebrag> | A wee bit smarter, if you really want to make use of that field ;) |
| 03:25:02 | → | drbean joins (~drbean@TC210-63-209-17.static.apol.com.tw) |
| 03:25:07 | <shachaf> | A more interesting example is, I don't know, a type like data Nat = forall x. Nat x (x -> Maybe x) |
| 03:25:24 | <zebrag> | But, that it follows the pattern of existential elimination would explain, IMO, why, it's called "existential type" |
| 03:26:25 | <zebrag> | Yes, yes, I see your example, it is the usual one, if I remember correctly |
| 03:27:22 | <shachaf> | Well, sure, it's existential for the same reason the term is used in logic. |
| 03:27:36 | <shachaf> | You could also write it with an existential quantifier directly, if Haskell supported it, which it doesn't. |
| 03:27:43 | × | alx741 quits (~alx741@186.178.110.72) (Quit: alx741) |
| 03:28:14 | × | conal quits (~conal@209.58.133.168) (Quit: Computer has gone to sleep.) |
| 03:31:31 | → | conal joins (~conal@209.58.133.168) |
| 03:32:43 | × | theDon quits (~td@94.134.91.217) (Ping timeout: 246 seconds) |
| 03:32:50 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 03:34:49 | → | theDon joins (~td@muedsl-82-207-238-092.citykom.de) |
| 03:34:59 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 03:35:50 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 03:38:05 | × | vappend quits (~ezrakilty@75-172-109-5.tukw.qwest.net) (Remote host closed the connection) |
| 03:39:02 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 03:39:09 | <zebrag> | We have a parametrized "proposition=type" object, which we are assured is true, but we don't know for which value or type of the parameter, and we have to make the best of it. `X 1 'a'` is a proof of `X Int`, but the `'a'` is "existential", cannot escape. Well I think I understand "something", and I better stop before I get confused. |
| 03:39:22 | <zebrag> | shachaf: thanks for the help |
| 03:40:13 | <zebrag> | Plus I must go back to Free applicative functors |
| 03:40:50 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 264 seconds) |
| 03:41:26 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 264 seconds) |
| 03:44:42 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 03:44:51 | → | darjeeling_ joins (~darjeelin@115.215.41.174) |
| 03:45:38 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 03:47:50 | lagothrix | is now known as Guest92438 |
| 03:47:50 | → | xirhtogal joins (~lagothrix@unaffiliated/lagothrix) |
| 03:47:51 | × | Guest92438 quits (~lagothrix@unaffiliated/lagothrix) (Killed (tepper.freenode.net (Nickname regained by services))) |
| 03:47:51 | xirhtogal | is now known as lagothrix |
| 03:50:05 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Quit: leaving) |
| 03:54:02 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 264 seconds) |
| 03:57:17 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 03:59:09 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 03:59:12 | × | Lycurgus quits (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt) |
| 03:59:25 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Quit: Leaving) |
| 03:59:44 | → | vicfred joins (~vicfred@unaffiliated/vicfred) |
| 04:00:10 | → | Alleria joins (~textual@2603-7000-3040-0000-c9ad-d200-ba76-775e.res6.spectrum.com) |
| 04:00:28 | Alleria | is now known as Guest69298 |
| 04:01:13 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 04:04:02 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 260 seconds) |
| 04:04:50 | × | Guest69298 quits (~textual@2603-7000-3040-0000-c9ad-d200-ba76-775e.res6.spectrum.com) (Ping timeout: 264 seconds) |
| 04:04:54 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 04:05:42 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 04:06:17 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds) |
| 04:06:40 | × | threestrikes quits (~haskell@cpe-24-243-229-2.hot.res.rr.com) (Ping timeout: 246 seconds) |
| 04:07:31 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) |
| 04:07:36 | × | sgibber2018 quits (d055ed90@208.85.237.144) (Quit: Connection closed) |
| 04:10:37 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 272 seconds) |
| 04:15:17 | <ski> | zebrag : the formulation of existential elimination in those notes look strange |
| 04:15:38 | → | threestrikes joins (~haskell@cpe-24-243-229-2.hot.res.rr.com) |
| 04:16:01 | × | perrier-jouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.0) |
| 04:16:16 | × | juri_ quits (~juri@178.63.35.222) (Ping timeout: 240 seconds) |
| 04:16:18 | × | m0rphism1 quits (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) (Ping timeout: 260 seconds) |
| 04:17:26 | <ezzieyguywuf> | is there an, er, 'easy' way to find the latest version of a package (including revisions) on hackage given the package name programatically? |
| 04:18:29 | <Squarism> | What do you call a sumtype where no constructor takes an argument? If there is a name for them? |
| 04:18:38 | <ski> | "enumeration type" ? |
| 04:20:12 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 04:20:35 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) |
| 04:21:07 | <zebrag> | ski: "formulation of existential elimination in those notes" you mean the courses.cs.washington.edu thing? |
| 04:21:19 | <Squarism> | ski, thanks. |
| 04:22:06 | <ski> | yes |
| 04:22:56 | × | darjeeling_ quits (~darjeelin@115.215.41.174) (Ping timeout: 240 seconds) |
| 04:23:09 | <ski> | i think it should say just `P', not `P[t/x]' |
| 04:23:15 | <zebrag> | ski: well, it's the way they've been taught to me. So I was specifically looking for that. And then of course it doesn't look strange to me. |
| 04:23:31 | → | juri_ joins (~juri@178.63.35.222) |
| 04:23:37 | <zebrag> | hang on, checking |
| 04:24:03 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
| 04:24:23 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 04:24:41 | → | Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi) |
| 04:25:55 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds) |
| 04:26:38 | <zebrag> | ski: I was referring to the ugly small characters on p. 5 "existential-elimination". As for P[t/x] the line above, well it is introduction |
| 04:28:27 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 04:29:58 | <ski> | no, i'm talking about the `P[t/x]' in the paragraph starting "In English: [..]" |
| 04:30:21 | <Squarism> | I want to create a function foo :: SomeClass a => Proxy a -> [Attribute]. In my program, "a" can be Int, Bool, String, Enum a and 2-3 time representations. Basic types. Furthermore, "a" can ALSO be data Optional a = Known a | Unknown. And "a" can also be all previous mentioned types wrapped in Maybe. How could I write a function that collects all type info of the value passed to foo? if data Attribute = ABasicType String | AIsOptional | |
| 04:30:21 | <Squarism> | AIsMaybe ? |
| 04:31:11 | × | jathan quits (~jathan@69.61.93.38) (Quit: WeeChat 2.3) |
| 04:31:11 | <Squarism> | i was thinking Generics + some type classes. But Does Generics play well with proxies? Doesnt seem so? |
| 04:33:03 | <ski> | make `foo' a method of `SomeClass' ? |
| 04:33:13 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 260 seconds) |
| 04:34:28 | <Squarism> | ski, right. But how do I avoid needing to create 3 x num of "basic" types? |
| 04:34:40 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 04:34:58 | <ski> | what do you mean by "needing to create 3 x num of \"basic\" types" ? |
| 04:36:44 | <Squarism> | lets say the set of "basic types" are Int, Bool and String for ease of explanation. |
| 04:37:26 | <ski> | instance SomeClass Int |
| 04:37:28 | <ski> | where |
| 04:37:34 | <ski> | foo _ = [ABasicType] |
| 04:37:39 | <ski> | something like that ? |
| 04:38:50 | <zebrag> | ski: if we can deduce `exists x.P` from `Gamma`, and we can deduce `Q` from `P[t/x], then we can deduce `Q` from `Gamma`. I agree with that NatDed formulation, which seems also similar to what we see page 13 of https://www.cs.cmu.edu/~fp/courses/atp/handouts/ch2-natded.pdf |
| 04:39:15 | <Squarism> | I feel I need to implement SomeClass for all basic types, for all variants of Optional applied to the basic types and for all variants of Maybe Optional applied to all basic types |
| 04:39:21 | <Squarism> | ski, ^ |
| 04:39:38 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 264 seconds) |
| 04:39:39 | <zebrag> | p 14* |
| 04:39:44 | <zebrag> | not 13 |
| 04:39:49 | <Squarism> | just because "a" is a Proxy |
| 04:40:08 | <Squarism> | or i mean, the argument to foo is "Proxy a" |
| 04:40:14 | <ski> | zebrag : which term is `t' ? |
| 04:40:48 | → | sh9 joins (~sh9@softbank060116136158.bbtec.net) |
| 04:40:49 | <ski> | Squarism : what about `Maybe (Maybe Int)', should it be an instance of `SomeClass' ? |
| 04:41:40 | <ski> | zebrag : the rule in that other handout is different. `a' there is a parameter/constant, not an arbitrary term |
| 04:41:53 | <zebrag> | ski: if `even 2` is true then you can deduce `exists x. even x` is true. `t` is `2`. |
| 04:42:23 | <ski> | zebrag : yes, but that's existential introduction. i was talking about the existential elimination rule |
| 04:43:27 | <Squarism> | ski, no, it wont. Maybe (Optional Int), Maybe Int, Optional Int and Int should all be though. |
| 04:43:28 | <zebrag> | yes, on the top of the page |
| 04:43:40 | <zebrag> | well a is a term like `2` |
| 04:43:58 | <ski> | Squarism : and `Optional (Maybe Int) |
| 04:43:58 | <zebrag> | but it's on the negative part of an implication |
| 04:43:59 | <ski> | ' ? |
| 04:44:13 | <Squarism> | ski, nope. That shouldnt be allowed. |
| 04:44:15 | <ski> | "well a is a term like `2`" -- no, it's not |
| 04:44:34 | <zebrag> | hang on |
| 04:45:17 | <ski> | Squarism : `Optional (Optional Int)' ? |
| 04:45:36 | <Squarism> | nope, not that either. =D |
| 04:46:00 | <ski> | Squarism : it does sound like you'd need to either list each one explicitly, or maybe write some TH to generate the instance you want |
| 04:46:13 | <Squarism> | ah ok |
| 04:46:30 | <jollygood2> | :i Optional |
| 04:46:38 | <MarcelineVQ> | Squarism: why do you need this? |
| 04:46:43 | <Squarism> | ski, thanks for your insight. Much appreciated. |
| 04:47:04 | <Squarism> | MarcelineVQ, its for a DSL that describe form fields. |
| 04:48:08 | <ski> | zebrag : compare with the universal introduction rule |
| 04:48:41 | <zebrag> | ski: you might be right, it might be a mistake in the lecture notes p. 4 (cs.washington.edu). On my initial posts I was referring to the formulation p.5, which is, different. |
| 04:48:43 | <ski> | jollygood2 : Squarism defined it (as `data Optional a = Known a | Unknown') |
| 04:49:13 | <zebrag> | ski: I mean I completely agree with you |
| 04:50:00 | <zebrag> | But I'm not going to write the author about it |
| 04:50:14 | <ski> | zebrag : also, i think it's questionable to not mention Gamma in the side premisses of some rules (like existential elimination, e.g.) (talking about the <courses.cs.washington.edu> one) |
| 04:51:04 | <zebrag> | I was just looking for a lecture with the rules p. 5. |
| 04:51:18 | <ski> | (the alternative formulation on page five mentions it, for all the proper rules) |
| 04:52:16 | <ski> | (although, it's strange that it doesn't seem to mention either weakening/thinning/dilution, or else have Gamma mentioned in the rules with no premisses) |
| 04:52:43 | <zebrag> | yeah, probably too much Gamma rays |
| 04:53:00 | <ski> | :p |
| 04:53:13 | → | sgibber2018 joins (d055ed90@208.85.237.144) |
| 04:53:14 | → | raym joins (~ray@45.64.220.55) |
| 04:53:21 | → | darjeeling_ joins (~darjeelin@115.215.41.174) |
| 04:54:28 | <ezzieyguywuf> | are all the dots in this function the normal `func1 . func2` (what's it called - function application?) that I'm used to, or some sort of language extension? https://github.com/gentoo-haskell/hackport/blob/master/Portage/EBuild.hs#L114 |
| 04:54:29 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 04:55:34 | <Squarism> | ski, I was thinking GADTs could be helpful, but i guess proxies makes it hard? |
| 04:56:25 | <ski> | ezzieyguywuf : yes, except `L.nub'. (function composition) |
| 04:56:25 | <shachaf> | Function composition. Looks like it. |
| 04:56:34 | <MarcelineVQ> | ezzieyguywuf: composition, normal |
| 04:56:56 | <shachaf> | It's a slightly unusual use of composition. |
| 04:56:57 | <ezzieyguywuf> | what is the L.nub? |
| 04:57:02 | <ezzieyguywuf> | yea I found it quite weird |
| 04:57:08 | <MarcelineVQ> | import qualified Data.List as L |
| 04:57:13 | <ski> | `L' is `Data.List' |
| 04:57:19 | <Squarism> | ...long ago I tried out GADTs, so dont feel at home with them. |
| 04:57:28 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds) |
| 04:57:38 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:ccad:148:353e:8c25) (Ping timeout: 264 seconds) |
| 04:57:43 | <MarcelineVQ> | Squarism: gadts are the truth and the path |
| 04:57:49 | <ski> | i would have put whitespace before each of those `.'s |
| 04:58:07 | <ski> | (and move the ones at end-of-line to the next line) |
| 04:58:24 | <ski> | it's basically using `ShowS' |
| 04:59:07 | <Squarism> | MarcelineVQ, Ha.. you hare just pulling my leg. I just feel there are all these wonderful tools and I sense if I throw a hammer or saw on the problem it will solve itself =D |
| 04:59:51 | <ezzieyguywuf> | ahb |
| 05:00:08 | <ezzieyguywuf> | lol sorry |
| 05:00:19 | <ezzieyguywuf> | so Data.List.nub is a function itself, got it |
| 05:00:24 | × | HarveyPwca quits (~HarveyPwc@2601:246:c180:a570:29df:3b00:ad0e:3a06) (Quit: Leaving) |
| 05:00:41 | <ski> | (well, if you also include the `where'-part, there's `L.intercalate',`LS.splitOn',`TC.formatTime',`TC.defaultTimeLocale' in there .. and some dots in `String' literals) |
| 05:01:01 | <ski> | yes |
| 05:02:09 | → | idhugo joins (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) |
| 05:02:13 | <MarcelineVQ> | Squarism: Nearby is a sprwaling forest of quiet and shaded brush, deep in those woods is a clearing with a small house, just beyond its inviting threshold is a room, inside the room is a rustic but solid door, softly pulsing golden light shines through its keyhole. gadts are the key to that door |
| 05:03:04 | <Squarism> | Neat! |
| 05:04:16 | <ezzieyguywuf> | if it's regular function composition, I don't understand how `nl . nl` is a thing - nl is just a DString from what I can tell, and DString is String -> String, so `nl . nl` is... `String -> String -> String`? |
| 05:05:25 | → | dandart1 joins (~Thunderbi@home.dandart.co.uk) |
| 05:05:27 | <MarcelineVQ> | :t (.) |
| 05:05:29 | <lambdabot> | (b -> c) -> (a -> b) -> a -> c |
| 05:06:13 | <ski> | @type let nl = showChar '\n' in nl . nl |
| 05:06:14 | <lambdabot> | String -> String |
| 05:06:16 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Ping timeout: 240 seconds) |
| 05:06:16 | dandart1 | is now known as dandart |
| 05:06:16 | <ski> | @type let nl = showChar '\n' in nl . nl :: ShowS |
| 05:06:18 | <lambdabot> | ShowS |
| 05:07:00 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 05:08:43 | <ski> | (ah, it even mentions `showChar',`showString') |
| 05:10:16 | × | stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Read error: Connection reset by peer) |
| 05:10:17 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 05:10:52 | → | stree joins (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) |
| 05:11:05 | → | Tario joins (~Tario@201.192.165.173) |
| 05:11:09 | <ski> | .. and it has some redundant brackets, in places :( |
| 05:14:36 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 05:16:19 | → | rdivyanshu joins (uid322626@gateway/web/irccloud.com/x-wuizivshumzbfwsj) |
| 05:17:26 | × | bcremer quits (~bcremer@185.204.1.185) (Remote host closed the connection) |
| 05:18:30 | × | conal quits (~conal@209.58.133.168) (Quit: Computer has gone to sleep.) |
| 05:18:46 | × | hyiltiz quits (~quassel@unaffiliated/hyiltiz) (Ping timeout: 246 seconds) |
| 05:20:27 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 260 seconds) |
| 05:20:27 | → | walrus_man joins (~walrus_ma@209.65.35.103) |
| 05:20:38 | ← | walrus_man parts (~walrus_ma@209.65.35.103) () |
| 05:21:39 | × | threestrikes quits (~haskell@cpe-24-243-229-2.hot.res.rr.com) (Ping timeout: 272 seconds) |
| 05:22:13 | → | hyiltiz joins (~quassel@unaffiliated/hyiltiz) |
| 05:26:22 | → | feb1 joins (~feb@185.244.214.217) |
| 05:28:55 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 05:30:20 | × | slack1256 quits (~slack1256@dvc-186-186-101-190.movil.vtr.net) (Remote host closed the connection) |
| 05:31:06 | → | ixaxaar joins (~ixaxaar@49.207.210.215) |
| 05:31:22 | → | andrei joins (~user@c-66-31-23-28.hsd1.ma.comcast.net) |
| 05:32:46 | <andrei> | I'm trying to set up a custom compiler in a snapshot.yaml file. I can specify the compiler I want, but how do I specify which repo stack should pull the compiler from? The compiler-repository field, which I would normally put in a package.yaml file, isn't recognized with this error "Unrecognized fields in Snapshot: compiler-repository" |
| 05:38:05 | × | cole-h quits (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) (Ping timeout: 256 seconds) |
| 05:38:05 | × | bitmapper quits (uid464869@gateway/web/irccloud.com/x-hmarbgwdztdwlimf) (Quit: Connection closed for inactivity) |
| 05:40:15 | × | unlink2 quits (~unlink2@p200300ebcf14c6000228288353cacf99.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 05:40:44 | × | dlbh^ quits (~hph@ip98-184-89-2.mc.at.cox.net) () |
| 05:41:24 | <Squarism> | ha, Data.Reflection can look a types of proxies. Ugly but might solve my problem. |
| 05:48:22 | <Squarism> | i mean Type.Reflection |
| 05:49:38 | → | arcd joins (~arcd@c-73-129-22-35.hsd1.md.comcast.net) |
| 05:49:58 | × | machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 265 seconds) |
| 05:52:26 | → | tsrt^ joins (tsrt@ip98-184-89-2.mc.at.cox.net) |
| 05:53:31 | × | pera quits (~pera@unaffiliated/pera) (Ping timeout: 264 seconds) |
| 05:54:22 | → | threestrikes joins (~haskell@24.243.229.2) |
| 05:59:18 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 06:01:19 | × | mirrorbird quits (~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0) (Ping timeout: 265 seconds) |
| 06:02:28 | × | arcd quits (~arcd@c-73-129-22-35.hsd1.md.comcast.net) (Ping timeout: 260 seconds) |
| 06:04:43 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds) |
| 06:08:24 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 06:12:12 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 06:14:04 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 06:14:13 | × | dandart quits (~Thunderbi@home.dandart.co.uk) (Quit: dandart) |
| 06:15:46 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 06:17:45 | × | Mr_Cue quits (~Mr._Cue@pengyuzhou.com) (Ping timeout: 256 seconds) |
| 06:19:45 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 240 seconds) |
| 06:20:19 | → | coot joins (~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl) |
| 06:28:36 | × | threestrikes quits (~haskell@24.243.229.2) (Ping timeout: 240 seconds) |
| 06:28:44 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 06:30:58 | × | sgibber2018 quits (d055ed90@208.85.237.144) (Quit: Connection closed) |
| 06:32:58 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 246 seconds) |
| 06:34:10 | → | Mr_Cue joins (~Mr._Cue@pengyuzhou.com) |
| 06:36:12 | × | Mr_Cue quits (~Mr._Cue@pengyuzhou.com) (Remote host closed the connection) |
| 06:36:21 | → | Mr_Cue joins (~Mr._Cue@pengyuzhou.com) |
| 06:38:27 | × | urodna quits (~urodna@unaffiliated/urodna) (Quit: urodna) |
| 06:46:23 | → | Codaraxis_ joins (Codaraxis@gateway/vpn/mullvad/codaraxis) |
| 06:50:05 | × | Codaraxis__ quits (~Codaraxis@ip68-5-90-227.oc.oc.cox.net) (Ping timeout: 240 seconds) |
| 06:51:21 | × | Tario quits (~Tario@201.192.165.173) (Read error: Connection reset by peer) |
| 06:52:22 | × | Nikotiini quits (~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com) (Ping timeout: 256 seconds) |
| 06:57:04 | ← | brown121407 parts (~brown1214@fsf/member/brown121407) ("ERC (IRC client for Emacs 27.1)") |
| 06:59:59 | → | threestrikes joins (~haskell@cpe-24-243-229-2.hot.res.rr.com) |
| 07:00:04 | → | Alleria joins (~textual@2603-7000-3040-0000-c9ad-d200-ba76-775e.res6.spectrum.com) |
| 07:00:27 | Alleria | is now known as Guest74258 |
| 07:00:44 | × | darjeeling_ quits (~darjeelin@115.215.41.174) (Quit: WeeChat 2.9) |
| 07:02:26 | → | darjeeling_ joins (~darjeelin@115.215.41.174) |
| 07:04:50 | × | Guest74258 quits (~textual@2603-7000-3040-0000-c9ad-d200-ba76-775e.res6.spectrum.com) (Ping timeout: 264 seconds) |
| 07:06:00 | → | dnlkrgr joins (~dnlkrgr@HSI-KBW-046-005-005-235.hsi8.kabel-badenwuerttemberg.de) |
| 07:07:21 | × | Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection) |
| 07:09:08 | hackage | versions 4.0.2 - Types and parsers for software version numbers. https://hackage.haskell.org/package/versions-4.0.2 (fosskers) |
| 07:11:00 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 07:11:12 | → | Tario joins (~Tario@201.192.165.173) |
| 07:14:13 | × | xcmw quits (~textual@dyn-72-33-0-89.uwnet.wisc.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 07:14:39 | → | mirrorbird joins (~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0) |
| 07:15:16 | × | mirrorbird quits (~psutcliff@2a00:801:42b:aff3:74af:2f22:932d:eac0) (Client Quit) |
| 07:18:07 | × | threestrikes quits (~haskell@cpe-24-243-229-2.hot.res.rr.com) (Ping timeout: 246 seconds) |
| 07:20:37 | → | Nikotiini joins (~ubuntu@ec2-52-213-118-142.eu-west-1.compute.amazonaws.com) |
| 07:20:42 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 256 seconds) |
| 07:25:06 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 07:25:50 | → | takuan joins (~takuan@178-116-218-225.access.telenet.be) |
| 07:26:17 | → | noop_noob joins (b816787b@184.22.120.123) |
| 07:26:53 | → | maier joins (~maier@i59F67BFA.versanet.de) |
| 07:26:58 | × | noop_noob quits (b816787b@184.22.120.123) (Client Quit) |
| 07:37:58 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 07:39:09 | × | kupi quits (uid212005@gateway/web/irccloud.com/x-nkefntpavhwhxfim) (Quit: Connection closed for inactivity) |
| 07:40:16 | → | Saukk joins (~Saukk@83-148-239-3.dynamic.lounea.fi) |
| 07:41:05 | → | petersen joins (~petersen@redhat/juhp) |
| 07:43:40 | → | unlink2 joins (~unlink2@p5b08845b.dip0.t-ipconnect.de) |
| 07:47:55 | → | knupfer joins (~Thunderbi@i5E86B422.versanet.de) |
| 07:49:08 | × | coot quits (~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl) (Quit: coot) |
| 07:50:03 | × | clarity quits (~clarity@90.221.74.173) (Ping timeout: 260 seconds) |
| 07:51:19 | × | unlink2 quits (~unlink2@p5b08845b.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 07:52:00 | → | arcd joins (~arcd@c-73-129-22-35.hsd1.md.comcast.net) |
| 07:52:31 | → | unlink2 joins (~unlink2@p5b08845b.dip0.t-ipconnect.de) |
| 07:54:05 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 07:54:07 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Read error: Connection reset by peer) |
| 07:54:23 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 07:55:48 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 07:56:18 | × | avdb quits (~avdb@gateway/tor-sasl/avdb) (Ping timeout: 268 seconds) |
| 07:57:07 | × | arcd quits (~arcd@c-73-129-22-35.hsd1.md.comcast.net) (Ping timeout: 264 seconds) |
| 07:58:07 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 07:58:34 | → | Lowl3v3l joins (~Lowl3v3l@dslb-002-203-233-121.002.203.pools.vodafone-ip.de) |
| 07:59:04 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 246 seconds) |
| 08:00:10 | → | avdb joins (~avdb@gateway/tor-sasl/avdb) |
| 08:00:33 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 08:02:38 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 265 seconds) |
| 08:02:45 | × | cods quits (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 240 seconds) |
| 08:02:58 | → | cods joins (~fred@82-65-232-44.subs.proxad.net) |
| 08:02:58 | × | zaquest quits (~notzaques@5.128.210.178) (Remote host closed the connection) |
| 08:03:29 | → | xcmw joins (~textual@dyn-72-33-0-89.uwnet.wisc.edu) |
| 08:04:07 | → | zaquest joins (~notzaques@5.128.210.178) |
| 08:04:53 | → | threestrikes joins (~haskell@cpe-24-243-229-2.hot.res.rr.com) |
| 08:05:47 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
| 08:08:15 | × | xcmw quits (~textual@dyn-72-33-0-89.uwnet.wisc.edu) (Client Quit) |
| 08:09:05 | → | romanix joins (~romanix@staticline10864.toya.net.pl) |
| 08:09:48 | × | jb55 quits (~jb55@gateway/tor-sasl/jb55) (Remote host closed the connection) |
| 08:10:11 | → | jb55 joins (~jb55@gateway/tor-sasl/jb55) |
| 08:15:08 | → | nly joins (~user@unaffiliated/nly) |
| 08:15:22 | → | arcd joins (~arcd@c-73-129-22-35.hsd1.md.comcast.net) |
| 08:17:21 | → | idhugo_ joins (~idhugo@130.225.16.16) |
| 08:19:08 | → | Glyde joins (~glyde@90.221.74.173) |
| 08:19:35 | × | arcd quits (~arcd@c-73-129-22-35.hsd1.md.comcast.net) (Ping timeout: 256 seconds) |
| 08:19:36 | × | idhugo quits (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Ping timeout: 240 seconds) |
| 08:20:57 | → | totoro2022 joins (~t@unaffiliated/totoro2021) |
| 08:22:38 | hackage | hspec-meta 2.7.8 - A version of Hspec which is used to test Hspec itself https://hackage.haskell.org/package/hspec-meta-2.7.8 (SimonHengel) |
| 08:23:02 | × | totoro2021 quits (~t@unaffiliated/totoro2021) (Ping timeout: 256 seconds) |
| 08:23:26 | × | threestrikes quits (~haskell@cpe-24-243-229-2.hot.res.rr.com) (Ping timeout: 272 seconds) |
| 08:23:37 | ← | nly parts (~user@unaffiliated/nly) ("ERC (IRC client for Emacs 27.1)") |
| 08:24:34 | × | idhugo_ quits (~idhugo@130.225.16.16) (Read error: Connection reset by peer) |
| 08:25:52 | × | rdivyanshu quits (uid322626@gateway/web/irccloud.com/x-wuizivshumzbfwsj) (Quit: Connection closed for inactivity) |
| 08:26:19 | → | idhugo_ joins (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) |
| 08:29:00 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 08:29:50 | → | bow_ joins (~nordlys@128-76-227-69-cable.dk.customer.tdc.net) |
| 08:32:04 | × | avdb quits (~avdb@gateway/tor-sasl/avdb) (Ping timeout: 268 seconds) |
| 08:32:21 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 08:32:30 | → | avdb joins (~avdb@gateway/tor-sasl/avdb) |
| 08:33:43 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 264 seconds) |
| 08:34:09 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 08:36:04 | × | idhugo_ quits (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Ping timeout: 256 seconds) |
| 08:36:31 | × | jluttine quits (~jluttine@87-95-146-110.bb.dnainternet.fi) (Read error: Connection reset by peer) |
| 08:38:28 | → | jluttine joins (~jluttine@87-95-146-110.bb.dnainternet.fi) |
| 08:38:28 | × | Mr_Cue quits (~Mr._Cue@pengyuzhou.com) (Remote host closed the connection) |
| 08:38:42 | → | Mr_Cue joins (~Mr._Cue@pengyuzhou.com) |
| 08:42:18 | × | bow_ quits (~nordlys@128-76-227-69-cable.dk.customer.tdc.net) (Ping timeout: 256 seconds) |
| 08:44:38 | × | maier quits (~maier@i59F67BFA.versanet.de) (Ping timeout: 260 seconds) |
| 08:47:48 | → | maier joins (~maier@i59F67BFA.versanet.de) |
| 08:54:22 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 246 seconds) |
| 09:05:51 | → | idhugo_ joins (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) |
| 09:07:14 | → | arcd joins (~arcd@c-73-129-22-35.hsd1.md.comcast.net) |
| 09:07:27 | × | feb1 quits (~feb@185.244.214.217) (Remote host closed the connection) |
| 09:07:34 | × | arcd quits (~arcd@c-73-129-22-35.hsd1.md.comcast.net) (Client Quit) |
| 09:09:40 | × | drbean quits (~drbean@TC210-63-209-17.static.apol.com.tw) (Ping timeout: 272 seconds) |
| 09:12:39 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 09:13:37 | → | johncylee joins (~johncylee@185.204.1.185) |
| 09:13:48 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 09:14:52 | <idnar> | @hoogle Monad m => Bool -> m () -> m () |
| 09:14:53 | <lambdabot> | XMonad.Util.PureX when' :: (Monad m, Monoid a) => Bool -> m a -> m a |
| 09:14:53 | <lambdabot> | Control.Conditional when :: (ToBool bool, Monad m) => bool -> m () -> m () |
| 09:14:53 | <lambdabot> | Control.Monad when :: Applicative f => Bool -> f () -> f () |
| 09:15:38 | <idnar> | @hoogle Monad m => (a -> Bool) -> (a -> m ()) -> a -> m () |
| 09:15:40 | <lambdabot> | No results found |
| 09:16:07 | <idnar> | hmm |
| 09:16:27 | → | hannah joins (546babef@84-107-171-239.cable.dynamic.v4.ziggo.nl) |
| 09:17:47 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 272 seconds) |
| 09:18:29 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 09:18:43 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 09:21:51 | <idnar> | @type \p f -> traverseOf (filtered p) f |
| 09:21:52 | <lambdabot> | Applicative f => (s -> Bool) -> (s -> f s) -> s -> f s |
| 09:22:24 | <idnar> | is that too silly? |
| 09:23:04 | <idnar> | @pl \p f -> traverseOf (filtered p) f |
| 09:23:04 | <lambdabot> | traverseOf . filtered |
| 09:23:12 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 09:23:14 | <idnar> | ah duh |
| 09:24:27 | <idnar> | @type traverseOf_ . filtered |
| 09:24:29 | <lambdabot> | Applicative f => (s -> Bool) -> (s -> f r) -> s -> f () |
| 09:24:57 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 09:25:55 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 09:28:51 | → | pera joins (~pera@unaffiliated/pera) |
| 09:28:55 | <idnar> | well, that makes the code longer, so probably |
| 09:30:02 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 244 seconds) |
| 09:37:51 | × | hannah quits (546babef@84-107-171-239.cable.dynamic.v4.ziggo.nl) (Quit: Ping timeout (120 seconds)) |
| 09:38:21 | <siraben> | @type (.) . (.) |
| 09:38:22 | <lambdabot> | (b -> c) -> (a1 -> a2 -> b) -> a1 -> a2 -> c |
| 09:39:38 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Ping timeout: 264 seconds) |
| 09:41:54 | → | sgibber2018 joins (d055ed90@208.85.237.144) |
| 09:42:02 | × | L29Ah quits (~L29Ah@unaffiliated/l29ah) (Quit: Gateway shutdown) |
| 09:46:32 | → | Jackk_Doe joins (~jackk@205.178.111.134) |
| 09:46:53 | × | jollygood2 quits (~bc8134e3@217.29.117.252) (Quit: http://www.okay.uz/ (Session timeout)) |
| 09:49:11 | → | Neuromancer joins (~Neuromanc@unaffiliated/neuromancer) |
| 09:52:23 | → | hannah joins (546babef@84-107-171-239.cable.dynamic.v4.ziggo.nl) |
| 09:52:49 | × | idhugo_ quits (~idhugo@80-62-117-97-mobile.dk.customer.tdc.net) (Ping timeout: 246 seconds) |
| 09:53:33 | → | fendor joins (~fendor@178.165.130.159.wireless.dyn.drei.com) |
| 09:54:36 | → | Tuplanolla joins (~Tuplanoll@91-159-68-239.elisa-laajakaista.fi) |
| 09:54:37 | hackage | unliftio 0.2.14 - The MonadUnliftIO typeclass for unlifting monads to IO (batteries included) https://hackage.haskell.org/package/unliftio-0.2.14 (MichaelSnoyman) |
| 09:55:16 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: Leaving) |
| 09:55:46 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 09:58:34 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds) |
| 09:59:21 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 09:59:40 | → | L29Ah joins (~L29Ah@unaffiliated/l29ah) |
| 10:00:43 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 10:01:30 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 10:05:25 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 10:05:53 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 265 seconds) |
| 10:06:24 | → | hekkaidekapus] joins (~tchouri@gateway/tor-sasl/hekkaidekapus) |
| 10:06:37 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
| 10:06:56 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 10:07:43 | × | Sgeo quits (~Sgeo@ool-18b98aa4.dyn.optonline.net) (Read error: Connection reset by peer) |
| 10:09:30 | × | hekkaidekapus[ quits (~tchouri@gateway/tor-sasl/hekkaidekapus) (Ping timeout: 268 seconds) |
| 10:12:02 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
| 10:12:23 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 10:15:14 | × | hannah quits (546babef@84-107-171-239.cable.dynamic.v4.ziggo.nl) (Quit: hannah) |
| 10:16:43 | → | Alleria joins (~textual@zrcout.mskcc.org) |
| 10:17:07 | Alleria | is now known as Guest31086 |
| 10:17:27 | × | adeene quits (~adeene@181.131.0.191) (Ping timeout: 256 seconds) |
| 10:20:27 | × | ambiso9 quits (~ambiso@209.182.239.205) (Quit: The Lounge - https://thelounge.chat) |
| 10:21:36 | × | mapperr quits (~mapperr@vmi389916.contaboserver.net) (Remote host closed the connection) |
| 10:21:36 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 10:22:02 | × | hnOsmium0001 quits (uid453710@gateway/web/irccloud.com/x-johbzescvymnvzni) (Quit: Connection closed for inactivity) |
| 10:22:34 | → | mapperr joins (~mapperr@vmi389916.contaboserver.net) |
| 10:23:51 | → | ambiso9 joins (~ambiso@209.182.239.205) |
| 10:30:18 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds) |
| 10:32:05 | → | LKoen joins (~LKoen@19.175.9.109.rev.sfr.net) |
| 10:33:53 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 272 seconds) |
| 10:34:34 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 10:34:56 | → | son0p joins (~son0p@181.58.39.182) |
| 10:39:42 | → | Codaraxis__ joins (Codaraxis@gateway/vpn/mullvad/codaraxis) |
| 10:39:45 | × | Codaraxis_ quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Read error: Connection reset by peer) |
| 10:42:16 | × | Rudd0 quits (~Rudd0@185.189.115.108) (Ping timeout: 240 seconds) |
| 10:43:29 | → | Rudd0 joins (~Rudd0@185.189.115.103) |
| 10:45:36 | → | rdivyanshu joins (uid322626@gateway/web/irccloud.com/x-cbkoqfmvmesgsxmv) |
| 10:47:30 | × | robotmay quits (~beepboop@2001:8b0:7af0:2580:b9a7:9e38:86ee:d4de) (Remote host closed the connection) |
| 10:48:48 | → | robotmay joins (~beepboop@2001:8b0:7af0:2580:6014:55a2:696d:bf8c) |
| 10:59:09 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 11:01:07 | × | cawfee quits (chiya@2406:3003:2077:2341::babe) (Ping timeout: 260 seconds) |
| 11:03:00 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection) |
| 11:04:23 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 11:05:52 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Remote host closed the connection) |
| 11:06:32 | → | mdunnio joins (~mdunnio@172.97.43.112) |
| 11:06:38 | → | noj_ joins (~noj@ip-84-119-33-154.unity-media.net) |
| 11:07:12 | → | gehmehgeh joins (~ircuser1@gateway/tor-sasl/gehmehgeh) |
| 11:07:48 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 11:08:23 | → | kuribas joins (~user@ptr-25vy0i9x8mwpkg3g0kf.18120a2.ip6.access.telenet.be) |
| 11:09:16 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 11:10:42 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 11:10:52 | → | Lycurgus joins (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) |
| 11:11:03 | × | mdunnio quits (~mdunnio@172.97.43.112) (Ping timeout: 260 seconds) |
| 11:11:59 | × | Saukk quits (~Saukk@83-148-239-3.dynamic.lounea.fi) (Remote host closed the connection) |
| 11:13:41 | → | perrier-jouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) |
| 11:14:49 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) () |
| 11:15:09 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 11:16:11 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 11:16:56 | → | Franciman joins (~francesco@host-95-235-155-82.retail.telecomitalia.it) |
| 11:19:47 | × | pavonia quits (~user@unaffiliated/siracusa) (Quit: Bye!) |
| 11:19:48 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 260 seconds) |
| 11:21:11 | × | jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 11:23:39 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 11:23:49 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 11:29:41 | × | sgibber2018 quits (d055ed90@208.85.237.144) (Quit: Connection closed) |
| 11:30:06 | <kuribas> | good new, I am porting my hasqlator-mysql library to postgresql :-) |
| 11:30:07 | × | berberman quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in) |
| 11:30:08 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 11:30:32 | <kuribas> | Or rather, I am providing a stub, so that anyone else could do the work :-) |
| 11:30:37 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 11:32:39 | → | ricree joins (~ricree@2601:249:1580:4540:c9b3:d24f:2fb9:9782) |
| 11:32:52 | × | ricree quits (~ricree@2601:249:1580:4540:c9b3:d24f:2fb9:9782) (Client Quit) |
| 11:33:21 | <kuribas> | I am also taking my vacation time to document and publish my library... |
| 11:34:19 | → | ADG1089__ joins (~aditya@122.163.160.223) |
| 11:34:53 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 11:34:54 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
| 11:35:07 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 11:35:15 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 11:39:56 | → | m0rphism1 joins (~m0rphism@HSI-KBW-085-216-104-059.hsi.kabelbw.de) |
| 11:41:23 | × | maier quits (~maier@i59F67BFA.versanet.de) (Ping timeout: 256 seconds) |
| 11:41:43 | → | juuandyy joins (~juuandyy@90.106.228.121) |
| 11:44:05 | → | maier joins (~maier@i59F67BFA.versanet.de) |
| 11:44:46 | × | maier quits (~maier@i59F67BFA.versanet.de) (Client Quit) |
| 11:44:51 | → | sgibber2018 joins (d055ed90@208.85.237.144) |
| 11:48:22 | × | leah2 quits (~leah@vuxu.org) (Ping timeout: 260 seconds) |
| 11:50:56 | → | bow_ joins (~nordlys@128-76-227-69-cable.dk.customer.tdc.net) |
| 11:51:49 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 11:52:11 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 11:56:35 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 11:57:14 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds) |
| 11:59:48 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 12:00:54 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 244 seconds) |
| 12:01:52 | → | leah2 joins (~leah@vuxu.org) |
| 12:03:05 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 12:06:06 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 264 seconds) |
| 12:06:19 | → | concept25 joins (~concept2@unaffiliated/tubo) |
| 12:06:51 | × | concept2 quits (~concept2@unaffiliated/tubo) (Ping timeout: 246 seconds) |
| 12:06:52 | concept25 | is now known as concept2 |
| 12:07:45 | → | JuanDaugherty joins (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) |
| 12:08:01 | → | mouseghost joins (~draco@87-206-9-185.dynamic.chello.pl) |
| 12:08:01 | × | mouseghost quits (~draco@87-206-9-185.dynamic.chello.pl) (Changing host) |
| 12:08:01 | → | mouseghost joins (~draco@wikipedia/desperek) |
| 12:09:02 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 264 seconds) |
| 12:09:25 | × | p7lpa1ugixavugu quits (~atomic@2800:810:514:e7:441:86ab:9b24:7a9f) (Ping timeout: 272 seconds) |
| 12:10:00 | × | JuanDaugherty quits (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Client Quit) |
| 12:10:07 | hackage | req 3.9.0 - Easy-to-use, type-safe, expandable, high-level HTTP client library https://hackage.haskell.org/package/req-3.9.0 (mrkkrp) |
| 12:10:25 | → | JuanDaugherty joins (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) |
| 12:10:26 | × | JuanDaugherty quits (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Remote host closed the connection) |
| 12:13:32 | × | bow_ quits (~nordlys@128-76-227-69-cable.dk.customer.tdc.net) (Quit: Cheerio.) |
| 12:14:17 | → | __monty__ joins (~toonn@unaffiliated/toonn) |
| 12:17:14 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 12:17:46 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 12:18:42 | × | juuandyy quits (~juuandyy@90.106.228.121) (Ping timeout: 264 seconds) |
| 12:21:01 | × | raym quits (~ray@45.64.220.55) (Quit: leaving) |
| 12:21:36 | × | Rudd0 quits (~Rudd0@185.189.115.103) (Ping timeout: 240 seconds) |
| 12:22:13 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 260 seconds) |
| 12:23:40 | × | pera quits (~pera@unaffiliated/pera) (Remote host closed the connection) |
| 12:24:46 | → | juuandyy joins (~juuandyy@90.106.228.121) |
| 12:25:13 | → | fendor_ joins (~fendor@77.119.130.58.wireless.dyn.drei.com) |
| 12:25:57 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 12:27:53 | × | fendor quits (~fendor@178.165.130.159.wireless.dyn.drei.com) (Ping timeout: 272 seconds) |
| 12:29:26 | × | xff0x quits (~xff0x@2001:1a81:532d:4a00:cdd6:7cbf:2c73:b840) (Ping timeout: 264 seconds) |
| 12:29:54 | → | xff0x joins (~xff0x@2001:1a81:532d:4a00:c038:76cb:6123:7d2f) |
| 12:32:40 | × | juuandyy quits (~juuandyy@90.106.228.121) (Quit: Konversation terminated!) |
| 12:36:09 | × | Lycurgus quits (~niemand@cpe-45-46-139-165.buffalo.res.rr.com) (Quit: Exeunt) |
| 12:36:23 | → | p3n joins (~p3n@2a00:19a0:3:7c:0:d9c6:7cf6:1) |
| 12:37:56 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 12:42:42 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 264 seconds) |
| 12:42:58 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 12:44:13 | → | drbean joins (~drbean@TC210-63-209-76.static.apol.com.tw) |
| 12:44:57 | <maerwald> | excellent |
| 12:45:33 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 12:49:50 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 264 seconds) |
| 12:50:41 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 12:51:04 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 12:51:46 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 12:55:04 | × | rdivyanshu quits (uid322626@gateway/web/irccloud.com/x-cbkoqfmvmesgsxmv) (Quit: Connection closed for inactivity) |
| 12:55:54 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds) |
| 12:58:49 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 272 seconds) |
| 12:58:53 | × | concept2 quits (~concept2@unaffiliated/tubo) (Quit: See ya later!) |
| 13:00:50 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 13:01:04 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 13:06:35 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 13:07:50 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 264 seconds) |
| 13:09:47 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 13:12:56 | → | notzmv joins (~user@unaffiliated/zmv) |
| 13:16:27 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 260 seconds) |
| 13:17:56 | × | son0p quits (~son0p@181.58.39.182) (Quit: leaving) |
| 13:18:44 | → | sayantan joins (~sayantan@115.187.62.144) |
| 13:18:54 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 13:18:54 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 13:19:49 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 13:20:39 | × | sayantan quits (~sayantan@115.187.62.144) (Remote host closed the connection) |
| 13:20:46 | → | stree_ joins (~stree@50-108-110-177.adr01.mskg.mi.frontiernet.net) |
| 13:22:18 | × | stree quits (~stree@50-108-70-224.adr01.mskg.mi.frontiernet.net) (Ping timeout: 264 seconds) |
| 13:22:19 | → | jmchael joins (~jmchael@87.112.235.234) |
| 13:23:53 | → | concept2 joins (~concept2@unaffiliated/tubo) |
| 13:24:47 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 265 seconds) |
| 13:25:26 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 240 seconds) |
| 13:28:46 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 13:29:04 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Remote host closed the connection) |
| 13:29:21 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 13:30:54 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 13:32:16 | × | ADG1089__ quits (~aditya@122.163.160.223) (Remote host closed the connection) |
| 13:35:26 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 264 seconds) |
| 13:35:44 | <kuribas> | https://hackage.haskell.org/package/postgresql-libpq-0.9.4.3/docs/Database-PostgreSQL-LibPQ.html#v:execParams |
| 13:35:52 | <kuribas> | why is parameters a maybe value? |
| 13:35:57 | <kuribas> | for NULL fields? |
| 13:36:46 | → | fionnan joins (~fionnan@109.255.20.201) |
| 13:36:47 | <kuribas> | hmm, it seems so, since there is no Oid for null. |
| 13:36:59 | → | mmmattyx joins (uid17782@gateway/web/irccloud.com/x-wnweiphxkokvcjwq) |
| 13:37:02 | → | son0p joins (~son0p@181.136.122.143) |
| 13:37:05 | <kuribas> | I suppose a null pointer in the underlying c library. |
| 13:37:40 | × | Jackk_Doe quits (~jackk@205.178.111.134) (Quit: Going offline, see ya! (www.adiirc.com)) |
| 13:38:01 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 13:38:12 | × | acarrico quits (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) (Ping timeout: 272 seconds) |
| 13:38:12 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Ping timeout: 246 seconds) |
| 13:38:16 | × | cheater quits (~user@unaffiliated/cheater) (Remote host closed the connection) |
| 13:39:40 | → | cheater joins (~user@unaffiliated/cheater) |
| 13:41:19 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 13:41:25 | × | drbean quits (~drbean@TC210-63-209-76.static.apol.com.tw) (Ping timeout: 240 seconds) |
| 13:42:46 | → | Neuromancer joins (~Neuromanc@unaffiliated/neuromancer) |
| 13:44:26 | × | robotmay quits (~beepboop@2001:8b0:7af0:2580:6014:55a2:696d:bf8c) (Ping timeout: 264 seconds) |
| 13:44:38 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 13:44:55 | → | robotmay joins (~beepboop@80.172.187.81.in-addr.arpa) |
| 13:45:02 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 260 seconds) |
| 13:48:16 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
| 13:50:38 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 13:51:53 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 13:53:17 | × | sheb quits (~sheb@31.223.228.71) (Quit: Leaving) |
| 13:54:18 | → | sheb joins (~sheb@31.223.228.71) |
| 13:54:23 | → | sheb_ joins (~sheb@31.223.228.71) |
| 13:54:42 | × | sheb quits (~sheb@31.223.228.71) (Remote host closed the connection) |
| 13:54:42 | × | sheb_ quits (~sheb@31.223.228.71) (Remote host closed the connection) |
| 13:55:57 | × | vicfred quits (~vicfred@unaffiliated/vicfred) (Remote host closed the connection) |
| 13:56:57 | → | Jackk_Doe joins (~jackk@205.178.111.134) |
| 13:57:24 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 265 seconds) |
| 13:59:44 | → | bitmagie joins (~Thunderbi@200116b80681b700c1de5ab1a5161a12.dip.versatel-1u1.de) |
| 14:00:00 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 14:00:02 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 14:00:22 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 14:00:55 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection) |
| 14:01:11 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 14:02:38 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds) |
| 14:04:49 | × | denisse quits (~spaceCat@gateway/tor-sasl/alephzer0) (Remote host closed the connection) |
| 14:05:07 | → | denisse joins (~spaceCat@gateway/tor-sasl/alephzer0) |
| 14:05:15 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 256 seconds) |
| 14:06:41 | × | bitmagie quits (~Thunderbi@200116b80681b700c1de5ab1a5161a12.dip.versatel-1u1.de) (Quit: bitmagie) |
| 14:07:14 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 264 seconds) |
| 14:08:54 | → | Neuromancer joins (~Neuromanc@unaffiliated/neuromancer) |
| 14:09:20 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 14:11:00 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
| 14:11:07 | × | rcdilorenzo quits (~rcdiloren@cpe-76-182-87-188.nc.res.rr.com) (Quit: rcdilorenzo) |
| 14:11:21 | → | rcdilorenzo joins (~rcdiloren@45.152.180.20) |
| 14:12:24 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 14:12:46 | × | shinobi__ quits (~shinobi@c-24-147-48-162.hsd1.ma.comcast.net) (Read error: Connection reset by peer) |
| 14:13:13 | → | shinobi__ joins (~shinobi@c-24-147-48-162.hsd1.ma.comcast.net) |
| 14:15:38 | × | rcdilorenzo quits (~rcdiloren@45.152.180.20) (Client Quit) |
| 14:15:55 | → | rcdilorenzo joins (~rcdiloren@45.152.180.20) |
| 14:16:05 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 272 seconds) |
| 14:19:28 | × | bogdanp quits (~bogdanp@188.24.80.165) (Ping timeout: 260 seconds) |
| 14:22:37 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 14:24:30 | → | ADG1089__ joins (~aditya@122.163.160.223) |
| 14:25:00 | → | igghibu joins (~igghibu@91.193.5.10) |
| 14:25:08 | × | igghibu quits (~igghibu@91.193.5.10) (Client Quit) |
| 14:27:11 | → | bogdanp joins (~bogdanp@188.24.80.165) |
| 14:28:07 | → | sheb joins (~sheb@31.223.228.71) |
| 14:29:22 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 260 seconds) |
| 14:30:07 | → | LKoen_ joins (~LKoen@19.175.9.109.rev.sfr.net) |
| 14:30:52 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 14:31:01 | × | sheb quits (~sheb@31.223.228.71) (Client Quit) |
| 14:32:22 | → | poorlyknitmonad joins (2edfa393@HSI-KBW-46-223-163-147.hsi.kabel-badenwuerttemberg.de) |
| 14:32:40 | × | LKoen quits (~LKoen@19.175.9.109.rev.sfr.net) (Ping timeout: 272 seconds) |
| 14:35:47 | → | Deide joins (~Deide@217.155.19.23) |
| 14:38:07 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 260 seconds) |
| 14:39:40 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 14:39:56 | × | notzmv quits (~user@unaffiliated/zmv) (Ping timeout: 240 seconds) |
| 14:43:14 | <poorlyknitmonad> | Does anyone have any tips for deploying Haskell software to environments that don't have GHC/cabal-install/stack installed? I basically want CI to generate an executable that I can run on a Debian/Ubuntu server. I don't mind dynamic linking against libc and the likes. |
| 14:43:46 | <merijn> | poorlyknitmonad: Eh, that's easy |
| 14:43:53 | <poorlyknitmonad> | Good to hear :D |
| 14:43:54 | <maerwald> | static linking |
| 14:43:56 | <merijn> | poorlyknitmonad: That's basically the default output of cabal :p |
| 14:44:06 | <merijn> | poorlyknitmonad: Well, depending on other C dependencies or not |
| 14:44:47 | <poorlyknitmonad> | So I should be fine just dropping the executable generated by stack (which uses the Cabal library iirc) onto the server? |
| 14:44:50 | <merijn> | poorlyknitmonad: But the default behaviour is to link all Haskell libraries statically, so unless you're using some additional C libraries "only depends on libc" is what you get |
| 14:44:58 | <poorlyknitmonad> | Perfect! |
| 14:45:14 | <poorlyknitmonad> | That's exactly what I needed to know :) Very helpful! |
| 14:45:30 | <merijn> | poorlyknitmonad: If you have some external C dependencies you obviously need to take care of those, but that's easy enough to discover with ldd |
| 14:46:23 | <merijn> | poorlyknitmonad: maerwald has some stuff on how to build executables entirely static using musl instead of glibc in which case you basically only depend on the kernel API of linux |
| 14:46:48 | × | jamm quits (~jamm@unaffiliated/jamm) (Remote host closed the connection) |
| 14:47:07 | <poorlyknitmonad> | No, I don't. I was just wondering about the default "style" of stack/Cabal building Haskell binaries and wanted some quick tips. I couldn't find any concise guides on this which is why I asked you guys. |
| 14:47:09 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 14:47:16 | <hpc> | poorlyknitmonad: you may also want to take a look at how existing haskell .deb packages are built |
| 14:47:26 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 264 seconds) |
| 14:47:42 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 14:47:47 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 14:47:58 | <maerwald> | poorlyknitmonad: https://gist.github.com/hasufell/f0893abfbba63ac4ea40feb0520946ee#file-dockerfile-L21 |
| 14:47:58 | <merijn> | poorlyknitmonad: Also, you probably wanna enable --split-sections in cabal and strip the resulting executable. That should reduce executable size by an order of magnitude or more |
| 14:48:26 | <poorlyknitmonad> | Yea I thought that building a deb and deploying it using dpkg would probably a good idea but it's kind of a hassle for the project in question (which is a ~100 line spock server) |
| 14:49:43 | <poorlyknitmonad> | @maerwald thank you very much! |
| 14:49:43 | <lambdabot> | Unknown command, try @list |
| 14:50:03 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 14:51:05 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 240 seconds) |
| 14:51:19 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 14:51:50 | <poorlyknitmonad> | maerwald: your Dockerfile is used to build haskell-code-explorer? |
| 14:51:59 | → | cole-h joins (~cole-h@c-73-48-197-220.hsd1.ca.comcast.net) |
| 14:52:07 | <maerwald> | that's just an example, yeah |
| 14:52:08 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 260 seconds) |
| 14:53:27 | <poorlyknitmonad> | Very useful indeed, thank you for the pointers. |
| 14:53:44 | <poorlyknitmonad> | Also thank merijn and hpc :) Have a great day! |
| 14:54:14 | → | machinedgod joins (~machinedg@135-23-192-217.cpe.pppoe.ca) |
| 14:54:48 | → | ep1ctetus joins (~epictetus@ip184-187-162-163.sb.sd.cox.net) |
| 14:55:26 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 240 seconds) |
| 14:57:02 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 264 seconds) |
| 14:58:22 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 14:58:53 | × | ADG1089__ quits (~aditya@122.163.160.223) (Remote host closed the connection) |
| 15:00:19 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 15:00:49 | → | dedede joins (~david@81.61.242.182.dyn.user.ono.com) |
| 15:01:10 | → | jackk_ joins (~jackk@205.185.193.11) |
| 15:01:42 | × | rcdilorenzo quits (~rcdiloren@45.152.180.20) (Read error: Connection reset by peer) |
| 15:04:11 | × | Jackk_Doe quits (~jackk@205.178.111.134) (Ping timeout: 256 seconds) |
| 15:05:29 | × | sw1nn quits (~sw1nn@2a00:23c6:2385:3a00:9b97:771f:9a63:bf52) (Ping timeout: 272 seconds) |
| 15:05:55 | → | rcdilorenzo joins (~rcdiloren@45.152.180.20) |
| 15:06:41 | → | argento joins (~argent0@168.227.96.51) |
| 15:06:56 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 240 seconds) |
| 15:07:13 | × | poorlyknitmonad quits (2edfa393@HSI-KBW-46-223-163-147.hsi.kabel-badenwuerttemberg.de) (Ping timeout: 248 seconds) |
| 15:10:03 | × | mmkarakaya quits (~mmkarakay@176.33.226.136) (Quit: Quit) |
| 15:10:09 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 15:10:59 | × | argento quits (~argent0@168.227.96.51) (Client Quit) |
| 15:13:17 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) |
| 15:13:31 | × | berberman quits (~berberman@unaffiliated/berberman) (Quit: ZNC 1.8.2 - https://znc.in) |
| 15:15:33 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 15:16:38 | ← | dedede parts (~david@81.61.242.182.dyn.user.ono.com) ("Leaving") |
| 15:17:12 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 260 seconds) |
| 15:17:49 | → | sw1nn joins (~sw1nn@2a00:23c6:2385:3a00:2674:77a1:134b:dae9) |
| 15:19:07 | → | hyperisco joins (~hyperisco@104-195-141-253.cpe.teksavvy.com) |
| 15:19:30 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 15:21:24 | noj_ | is now known as nojster |
| 15:21:32 | × | philopsos quits (~caecilius@gateway/tor-sasl/caecilius) (Ping timeout: 268 seconds) |
| 15:22:52 | × | nojster quits (~noj@ip-84-119-33-154.unity-media.net) (Quit: [BX] Abort Retry Fail) |
| 15:23:35 | → | mmkarakaya joins (b021e288@176.33.226.136) |
| 15:25:37 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 15:26:32 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 244 seconds) |
| 15:28:31 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 265 seconds) |
| 15:28:54 | → | alx741 joins (~alx741@186.178.110.72) |
| 15:29:25 | × | centril quits (~centril@213-66-146-92-no250.tbcn.telia.com) (Ping timeout: 240 seconds) |
| 15:29:25 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 15:29:27 | → | philopsos joins (~caecilius@gateway/tor-sasl/caecilius) |
| 15:30:23 | → | p7lpa1ugixavugu joins (~atomic@2800:810:514:e7:cc6f:93b6:dad0:41ef) |
| 15:30:45 | <DigitalKiwi> | thank you merijn and hpc |
| 15:32:55 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Client Quit) |
| 15:34:13 | <kuribas> | how do you send multiple values (insert) using postgresql-libpq? |
| 15:34:19 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 265 seconds) |
| 15:34:27 | <kuribas> | execParams only accepts a single list |
| 15:35:52 | → | berberman_ joins (~berberman@unaffiliated/berberman) |
| 15:36:02 | × | berberman quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
| 15:36:29 | → | geekosaur joins (ae68c070@cpe-174-104-192-112.neo.res.rr.com) |
| 15:37:50 | × | fnordmeister quits (~user@unaffiliated/shadowdaemon) (Ping timeout: 264 seconds) |
| 15:39:10 | × | Franciman quits (~francesco@host-95-235-155-82.retail.telecomitalia.it) (Quit: Leaving) |
| 15:39:16 | × | elcaro quits (~anonymous@45.32.191.75) (Quit: Lost terminal) |
| 15:39:25 | → | Franciman joins (~francesco@host-95-235-155-82.retail.telecomitalia.it) |
| 15:39:54 | × | Franciman quits (~francesco@host-95-235-155-82.retail.telecomitalia.it) (Remote host closed the connection) |
| 15:39:55 | × | Guest31086 quits (~textual@zrcout.mskcc.org) (Quit: Textual IRC Client: www.textualapp.com) |
| 15:41:32 | → | aveltras joins (uid364989@gateway/web/irccloud.com/x-yzwdoakplczfwzde) |
| 15:42:01 | <kuribas> | ah wait, I just concatenate all arguments, right? |
| 15:44:08 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 15:44:12 | <aveltras> | does "mysteriousFunction" have a standard name here ? im trying to reduce the amount of typing |
| 15:44:17 | <aveltras> | https://www.irccloud.com/pastebin/I7qYPYZO/ |
| 15:44:31 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 15:45:38 | <merijn> | aveltras: Sadly, no |
| 15:46:05 | <aveltras> | ok, i'll define it then, thanks |
| 15:46:10 | <merijn> | aveltras: I have been wanting to add it to base, but so far that idea keeps getting stuck on name bikeshedding :p |
| 15:46:23 | <merijn> | aveltras: I usually call it mif, mwhen, or something along those lines |
| 15:46:49 | <hpc> | when i don't know what to name a variable, i name it greg |
| 15:47:03 | <kuribas> | I called it whenMono |
| 15:47:35 | <kuribas> | merijn: mif is pretty bad IMO ... |
| 15:48:06 | <kuribas> | mwhen is better IMO |
| 15:48:12 | <kuribas> | or mWhen |
| 15:48:13 | <aveltras> | there arent any "standard suffix" for monoid as there is for monads i guess (M) ? |
| 15:48:35 | <kuribas> | there is mconcat |
| 15:48:55 | <kuribas> | but it's more like "when" then like "if" |
| 15:49:18 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 264 seconds) |
| 15:49:19 | <aveltras> | l'll go with a "m" prefix |
| 15:50:34 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 15:50:47 | → | Feuermagier joins (~Feuermagi@213.178.26.41) |
| 15:52:23 | → | urodna joins (~urodna@unaffiliated/urodna) |
| 15:52:44 | <merijn> | How is it "more" like when then if |
| 15:53:28 | <aveltras> | ye, not sure about the difference between if and when since both expect a boolean, but i think when sounds nicer |
| 15:53:38 | <aveltras> | better than "mgreg" anyway |
| 15:53:48 | <merijn> | mgreg is clearly best |
| 15:54:07 | <aveltras> | it's some kind of code obfuscating magic |
| 15:54:08 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 15:57:27 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 260 seconds) |
| 15:58:00 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit) |
| 15:58:03 | × | leah2 quits (~leah@vuxu.org) (Ping timeout: 244 seconds) |
| 15:58:31 | → | Tario joins (~Tario@201.192.165.173) |
| 15:59:18 | → | leah2 joins (~leah@vuxu.org) |
| 15:59:28 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 15:59:53 | → | bitmapper joins (uid464869@gateway/web/irccloud.com/x-nbhyzqgjbgeousfo) |
| 15:59:57 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 16:01:27 | → | Rudd0 joins (~Rudd0@185.189.115.103) |
| 16:03:41 | → | threestrikes joins (~haskell@cpe-24-243-229-2.hot.res.rr.com) |
| 16:03:46 | <kuribas> | merijn: see what happens when you apply it over (Ap m ()) |
| 16:04:06 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Client Quit) |
| 16:04:29 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 16:04:50 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 16:05:50 | → | knupfer1 joins (~Thunderbi@i59F7FF7F.versanet.de) |
| 16:06:14 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 16:06:28 | <kuribas> | :t let mwhen True m = m; mwhen False _ = mempty; in \t -> getAp . mwhen t . Ap |
| 16:06:30 | <lambdabot> | forall k (f :: k -> *) (a :: k). Monoid (Ap f a) => Bool -> f a -> f a |
| 16:06:36 | × | knupfer quits (~Thunderbi@i5E86B422.versanet.de) (Ping timeout: 246 seconds) |
| 16:06:36 | knupfer1 | is now known as knupfer |
| 16:06:56 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 265 seconds) |
| 16:07:17 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 16:08:04 | × | jackk_ quits (~jackk@205.185.193.11) (Quit: Going offline, see ya! (www.adiirc.com)) |
| 16:08:19 | <kuribas> | at least it works for IO |
| 16:09:05 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 16:09:18 | → | hosseinfakhari joins (05755307@5.117.83.7) |
| 16:11:26 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 240 seconds) |
| 16:12:53 | → | ADG1089__ joins (~aditya@122.163.160.223) |
| 16:13:57 | <ephemient> | :t flip $ bool mempty |
| 16:13:58 | <lambdabot> | Monoid c => Bool -> c -> c |
| 16:14:56 | <kuribas> | ephemient: I am not convinced that is clearer |
| 16:15:06 | <kuribas> | it's more golfy... |
| 16:15:35 | <ephemient> | it's not, I was just thinking through how to make it work for other empty-ish things too |
| 16:16:02 | <aveltras> | i've defined |
| 16:16:04 | <aveltras> | https://www.irccloud.com/pastebin/wyhuCbCd/ |
| 16:16:07 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 260 seconds) |
| 16:16:13 | <kuribas> | I don't like bool, because you don't see which is the False and which the True case |
| 16:16:26 | <kuribas> | I've never used it, nor found a use for it. |
| 16:16:34 | <Uniaika> | same ^ |
| 16:16:41 | <Uniaika> | I'd rather use an inline if/then/else |
| 16:16:42 | × | Codaraxis__ quits (Codaraxis@gateway/vpn/mullvad/codaraxis) (Read error: Connection reset by peer) |
| 16:16:45 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 16:17:33 | <ephemient> | :t flip $ bool mzero -- e.g. this, but probably useless |
| 16:17:34 | <lambdabot> | MonadPlus m => Bool -> m a -> m a |
| 16:17:57 | <ephemient> | close enough to `when` that I don't see a use for it, anyway |
| 16:18:05 | → | jackk__ joins (~jackk@205-185-193-10.wlvpn.com) |
| 16:18:07 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 16:19:02 | <ephemient> | I do wish the m- prefix in Monoid and the m- prefix in MonadPlus were different letters, I still get mzero/mempty mixed up pretty often |
| 16:20:14 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 16:20:37 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) |
| 16:20:56 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 16:21:04 | → | viluon joins (uid453725@gateway/web/irccloud.com/x-yyjvswofzlbbkrkm) |
| 16:21:48 | × | olligobber quits (olligobber@gateway/vpn/privateinternetaccess/olligobber) (Remote host closed the connection) |
| 16:22:42 | <ephemient> | I think the order of bool's arguments makes sense - cf. either and maybe, first argument operates on first branch, second argument operates on second branch |
| 16:22:45 | × | elliott_ quits (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) (Ping timeout: 240 seconds) |
| 16:23:05 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 16:23:55 | <ephemient> | and False comes before True so that fromEnum 0 :: Bool is False |
| 16:24:15 | <ephemient> | but yeah it's pretty golfy to use in practice |
| 16:24:24 | <viluon> | hi, stupid question: is there a way to make Stack use the GHC installations managed by ghcup, or does it always install its own? |
| 16:24:26 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 240 seconds) |
| 16:24:52 | <merijn> | viluon: "the goes entirely against stack's intended use, so not really" |
| 16:25:01 | <ephemient> | https://docs.haskellstack.org/en/stable/yaml_configuration/#system-ghc |
| 16:25:05 | <tomsmeding> | ephemient: if you switch up the arguments to 'either' or 'maybe', you usually get a type error; not so for 'bool' |
| 16:25:32 | <ephemient> | true, no disagreement from me |
| 16:25:35 | <merijn> | viluon: Stack wants to manage everything per project, including the compiler. You can specify a systemwide compiler, but it's not something stack supports well |
| 16:25:51 | <viluon> | merijn: that is very sad |
| 16:26:04 | <maerwald> | viluon: yes |
| 16:26:04 | <viluon> | ephemient: thanks for the link! |
| 16:26:06 | <maerwald> | very easily |
| 16:26:14 | <maerwald> | and it's perfectly valid |
| 16:26:35 | <maerwald> | (e.g. because stack supports less unix platforms) |
| 16:26:54 | → | elliott_ joins (~elliott_@pool-108-51-101-42.washdc.fios.verizon.net) |
| 16:27:11 | → | Franciman joins (~francesco@host-95-235-155-82.retail.telecomitalia.it) |
| 16:27:14 | <maerwald> | I don't think there are any problems with it either |
| 16:27:15 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 16:27:49 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 16:28:05 | <merijn> | tbh, I'd argue that if you want a systemwide/global GHC, you probably don't want stack in the first place |
| 16:28:32 | <maerwald> | I don't see why |
| 16:28:41 | × | xff0x quits (~xff0x@2001:1a81:532d:4a00:c038:76cb:6123:7d2f) (Ping timeout: 265 seconds) |
| 16:29:04 | <maerwald> | you can set system-wide ghc and still set a specific ghc version |
| 16:29:05 | <ephemient> | stack's primary stated purpose is for reproducible builds, depending on unmanaged system state runs counter to that |
| 16:29:07 | → | xff0x joins (~xff0x@2001:1a81:532d:4a00:5b04:4936:8850:6534) |
| 16:30:11 | <merijn> | ephemient: Not really reproducible builds, tbh, just "curated dependency sets", with some air quotes around "curated" :p |
| 16:30:12 | × | kuribas quits (~user@ptr-25vy0i9x8mwpkg3g0kf.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3)) |
| 16:30:25 | × | hosseinfakhari quits (05755307@5.117.83.7) (Quit: Connection closed) |
| 16:30:34 | <maerwald> | stack isn't reproducible in the first place and a different GHC doesn't change that |
| 16:30:36 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 16:30:43 | → | Codaraxis joins (Codaraxis@gateway/vpn/mullvad/codaraxis) |
| 16:30:53 | <ephemient> | https://docs.haskellstack.org/en/stable/GUIDE/ "The primary stack design point is reproducible builds." |
| 16:31:04 | <ephemient> | well, maybe theory and practice don't exactly align |
| 16:31:37 | × | johncylee quits (~johncylee@185.204.1.185) (Remote host closed the connection) |
| 16:31:37 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0) |
| 16:31:42 | <maerwald> | they don't |
| 16:31:53 | <merijn> | ephemient: What *the* mean by reproducible is "exact build plan", which is not what *I* would call reproducible build |
| 16:32:08 | <merijn> | (Which would be an exactly identical binary) |
| 16:32:19 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 16:32:21 | <ephemient> | is that possible with GHC at this point? |
| 16:32:28 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 16:33:04 | <ephemient> | doing a quick search, https://gitlab.haskell.org/ghc/ghc/-/issues/4012 is still open |
| 16:33:09 | × | son0p quits (~son0p@181.136.122.143) (Ping timeout: 256 seconds) |
| 16:33:20 | <merijn> | No, afaik. Anyway you can get reproducible build-plans just fine with cabal-install |
| 16:33:42 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 244 seconds) |
| 16:33:59 | → | niekvand_ joins (~niekvande@89.205.141.125) |
| 16:34:02 | <Franciman> | maerwald, I forgot, if you'd need vabal's code, and there are license issues, I'm ready to make it free-er |
| 16:34:02 | → | kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) |
| 16:34:27 | × | kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Client Quit) |
| 16:34:48 | → | kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) |
| 16:35:51 | <maerwald> | Franciman: except i can't code because i have repetitive strain injury :p |
| 16:35:52 | → | ndcroos joins (5bb212d6@91.178.18.214) |
| 16:36:00 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 16:36:03 | <Franciman> | welcome to the team |
| 16:36:05 | <Franciman> | I'm there too :P |
| 16:36:07 | <Franciman> | sorry to hear that |
| 16:36:17 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 16:36:36 | <Uniaika> | maerwald: :( hope you'll get better |
| 16:36:44 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 240 seconds) |
| 16:36:49 | × | ADG1089__ quits (~aditya@122.163.160.223) (Remote host closed the connection) |
| 16:36:59 | <maerwald> | merijn can take over :p |
| 16:37:17 | → | ADG1089__ joins (~aditya@122.163.160.223) |
| 16:37:18 | <Franciman> | are you doing something for it? |
| 16:37:20 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 16:37:21 | → | arybczak joins (~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) |
| 16:37:40 | <maerwald> | for what? |
| 16:37:42 | <Franciman> | for RSI |
| 16:37:47 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 16:37:47 | <maerwald> | CBD lol |
| 16:38:08 | <Franciman> | I had shock waves and doing postural gym |
| 16:38:10 | <sm[m]> | g'day all! |
| 16:38:17 | <Franciman> | mezieres stuff |
| 16:38:21 | <Franciman> | getting better |
| 16:38:26 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 16:38:33 | <sm[m]> | what's the problem with using system GHC with stack ? It provides a bunch of flags for that use case |
| 16:38:37 | × | avdb quits (~avdb@gateway/tor-sasl/avdb) (Ping timeout: 268 seconds) |
| 16:38:48 | <maerwald> | Franciman: cool |
| 16:38:58 | <Franciman> | I really suggest mezieres |
| 16:39:08 | <Franciman> | but don't know if it suits your case |
| 16:39:16 | <maerwald> | Franciman: I crashed after my shoulder surgery last year, which probably made all my incorruct postures worse :D |
| 16:39:21 | <sm[m]> | and I don't mean to make maerwald type, hope he's got voice dictation working |
| 16:39:33 | <Franciman> | I see :/ |
| 16:39:41 | <Franciman> | that's totally possible |
| 16:39:47 | <maerwald> | sm[m]: yeah but it doesn't work very well |
| 16:40:11 | <maerwald> | I use dragonfly with kaldi |
| 16:40:18 | <Franciman> | mezieres i cool for getting back harmony of the shoulders, and torso and all the back |
| 16:40:37 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 16:40:43 | <Franciman> | enough with #haskell-med |
| 16:40:45 | <Franciman> | :P |
| 16:40:47 | <maerwald> | speech recognition on linux is a sad story |
| 16:40:49 | <Franciman> | hope you get well soon! |
| 16:40:59 | <sm[m]> | health tips are good! :) |
| 16:41:12 | <maerwald> | tip 1: don't code :D |
| 16:41:32 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 16:41:51 | × | Franciman quits (~francesco@host-95-235-155-82.retail.telecomitalia.it) (Quit: Leaving) |
| 16:42:33 | <maerwald> | sm[m]: i also think stack is fine with system wide ghc |
| 16:42:44 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 240 seconds) |
| 16:43:01 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 272 seconds) |
| 16:43:27 | × | ADG1089__ quits (~aditya@122.163.160.223) (Remote host closed the connection) |
| 16:43:32 | <sm[m]> | viluon: so another answer to your original question: see stack --help or the user guide for a bunch of flags for using system ghc, it normally works well |
| 16:44:37 | <viluon> | sm[m]: thanks, it looks like it's fine but I have to manually sync the resolver and the selected ghcup GHC, which is a shame |
| 16:44:58 | <merijn> | maerwald: Take over what? :p |
| 16:45:17 | <maerwald> | merijn: everything |
| 16:45:23 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 16:45:26 | <ephemient> | in my experience, being warm lets me type for longer without strain than being cold |
| 16:45:26 | <sm[m]> | viluon: yes, perhaps a little script to pick the right resolver based on ghc --version |
| 16:45:48 | <ephemient> | e.g. office environment is bad unless I bundle up |
| 16:45:59 | <merijn> | maerwald: It can go right to the bottom to the indefinitely "maybe once my thesis is done" list :p |
| 16:46:07 | <merijn> | maerwald: Which already has months of work :p |
| 16:47:01 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 16:47:54 | <merijn> | In related news: What's the plural of analysis? >.> |
| 16:48:05 | <sm[m]> | +1 on warmth, a medical infrared lamp is great |
| 16:48:14 | <maerwald> | ephemient: and avoid coffee, it decreases your vitamin B in your body |
| 16:48:16 | <merijn> | I recommend a cat :p |
| 16:48:21 | <maerwald> | (which is used to restore tendon tissue) |
| 16:48:24 | → | daim2k5 joins (~daim2k5@s91904426.blix.com) |
| 16:48:34 | <sm[m]> | more regular movement/cardio/strength exercises/breaks/meditation/destressing helped my RSI |
| 16:48:38 | <maerwald> | this is also a good pointer: https://www.jeremytunnell.com/2017/12/10/rsi-supplements/ |
| 16:49:20 | <sm[m]> | (I'm sure you know all those perfectly well, but just in case you forgot something) |
| 16:49:27 | <sm[m]> | cat++! |
| 16:49:44 | <merijn> | Cats are excellent heating elements :p |
| 16:49:47 | <maerwald> | sm[m]: true, since it's inflammatory, stress makes it worse |
| 16:49:48 | <merijn> | Guinea pigs too :p |
| 16:50:15 | <geekosaur> | merijn, analyses |
| 16:50:19 | <merijn> | olympic/power lifting :p |
| 16:50:21 | <geekosaur> | damn Greek |
| 16:50:36 | <sm[m]> | stress really was the main factor for me I'm sure |
| 16:50:41 | <merijn> | That's has succesfully reduced/eliminated a lot of RSI symptoms for me |
| 16:50:58 | <maerwald> | merijn: what, analyses? |
| 16:51:04 | <merijn> | And being unable to go to the gym is messing with my tendons >.> |
| 16:51:13 | <merijn> | maerwald: No, lifting |
| 16:51:24 | <maerwald> | merijn: can't do that, I had 2 hernias :D |
| 16:51:44 | <maerwald> | if I want my guts spilled out, then sure |
| 16:51:56 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 240 seconds) |
| 16:52:01 | → | elfets joins (~elfets@ip-37-201-23-96.hsi13.unitymediagroup.de) |
| 16:52:09 | <merijn> | sm[m]: Fortunately I have none of that! >.> |
| 16:52:14 | → | tricklynch joins (~tricklync@216-180-94-57.starry-inc.net) |
| 16:52:26 | <merijn> | I wonder what it'd feel like to be unstressed >.> |
| 16:52:33 | <maerwald> | sm[m]: how to work in industry without stress? lol |
| 16:52:40 | <merijn> | maerwald: Oh, that's easy |
| 16:52:48 | <sm[m]> | easier said than done, I know |
| 16:52:49 | <merijn> | Just don't care too much about your work/employer! |
| 16:53:19 | <merijn> | sm[m]: I figure there's a simple 1 step processes for reducing my stress by about 80-90% >.> |
| 16:53:23 | <sm[m]> | but even small improvements help, there's always some little thing we can do |
| 16:53:28 | <sm[m]> | or stop doing |
| 16:53:33 | <merijn> | Execution of said step is problematic, though xD |
| 16:53:49 | <maerwald> | quit IRC? |
| 16:54:22 | → | avdb joins (~avdb@gateway/tor-sasl/avdb) |
| 16:54:31 | <sm[m]> | quite possible.. or a regular one-day fast |
| 16:54:34 | <merijn> | maerwald: Finish my damn thesis ;) 7 more chapters to proofread and fix :p |
| 16:54:35 | <sm[m]> | remember all the time we had as kids ?? |
| 16:54:51 | <sm[m]> | (I mean IRC fast) |
| 16:55:01 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 16:55:15 | × | tricklynch quits (~tricklync@216-180-94-57.starry-inc.net) (Client Quit) |
| 16:57:39 | <sm[m]> | more powerful tools: good therapist, professional/support groups, positive friend/family time |
| 16:57:57 | → | Lord_of_Life_ joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 16:58:08 | × | threestrikes quits (~haskell@cpe-24-243-229-2.hot.res.rr.com) (Ping timeout: 256 seconds) |
| 16:58:35 | → | threestrikes joins (~haskell@cpe-24-243-229-2.hot.res.rr.com) |
| 16:58:35 | <maerwald> | programmers being positive... well, next suggestion :D |
| 16:58:44 | <sm[m]> | but hey, we're in #haskell! Got those covered :-) |
| 16:58:58 | <merijn> | sm[m]: ...and cats ;) |
| 16:59:17 | <maerwald> | Oxytocin yeah |
| 16:59:19 | <sm[m]> | cats are clearly at the top. If you've got one of those, you're fine :) |
| 16:59:36 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Ping timeout: 240 seconds) |
| 17:00:10 | <viluon> | I asked in #ghc but you folks may have an answer too, anyone hacking on GHC with VS Code and the Haskell Language Server? My setup crashes with every encounter of an `#include` in a Haskell source file, complaining that it can't find the included header. Is there a way to configure the include path of the language server? |
| 17:00:49 | Lord_of_Life_ | is now known as Lord_of_Life |
| 17:01:10 | <sm[m]> | also (I ramble on): find a way to be of service to someone - instant destresser |
| 17:01:53 | <sm[m]> | viluon: #haskell-ide-engine would know best |
| 17:02:18 | <sm[m]> | or maybe it's in the hls issue tracker |
| 17:02:26 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 264 seconds) |
| 17:05:30 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 17:07:24 | <viluon> | sm[m]: thanks! I'll ask in that channel too |
| 17:07:40 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 17:09:10 | × | rajivr quits (uid269651@gateway/web/irccloud.com/x-dbiyulzuylwqsfrt) (Quit: Connection closed for inactivity) |
| 17:11:25 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 17:11:56 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 240 seconds) |
| 17:13:12 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 17:14:14 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 17:15:33 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 17:19:07 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 260 seconds) |
| 17:19:15 | → | DamienCassou joins (damiencass@gateway/shell/matrix.org/x-qtejztrrfkbzhyxa) |
| 17:19:52 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 17:20:52 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 17:21:03 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 17:21:12 | <DamienCassou> | hi |
| 17:21:43 | <DamienCassou> | I learning haskell again after forgetting everything about it for 10 years. Should I start with hunit to write unit tests? |
| 17:22:02 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 260 seconds) |
| 17:22:05 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 17:22:14 | <maerwald> | if you think that's exciting |
| 17:22:22 | <maerwald> | because i don't think so |
| 17:22:41 | <maerwald> | just write something cool |
| 17:23:06 | <DamienCassou> | I really like writing tests for any code I write. My question is which testing framework should I start with? |
| 17:23:33 | × | zebrag quits (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) (Quit: Konversation terminated!) |
| 17:23:52 | <maerwald> | @hackage tasty |
| 17:23:52 | <lambdabot> | https://hackage.haskell.org/package/tasty |
| 17:24:14 | <maerwald> | @hackage hspec |
| 17:24:14 | <lambdabot> | https://hackage.haskell.org/package/hspec |
| 17:24:22 | <maerwald> | those are the two major ones |
| 17:24:31 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) |
| 17:24:56 | <DamienCassou> | thank you |
| 17:26:05 | → | zebrag joins (~inkbottle@aaubervilliers-654-1-83-215.w86-212.abo.wanadoo.fr) |
| 17:27:05 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 17:27:06 | × | niekvand_ quits (~niekvande@89.205.141.125) (Read error: Connection reset by peer) |
| 17:28:20 | → | oisdk_ joins (~oisdk@2001:bb6:3329:d100:390b:34c5:624a:58a3) |
| 17:29:37 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:3da4:b38d:aa7:fd3b) (Ping timeout: 260 seconds) |
| 17:30:16 | × | flatheap quits (~quassel@pool-74-104-136-149.bstnma.fios.verizon.net) (Read error: Connection reset by peer) |
| 17:30:30 | → | flatheap joins (~quassel@pool-74-104-136-149.bstnma.fios.verizon.net) |
| 17:33:14 | → | Sheilong joins (uid293653@gateway/web/irccloud.com/x-mxncuhjhaxdyvhdb) |
| 17:33:51 | → | metreo joins (~Thunderbi@unaffiliated/metreo) |
| 17:33:55 | × | Lord_of_Life quits (~Lord@unaffiliated/lord-of-life/x-0885362) (Read error: Connection reset by peer) |
| 17:34:05 | × | cheater quits (~user@unaffiliated/cheater) (Ping timeout: 240 seconds) |
| 17:34:10 | → | invaser joins (~Thunderbi@91.226.34.136) |
| 17:34:26 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 240 seconds) |
| 17:35:30 | → | Lord_of_Life joins (~Lord@unaffiliated/lord-of-life/x-0885362) |
| 17:36:26 | → | cfricke joins (~cfricke@unaffiliated/cfricke) |
| 17:40:01 | × | hiroaki quits (~hiroaki@2a02:908:4b18:8c40:30cf:fb21:315b:387d) (Ping timeout: 272 seconds) |
| 17:41:12 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 17:41:18 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 17:41:30 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 17:41:52 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 17:42:06 | → | d3od joins (~nickmeno3@93-137-152-230.adsl.net.t-com.hr) |
| 17:42:42 | × | flatheap quits (~quassel@pool-74-104-136-149.bstnma.fios.verizon.net) (Ping timeout: 264 seconds) |
| 17:42:57 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 17:43:37 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 17:44:40 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 17:45:09 | × | ndcroos quits (5bb212d6@91.178.18.214) (Quit: Connection closed) |
| 17:45:50 | × | avdb quits (~avdb@gateway/tor-sasl/avdb) (Ping timeout: 268 seconds) |
| 17:46:45 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
| 17:47:32 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 17:48:06 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 244 seconds) |
| 17:51:01 | → | avdb joins (~avdb@gateway/tor-sasl/avdb) |
| 17:53:30 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 17:54:38 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 17:56:05 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 17:57:54 | <sm[m]> | hi Damien Cassou , there's also https://hackage.haskell.org/package/doctest (slower to run, quicker to write) |
| 17:57:57 | → | charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com) |
| 17:58:39 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 18:00:40 | → | vappend joins (~ezrakilty@75-172-109-5.tukw.qwest.net) |
| 18:00:51 | × | vappend quits (~ezrakilty@75-172-109-5.tukw.qwest.net) (Remote host closed the connection) |
| 18:01:24 | → | rayyyy joins (~nanoz@gateway/tor-sasl/nanoz) |
| 18:02:05 | → | flatheap joins (~quassel@pool-74-104-136-149.bstnma.fios.verizon.net) |
| 18:03:16 | → | vappend_ joins (~ezrakilty@75-172-109-5.tukw.qwest.net) |
| 18:05:21 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 18:05:30 | → | coot joins (~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl) |
| 18:06:02 | × | Deide quits (~Deide@217.155.19.23) (Quit: Seeee yaaaa) |
| 18:07:12 | → | cheater joins (~user@unaffiliated/cheater) |
| 18:11:51 | → | Deide joins (~Deide@217.155.19.23) |
| 18:11:59 | → | rayyyy1 joins (~nanoz@gateway/tor-sasl/nanoz) |
| 18:12:28 | × | rayyyy quits (~nanoz@gateway/tor-sasl/nanoz) (Remote host closed the connection) |
| 18:12:41 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 18:13:26 | → | adeene joins (~adeene@181.131.0.191) |
| 18:14:22 | → | usr25 joins (~usr25@unaffiliated/usr25) |
| 18:15:07 | <DamienCassou> | sm the world is small :-). Thanks for the link |
| 18:15:37 | <__monty__> | DamienCassou: Also definitely look into property testing, whether it be quickcheck, hedgehog or smallcheck. |
| 18:16:12 | × | romanix quits (~romanix@staticline10864.toya.net.pl) (Remote host closed the connection) |
| 18:16:57 | <DamienCassou> | Ok __monty__ |
| 18:16:59 | <DamienCassou> | Thank you |
| 18:22:22 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 18:24:42 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Ping timeout: 264 seconds) |
| 18:27:53 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 244 seconds) |
| 18:32:09 | → | d3o joins (~nickmeno3@93-137-152-230.adsl.net.t-com.hr) |
| 18:32:21 | × | d3od quits (~nickmeno3@93-137-152-230.adsl.net.t-com.hr) (Remote host closed the connection) |
| 18:32:32 | d3o | is now known as Guest53963 |
| 18:34:24 | → | binq joins (uid773@gateway/web/irccloud.com/x-avxqklnqzemogbgf) |
| 18:36:47 | → | conal joins (~conal@66.115.157.159) |
| 18:38:56 | × | coot quits (~coot@37.30.55.132.nat.umts.dynamic.t-mobile.pl) (Ping timeout: 240 seconds) |
| 18:39:27 | Guest53963 | is now known as d3od |
| 18:41:59 | <binq> | Anybody testing out GHC 9? |
| 18:42:13 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 18:42:48 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds) |
| 18:43:57 | <binq> | I was able to get it compiled, but can’t get cabal-install to compile due to dependency requirements. |
| 18:44:23 | <binq> | Wondering if anybody has a Dockerfile? |
| 18:44:32 | → | xcmw joins (~textual@dyn-72-33-0-89.uwnet.wisc.edu) |
| 18:46:32 | <merijn> | binq: 9.0 requires cabal-install 3.4 |
| 18:46:35 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0) |
| 18:46:53 | <merijn> | binq: Which is unreleased to avoid issues if a bug is discovered with GHC 9.0 release candidates |
| 18:47:08 | <merijn> | So you need to build cabal-install 3.4/HEAD from source first |
| 18:47:16 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 272 seconds) |
| 18:47:42 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 18:47:56 | × | oisdk_ quits (~oisdk@2001:bb6:3329:d100:390b:34c5:624a:58a3) (Ping timeout: 240 seconds) |
| 18:49:29 | → | Neuromancer joins (~Neuromanc@unaffiliated/neuromancer) |
| 18:49:36 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:7c85:369d:a23d:1ffc) |
| 18:50:23 | <binq> | yup chasing that down I got: cabal-install -> async -> hashable -> base (>=4.4 && <4.12) |
| 18:52:04 | <merijn> | binq: That's intentional, you have to go get cabal-install from github |
| 18:52:12 | <binq> | GHC 9 seems to have a base versioned 4.15 |
| 18:52:19 | <merijn> | binq: Ah, wait |
| 18:52:40 | <merijn> | binq: You probably want head.hackage (someone in #ghc probably nows where the docs about that are) |
| 18:52:43 | <binq> | i did I downloaded cabal-install from github |
| 18:53:11 | <merijn> | binq: Basically, head.hackage is a collection to fix hackage packages to work with not yet released versions of GHC |
| 18:53:13 | <binq> | tagged cabal-install-3.4.0.0-rc7 |
| 18:53:27 | <binq> | oh nice! |
| 18:53:37 | <merijn> | I don't really know how to set it up, but the problem is probably that the cabal-install dependencies on hackage don't support GHC 9 yet either |
| 18:53:38 | <binq> | i’ll try head.hackage |
| 18:54:04 | <merijn> | People in #ghc should have more experience using it, since they need it to the test the dev version of GHC :p |
| 18:54:27 | <binq> | ok I’ll try that channel thanks! |
| 18:54:35 | <merijn> | Alternatively, you can try using --allow-newer when building cabal-install 3.4 to ignore the upperbounds |
| 18:54:54 | × | avdb quits (~avdb@gateway/tor-sasl/avdb) (Ping timeout: 268 seconds) |
| 18:55:15 | <binq> | ok I’ll try that first then |
| 19:01:17 | × | aveltras quits (uid364989@gateway/web/irccloud.com/x-yzwdoakplczfwzde) (Quit: Connection closed for inactivity) |
| 19:03:16 | → | pavonia joins (~user@unaffiliated/siracusa) |
| 19:03:31 | → | berberman joins (~berberman@unaffiliated/berberman) |
| 19:04:14 | × | berberman_ quits (~berberman@unaffiliated/berberman) (Ping timeout: 264 seconds) |
| 19:05:19 | → | ulidtko|kk joins (~ulidtko@193.111.48.79) |
| 19:05:19 | → | avdb joins (~avdb@gateway/tor-sasl/avdb) |
| 19:05:29 | → | renzhi joins (~renzhi@2607:fa49:6500:6f00::1e43) |
| 19:05:55 | × | fendor_ quits (~fendor@77.119.130.58.wireless.dyn.drei.com) (Remote host closed the connection) |
| 19:07:10 | → | fendor joins (~fendor@77.119.130.58.wireless.dyn.drei.com) |
| 19:08:23 | × | fendor quits (~fendor@77.119.130.58.wireless.dyn.drei.com) (Remote host closed the connection) |
| 19:09:05 | <zzz> | I'm trying to understand contravariance. Is there any way I can simplify it for my understanding? https://gist.github.com/jrvieira/d7ce271dfbfd092004a67362a9ff7a8c |
| 19:10:15 | → | fendor joins (~fendor@77.119.130.58.wireless.dyn.drei.com) |
| 19:11:30 | <sclv> | zzz: looks reasonable? |
| 19:11:41 | <merijn> | zzz: A simpler datatype might help? Like "data Foo a = Foo (a -> Int)"? and then try to implement Functor and Contravariant for that type |
| 19:11:57 | <sclv> | merijn's example is good |
| 19:12:07 | → | ADG1089__ joins (~aditya@122.163.160.223) |
| 19:12:10 | <sclv> | think about particular instances -- "sinks" which land in a concrete type |
| 19:12:18 | <sclv> | predicates of the form a -> Bool might be the easiest |
| 19:12:29 | <sclv> | and then contravariance is naturally how such predicates compose |
| 19:12:55 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 19:13:13 | <zzz> | hum ok |
| 19:13:30 | <DamienCassou> | I have started a new project with `stack new` and added `Tasty` and `Tasty-HUnit` as dependencies. My test/Spec.hs can be ran fine with `stack test`. How can I open a REPL in which I would be able to get information about HUnit functions? |
| 19:13:30 | × | fendor quits (~fendor@77.119.130.58.wireless.dyn.drei.com) (Remote host closed the connection) |
| 19:18:38 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 264 seconds) |
| 19:24:43 | × | cfricke quits (~cfricke@unaffiliated/cfricke) (Ping timeout: 244 seconds) |
| 19:24:55 | <mmaruseacph2> | `stack repl`? |
| 19:27:28 | × | justanotheruser quits (~justanoth@unaffiliated/justanotheruser) (Ping timeout: 260 seconds) |
| 19:28:28 | × | xff0x quits (~xff0x@2001:1a81:532d:4a00:5b04:4936:8850:6534) (Ping timeout: 265 seconds) |
| 19:29:05 | × | sgibber2018 quits (d055ed90@208.85.237.144) (Ping timeout: 248 seconds) |
| 19:29:20 | → | xff0x joins (~xff0x@2001:1a81:532d:4a00:f501:2477:75f6:35af) |
| 19:30:34 | → | Sgeo joins (~Sgeo@ool-18b98aa4.dyn.optonline.net) |
| 19:32:00 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Read error: Connection reset by peer) |
| 19:33:08 | → | _ht joins (~quassel@82-169-194-8.biz.kpn.net) |
| 19:35:51 | <DamienCassou> | mmaruseacph2: thank you, but I don't know how to load Tasty.HUnit in the repl so that I can get information on hunit functions |
| 19:37:11 | <sm[m]> | The stack manual has some info about how to choose a component (eg, tests), I always forget |
| 19:38:10 | <sm[m]> | stack repl mypkg:test:suitename or some such |
| 19:43:12 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 19:43:17 | <DamienCassou> | sm: `stack repl :<project-name>-test` worked, thank you |
| 19:45:26 | × | xff0x quits (~xff0x@2001:1a81:532d:4a00:f501:2477:75f6:35af) (Ping timeout: 240 seconds) |
| 19:47:25 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds) |
| 19:47:33 | → | xff0x joins (xff0x@gateway/vpn/mullvad/xff0x) |
| 19:47:45 | × | ep1ctetus quits (~epictetus@ip184-187-162-163.sb.sd.cox.net) (Quit: Leaving) |
| 19:48:32 | × | conal quits (~conal@66.115.157.159) (Quit: Computer has gone to sleep.) |
| 19:49:01 | → | conal joins (~conal@66.115.157.159) |
| 19:49:06 | → | fendor joins (~fendor@77.119.130.58.wireless.dyn.drei.com) |
| 19:49:21 | × | ADG1089__ quits (~aditya@122.163.160.223) (Remote host closed the connection) |
| 19:49:34 | × | bitmapper quits (uid464869@gateway/web/irccloud.com/x-nbhyzqgjbgeousfo) (Quit: Connection closed for inactivity) |
| 19:51:32 | → | hiroaki joins (~hiroaki@2a02:908:4b18:8c40::ee4f) |
| 19:53:50 | → | conal_ joins (~conal@192.145.117.129) |
| 19:53:52 | × | conal quits (~conal@66.115.157.159) (Ping timeout: 265 seconds) |
| 19:54:06 | × | xff0x quits (xff0x@gateway/vpn/mullvad/xff0x) (Ping timeout: 264 seconds) |
| 19:55:46 | → | xff0x joins (~xff0x@2001:1a81:532d:4a00:f501:2477:75f6:35af) |
| 19:56:59 | → | centril joins (~centril@213-66-146-92-no250.tbcn.telia.com) |
| 19:57:25 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 19:57:26 | → | bitmapper joins (uid464869@gateway/web/irccloud.com/x-rhajwcirdmfvcsre) |
| 19:59:11 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 265 seconds) |
| 20:00:53 | × | avdb quits (~avdb@gateway/tor-sasl/avdb) (Ping timeout: 268 seconds) |
| 20:00:54 | → | kritzefitz joins (~kritzefit@212.86.56.80) |
| 20:01:52 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 260 seconds) |
| 20:02:39 | → | avdb joins (~avdb@gateway/tor-sasl/avdb) |
| 20:03:05 | × | ixaxaar quits (~ixaxaar@49.207.210.215) (Ping timeout: 240 seconds) |
| 20:04:18 | × | conal_ quits (~conal@192.145.117.129) (Ping timeout: 264 seconds) |
| 20:05:46 | × | oisdk quits (~oisdk@2001:bb6:3329:d100:7c85:369d:a23d:1ffc) (Quit: oisdk) |
| 20:06:21 | × | matryoshka quits (~matryoshk@184.75.223.227) (Ping timeout: 246 seconds) |
| 20:11:54 | → | ADG1089__ joins (~aditya@122.163.160.223) |
| 20:13:28 | <shinobi__> | Is there a guideline on how to order function parameters? I'm finding that I should have set them up differently because I want to curry them later. :/ |
| 20:14:12 | → | matryoshka joins (~matryoshk@2606:6080:1002:8:3285:30e:de43:8809) |
| 20:14:16 | × | mouseghost quits (~draco@wikipedia/desperek) (Quit: mew wew) |
| 20:15:05 | <merijn> | shinobi__: The guideline is "whatever you expect will be useful to partially apply" :p |
| 20:15:45 | → | conal joins (~conal@192.145.117.129) |
| 20:15:48 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 20:15:55 | <zzz> | i'm usually partial to a -> b -> a whenever I can for that same reason, but sometimes it might feel more natural the other way around. we always have flip so... |
| 20:17:00 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 20:17:02 | × | conal quits (~conal@192.145.117.129) (Client Quit) |
| 20:17:36 | <shinobi__> | let me check flip out |
| 20:18:15 | → | conal joins (~conal@192.145.117.129) |
| 20:18:24 | <zzz> | :t flip |
| 20:18:25 | <lambdabot> | (a -> b -> c) -> b -> a -> c |
| 20:19:15 | <ski> | shinobi__ : arguments that are less likely to vary tend to be better to take early. sometimes "making the type look pretty" pays off (e.g. `map') |
| 20:19:23 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
| 20:19:42 | <shinobi__> | that makes sense |
| 20:19:46 | <ski> | map :: ( a -> b ) |
| 20:19:57 | <ski> | -> ([a] -> [b]) |
| 20:20:12 | <ski> | example of what i meant by "make look pretty" |
| 20:20:17 | <ski> | this enables |
| 20:20:21 | <ski> | @type map . map |
| 20:20:23 | <lambdabot> | (a -> b) -> [[a]] -> [[b]] |
| 20:20:35 | × | Mr_Cue quits (~Mr._Cue@pengyuzhou.com) (Remote host closed the connection) |
| 20:20:39 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 20:20:45 | → | Mr_Cue joins (~Mr._Cue@pengyuzhou.com) |
| 20:20:49 | <ski> | > (map . map) (^ 2) [[],[0],[1,2],[3,4,5],[6,7,8,9]] |
| 20:20:51 | <lambdabot> | [[],[0],[1,4],[9,16,25],[36,49,64,81]] |
| 20:20:56 | <ski> | if it had been |
| 20:21:03 | <ski> | map :: (a -> b,[a]) -> [b] |
| 20:21:04 | <ski> | or |
| 20:21:12 | <ski> | map :: [a] -> (a -> b) -> [b] |
| 20:21:19 | <ski> | then doing that would be more awkward |
| 20:22:19 | <zzz> | when it makes sense, i usually also consider foldr vs foldl. if i expect to foldr then a -> b -> b, otherwise a -> b -> a |
| 20:22:58 | <ski> | `foldr' can work with infinite lists, can be incremental. `foldl' can't |
| 20:24:14 | <shinobi__> | That's good to know. I usually foldl out of habit from learning some Scala prevously. |
| 20:24:33 | <ski> | (btw, of course you could also say `map (map f) xss', instead of `(map . map) f xss'. that's a matter of taste/style. but with an alternate type, taking parameters differently, neither would be as neat) |
| 20:25:20 | <zzz> | shinobi_: mind that you probably want to foldl' instead of foldl, which is strict |
| 20:25:40 | <zzz> | foldl' is strict, that is |
| 20:25:47 | <ski> | commonly, you'll know whether you expect/want to be able to work with infinite lists (unless you're writing generic code). however, being able to be incremental, rather than bulky, can be important, also for large-but-finite lists |
| 20:28:27 | <ski> | @type let fold_left :: (s -> a -> s) -> (s -> [a] -> s); fold_left = foldl in fold_left . fold_left -- note that `foldl' can be self-composed like this, too |
| 20:28:29 | <lambdabot> | (s -> a -> s) -> s -> [[a]] -> s |
| 20:28:29 | × | vappend_ quits (~ezrakilty@75-172-109-5.tukw.qwest.net) (Remote host closed the connection) |
| 20:28:32 | <EvanR> | foldl (no prime) is very often just not smart |
| 20:28:39 | <EvanR> | if think about it operationally |
| 20:28:54 | <ski> | unfortunately, `foldr', can't, because of wrong way of taking parameters |
| 20:29:20 | <ski> | (in OCaml, both `fold_left' and `fold_right' can be self-composed like that) |
| 20:29:45 | <ski> | @type foldr . flip . foldr -- with the Haskell one, you have to do this, which is awkward |
| 20:29:46 | <lambdabot> | (Foldable t1, Foldable t2) => (a -> b -> b) -> b -> t1 (t2 a) -> b |
| 20:30:29 | × | avdb quits (~avdb@gateway/tor-sasl/avdb) (Ping timeout: 268 seconds) |
| 20:30:52 | <ski> | @type (appEndo .) . foldMap . (Endo .) |
| 20:30:54 | <lambdabot> | Foldable t => (a1 -> a2 -> a2) -> t a1 -> a2 -> a2 |
| 20:31:03 | <ski> | @type foldMap |
| 20:31:04 | <lambdabot> | (Foldable t, Monoid m) => (a -> m) -> t a -> m |
| 20:31:42 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 20:31:57 | <zzz> | ski, i've been meaning to thank you for a step by step explanation of binary tree traversal that after your introduction, solving it by myself blew my mind (this was maybe 2 years ago). i'm rarely here so I'm doing it now. thanks ;) |
| 20:32:05 | <zzz> | this beauty btw https://gist.githubusercontent.com/jrvieira/c7ee50f9a6272fd98dae0ac04a0dfad2/raw/a2f6cb0c8ae21bd2f6d54b691a755daa769b653d/tree-binary.hs |
| 20:32:31 | <ski> | here `m' becaome `a2 -> a2'. if we for each element can update a state, then we can compose those updates from every element in the list, getting an overall state update for the whole list (or whetever `Foldable' data structure you have) |
| 20:33:38 | <ski> | zzz : ah, nice :) |
| 20:33:39 | <ski> | yw |
| 20:34:21 | → | Tops2 joins (~Tobias@dyndsl-091-249-082-187.ewe-ip-backbone.de) |
| 20:34:41 | <ski> | that's using a "difference list" (in FP, not LP, sense). which is basically what `Endo' above does as well. and `type ShowS = String -> String' is about the same thing |
| 20:35:59 | → | geowiesnot joins (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) |
| 20:36:08 | → | vappend joins (~ezrakilty@75-172-109-5.tukw.qwest.net) |
| 20:36:10 | <ski> | (it's also related to CPS (including `Codensity')) |
| 20:38:47 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 20:39:41 | → | deviantfero joins (~deviantfe@190.150.27.58) |
| 20:40:23 | × | keltono quits (~keltono@x-160-94-179-178.acm.umn.edu) (Ping timeout: 260 seconds) |
| 20:40:36 | × | abhixec quits (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) (Remote host closed the connection) |
| 20:40:51 | → | keltono joins (~keltono@x-160-94-179-178.acm.umn.edu) |
| 20:43:51 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 20:45:45 | × | deviantfero quits (~deviantfe@190.150.27.58) (Quit: WeeChat 3.0) |
| 20:47:01 | → | deviantfero joins (~deviantfe@190.150.27.58) |
| 20:49:46 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
| 20:50:10 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 20:50:33 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 20:50:43 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 20:51:39 | × | Aquazi quits (uid312403@gateway/web/irccloud.com/x-iwrpmhfrxccscdss) (Quit: Connection closed for inactivity) |
| 20:51:44 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 20:54:37 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 20:55:44 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
| 21:02:51 | × | conal quits (~conal@192.145.117.129) (Quit: Computer has gone to sleep.) |
| 21:03:15 | × | ADG1089__ quits (~aditya@122.163.160.223) (Remote host closed the connection) |
| 21:04:12 | → | theothornhill joins (~user@161.80-203-66.nextgentel.com) |
| 21:04:13 | → | conal joins (~conal@192.145.117.129) |
| 21:04:22 | × | conal quits (~conal@192.145.117.129) (Client Quit) |
| 21:04:35 | → | ADG1089__ joins (~aditya@122.163.160.223) |
| 21:06:42 | × | hyperisco quits (~hyperisco@104-195-141-253.cpe.teksavvy.com) (Ping timeout: 264 seconds) |
| 21:10:47 | → | jamm joins (~jamm@unaffiliated/jamm) |
| 21:11:31 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 21:11:38 | × | rcdilorenzo quits (~rcdiloren@45.152.180.20) (Read error: Connection reset by peer) |
| 21:12:11 | × | p-core quits (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) (Quit: p-core) |
| 21:12:32 | → | p-core joins (~Thunderbi@2001:718:1e03:5128:3697:eeda:19aa:8e56) |
| 21:13:05 | → | oisdk joins (~oisdk@2001:bb6:3329:d100:7c85:369d:a23d:1ffc) |
| 21:13:51 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 21:14:07 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 21:14:18 | → | conal joins (~conal@198.8.81.208) |
| 21:15:38 | × | jamm quits (~jamm@unaffiliated/jamm) (Ping timeout: 264 seconds) |
| 21:15:56 | → | rcdilorenzo joins (~rcdiloren@45.152.180.20) |
| 21:15:56 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 21:16:24 | × | livvy quits (~livvy@gateway/tor-sasl/livvy) (Remote host closed the connection) |
| 21:17:18 | × | Sheilong quits (uid293653@gateway/web/irccloud.com/x-mxncuhjhaxdyvhdb) () |
| 21:17:36 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 21:18:21 | <zzz> | ha... i found something curious |
| 21:18:58 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 21:19:14 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 21:20:13 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Read error: Connection reset by peer) |
| 21:20:41 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 21:20:53 | → | cr3 joins (~cr3@192-222-143-195.qc.cable.ebox.net) |
| 21:21:02 | → | livvy joins (~livvy@gateway/tor-sasl/livvy) |
| 21:21:45 | <zzz> | if i have a function (f) inside a class declaration, and then declare multiple instances of that class, if I declare some (g = f), (g) doesn't become polymorphic unless I explicitly declare its type with a class constraint |
| 21:22:09 | <ski> | that's DMR for you |
| 21:22:20 | <ski> | try `g x = f x' |
| 21:22:54 | <zzz> | DMR? |
| 21:23:04 | × | invaser quits (~Thunderbi@91.226.34.136) (Ping timeout: 272 seconds) |
| 21:23:06 | <ski> | the Dreaded Monomorphism Restriction |
| 21:23:24 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 21:23:50 | <zzz> | where can i learn more about it? |
| 21:23:52 | × | _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection) |
| 21:24:07 | <zzz> | yup (g x = f x) works |
| 21:24:28 | <zzz> | weird |
| 21:24:54 | <ski> | adding `{-# LANGUAGE NoMomomorphismRestriction #-}' to the top of the file (alternatively using command line switch `-XNoMomomorphismRestriction') will also work |
| 21:24:58 | → | son0p joins (~son0p@181.136.122.143) |
| 21:25:13 | <ski> | you want an explanation for what's going on ? |
| 21:25:22 | × | geekosaur quits (ae68c070@cpe-174-104-192-112.neo.res.rr.com) (Quit: Connection closed) |
| 21:26:05 | × | adeene quits (~adeene@181.131.0.191) (Ping timeout: 240 seconds) |
| 21:26:37 | <zzz> | what are the downsides of using that extension? in order words, why is the restriction useful? |
| 21:26:52 | <zzz> | yes, i'm curious! |
| 21:27:02 | → | brisbin joins (~patrick@pool-173-49-158-4.phlapa.fios.verizon.net) |
| 21:27:15 | <zzz> | *other words |
| 21:27:21 | <ski> | well, Haskell uses non-strict reduction/evaluation |
| 21:27:48 | × | conal quits (~conal@198.8.81.208) (Quit: Computer has gone to sleep.) |
| 21:28:21 | → | conal joins (~conal@198.8.81.208) |
| 21:28:28 | <ski> | in practice, implementations tend to use (call-)-by-need / lazy evaluation specifically. meaning that the value of an expression will be cached so that next time you refer to it, you'll reuse the value, rather than recomputing from scratch |
| 21:28:44 | <zzz> | right |
| 21:29:14 | <ski> | so if you do `let x = 2 + 3 in x * x', then the addition will only be performed once. and the same thing, if you do `let f x = x * x in f (2 + 3)' |
| 21:30:01 | <ski> | however, function calls are *not* memoized. if you compute `f 3', then it won't remember the result. next time you call `f' on `3', it'll recompute from scratch |
| 21:30:48 | <ski> | (if you do `let x = f 3 in ..x..', then only the first time you refer to `x' will perform the `f' call, later times will reuse the result of the expression `f 3') |
| 21:30:57 | <ski> | that's all clear, okay ? |
| 21:31:32 | × | rayyyy1 quits (~nanoz@gateway/tor-sasl/nanoz) (Ping timeout: 268 seconds) |
| 21:31:46 | <ski> | (to clarify, in `let x = f 3 in x * x', `f' will only be called once. in `f 3 * f 3', `f' will be called twice) |
| 21:32:57 | × | conal quits (~conal@198.8.81.208) (Ping timeout: 265 seconds) |
| 21:33:47 | × | binq quits (uid773@gateway/web/irccloud.com/x-avxqklnqzemogbgf) (Quit: Connection closed for inactivity) |
| 21:33:49 | ski | looks at zzz |
| 21:34:03 | <zzz> | i see |
| 21:34:15 | <ski> | (should i continue ?) |
| 21:34:48 | <zzz> | please |
| 21:35:29 | <ski> | ok. so when you give a name to an expression (like `x = 2 + 3' or `x = f 3'), you expect that lazy evaluation will cause it to be computed at most once |
| 21:35:43 | <zzz> | i know this, am just trying to understand what's the implication here |
| 21:36:11 | → | gnumonic joins (~gnumonic@c-73-170-91-210.hsd1.ca.comcast.net) |
| 21:36:25 | × | ADG1089__ quits (~aditya@122.163.160.223) (Remote host closed the connection) |
| 21:36:39 | <zzz> | im starting to get it |
| 21:36:43 | <ski> | (the same happens if you pass an expression as a parameter to a function, even if that function doesn't directly give a name to the parameter, but rather instead pattern-matches on it. so `concat xss' in `map f (concat xss)' will be computed at most once, even though `map' looks like `map f [] = ...; map f (x:xs) = ...') |
| 21:37:03 | <ski> | yea .. so, if you define something like e.g. |
| 21:37:05 | → | conal joins (~conal@198.8.81.228) |
| 21:37:16 | <ski> | fibs = 0 : 1 : zipWith (+) fibs (tail fibs) |
| 21:37:30 | <ski> | > let fibs = 0 : 1 : zipWith (+) fibs (tail fibs) in take 13 fibs |
| 21:37:32 | <lambdabot> | [0,1,1,2,3,5,8,13,21,34,55,89,144] |
| 21:38:00 | <ski> | you expect that `fibs' won't be recomputed each time you refer to it. instead, you expect it'll cache the elements of the list that you've looked at |
| 21:38:01 | × | threestrikes quits (~haskell@cpe-24-243-229-2.hot.res.rr.com) (Ping timeout: 256 seconds) |
| 21:38:23 | <ski> | agree ? |
| 21:38:33 | <zzz> | agree |
| 21:38:45 | <ski> | now, what do you think the type of `fibs' here is ? |
| 21:39:01 | → | hvr joins (~hvr@haskell/developer/hvr) |
| 21:39:04 | <ski> | @type (+) |
| 21:39:06 | <lambdabot> | Num a => a -> a -> a |
| 21:39:22 | <zzz> | Num a => [a] |
| 21:39:26 | <ski> | yea |
| 21:39:41 | × | kritzefitz quits (~kritzefit@212.86.56.80) (Remote host closed the connection) |
| 21:41:18 | <ski> | and now, the way implementations tend to implement constrained polymorphism like this is by the "dictionary-passing translation". translating it to `fibs :: NumDict a -> [a]; fibs numDict = fromInteger numDict (0 :: Integer) : fromInteger numDict (1 :: Integer) : zipWith ((+) numDict) (fibs numDict) (tail (fibs numDict))' |
| 21:41:38 | <ski> | where `data NumDict a = MkNumDict {(+) :: a -> a -> a,...}' |
| 21:41:52 | <zzz> | makes sense |
| 21:42:09 | × | LKoen_ quits (~LKoen@19.175.9.109.rev.sfr.net) (Quit: “It’s only logical. First you learn to talk, then you learn to think. Too bad it’s not the other way round.”) |
| 21:42:21 | <ski> | so, `fibs' actually here gets translated to a function, that's passed a dictionary of the method implementations for the `Num a' instance (for whatever `a' the user/caller of `fibs' wants to use) |
| 21:42:41 | <ski> | the consequence of this is that `fibs' will *not* be cached ! |
| 21:42:57 | <zzz> | what |
| 21:43:04 | <ski> | even though the source code definition for it *looks* like it would be cached |
| 21:43:16 | <zzz> | oh no |
| 21:43:28 | <zzz> | that's not good |
| 21:43:31 | <ski> | remember that functions do not automatically remember which outputs have been previously computed for inputs passed to them |
| 21:43:47 | <ski> | so .. this was deemed to be confusing behaviour |
| 21:43:55 | <ski> | especially to newbies, but also sometimes to non-newbies |
| 21:44:28 | <ski> | so, the monomorphism restriction was invented, to avoid this confusing kind of situation |
| 21:45:38 | × | Varis quits (~Tadas@unaffiliated/varis) (Remote host closed the connection) |
| 21:45:49 | <zzz> | i'm thinking the correct approach would be to prevent literals from being ambiguous |
| 21:45:59 | <ski> | if you have (a) a "value definition", a definition with no explicit parameters to the left of the `=', with (b) no explicit type signature, then DMR forbids your definition to be *constrained* polymorphic (since that's the situation in which an implicit dictionary argument would be introduced) |
| 21:46:41 | <ski> | so, what it'll actually do is try to pick some default type for the type variable `a' in `Num a => [a]', in the hope of being able to do away with the `Num a' constraint |
| 21:46:58 | <ski> | (there is a `default' keyword that can be used to specify which types it'll try) |
| 21:48:02 | <ski> | so, it will in fact try `a = Integer', and since there is an instance `Num Integer', the type signature `fibs :: Num Integer => [Integer]' can be simplified to just `fibs :: [Integer]', hardwiring the `Integer' instance into `fibs', rather than implicitly passing it as a parameter |
| 21:48:29 | <ski> | so, with DMR, you'll infer not `fibs :: Num a => [a]', but instead `fibs :: [Integer]' |
| 21:48:46 | <ski> | and `fibs' will now be cached again, so all is well |
| 21:49:06 | → | threestrikes joins (~haskell@cpe-24-243-229-2.hot.res.rr.com) |
| 21:49:08 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 21:49:26 | <ski> | .. or, at least, we avoid this confusion. but now we have the other confusion that we may have expected `fibs' to be polymorphic, but we actually defined a monomorphic `fibs' here |
| 21:50:20 | <zzz> | i suspect this has made many people angry and has been widely regarded as a bad move |
| 21:50:47 | <ski> | also, in other cases, e.g. if you define `done = return ()', then it would like to infer `done :: Monad m => m ()', but because of DMR it isn't allowed so, so it'll try to default `m' to some specific type. but unless you write `default Maybe' or something into your file, there's no standard default it will pick. instead, it will complain about the definition being ambiguous |
| 21:51:15 | <ski> | so, DMR causes either constrained polymorphism to be monomorphized (using defaulting), or, failing that, to give an ambiguity error |
| 21:51:27 | <ski> | yea. we've traded one confusion for another |
| 21:51:32 | <ski> | (hence "Dreaded") |
| 21:51:46 | <ski> | anyway, there's three ways in which one can avoid DMR |
| 21:51:51 | <zzz> | that's what hinted me |
| 21:52:06 | <ski> | note that i said it only applies to "value definitions" |
| 21:52:31 | <ski> | consider e.g. `squareAll = map (^2)' |
| 21:52:38 | <ski> | this is a case where DMR would apply |
| 21:52:54 | <ski> | there are no *explicit* function parameters, to the left of the `=' here |
| 21:53:44 | <zzz> | squareAll x = map (^2) x |
| 21:53:47 | <ski> | but, in fact, `squareAll' is still a function here. so, we can change the definition to `squareAll ns = map (^2) ns' (which is equivalent to the former, by "function extensionality", which is closely related to "eta conversion") |
| 21:53:51 | <ski> | yep |
| 21:53:58 | <zzz> | :/ |
| 21:54:20 | <ski> | because, if you see explicit parameters to the left of the `=', you're expected to know that you won't get sharing anyway. so this defuses DMR |
| 21:54:59 | <ski> | the second way is the one you discovered : simply put an explicit type signature on the definition, with the constraint(s) you'd like |
| 21:55:35 | <ski> | since then it should also be obvious (if you know about the dictionary-passing translation implementation of constrained polymorphism) that you won't get sharing |
| 21:55:51 | <ski> | the third way is to disable DMR, using `NoMonomorphismRestriction' |
| 21:57:05 | <ski> | zzz : ok, that's basically it |
| 21:57:39 | <zzz> | thanks |
| 21:57:46 | <zzz> | this made me sad |
| 21:58:16 | <zzz> | but glad to have learned |
| 21:59:06 | <zzz> | it normally wouldn't been a problem because I make sure i give all my functions type definitions |
| 21:59:47 | <ski> | btw, the MLs (SML,OCaml,F#,Alice ML,..) have a somewhat similar restriction, called the "value restriction", which inhibits a definition from being polymorphic (although there's no type class constraints there). the reason for its presence there is to avoid being able to define `unsafeCoerce :: a -> b', in the presence of side-effect. that's not a problem, for Haskell (unless you cheat by using |
| 21:59:53 | <ski> | `unsafePerformIO :: IO a -> a'. then you can define `unsafeCoerce' in the same way, using a polymorphic mutable reference (`IORef')) |
| 22:00:04 | <zzz> | however in this case I was defining an operator, like <$> is to fmap |
| 22:00:11 | → | jumper149 joins (~jumper149@ip185225.wh.uni-hannover.de) |
| 22:01:12 | <ski> | (the MLs, being strict, don't have the sharing issue anyway. however, it's annoying, if you're defining e.g. parser actions, that you can't make a polymorphic one, unless you make it a function-returning-an-action, introducing some dummy parameter) |
| 22:01:54 | × | mmkarakaya quits (b021e288@176.33.226.136) (Quit: Connection closed) |
| 22:01:56 | <ski> | yea. giving an explicit type signature is usually the nicest way to avoid the issue |
| 22:03:59 | <dolio> | In my experience, it isn't a real problem. |
| 22:05:31 | → | hnOsmium0001 joins (uid453710@gateway/web/irccloud.com/x-sfvlzmosuaecvhtq) |
| 22:06:05 | × | conal quits (~conal@198.8.81.228) (Ping timeout: 240 seconds) |
| 22:06:53 | sm2n_ | is now known as sm2n |
| 22:07:57 | → | desophos joins (~desophos@2601:249:1680:a570:b098:51c3:875c:3cdf) |
| 22:08:09 | × | daim2k5 quits (~daim2k5@s91904426.blix.com) (Remote host closed the connection) |
| 22:08:14 | <ski> | as long as you're aware of it (loss of sharing, with constrained polymorphism), it's rarely something you stumble on, yea |
| 22:08:33 | <dolio> | I mean having the monomorphism restriction on isn't a real problem. |
| 22:08:46 | <zzz> | it's a pain to debug if you don't, I'll tell you that |
| 22:09:02 | → | jedws joins (~jedws@2001:8003:c44f:4601:2919:11d9:4e81:3c90) |
| 22:10:13 | <merijn> | zzz: If you definition doesn't "look like a value" (i.e. arguments left of =) then you won't trigger MMR either |
| 22:10:45 | → | ph88 joins (~ph88@2a02:8109:9e00:7e5c:1d75:c689:b002:7cb) |
| 22:10:59 | <zzz> | yea |
| 22:11:30 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 264 seconds) |
| 22:11:37 | hackage | cryptohash-sha256 0.11.102.0 - Fast, pure and practical SHA-256 implementation https://hackage.haskell.org/package/cryptohash-sha256-0.11.102.0 (HerbertValerioRiedel) |
| 22:12:15 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Quit: Connection closed) |
| 22:12:38 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 22:14:18 | × | chindy quits (~quassel@51.15.63.78) (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
| 22:15:08 | → | chindy joins (~quassel@51.15.63.78) |
| 22:16:38 | <dolio> | If 95% of your code is typed into REPLs, or trimmed to look as simple as possible to a university student, I could understand 'dreading' it, but for someone trying to write software in Haskell using typical style recommendations, it's an occasional minor annoyance. |
| 22:17:19 | <merijn> | I've never encountered the MMR since my first 3 months of learning Haskell :p |
| 22:17:25 | × | royal_screwup21 quits (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) (Ping timeout: 265 seconds) |
| 22:18:41 | <dolio> | Also if you have to explain it to university students every time it happens. |
| 22:19:16 | → | pong joins (chiya@2406:3003:2077:2341::babe) |
| 22:19:57 | × | geowiesnot quits (~user@i15-les02-ix2-87-89-181-157.sfr.lns.abo.bbox.fr) (Ping timeout: 256 seconds) |
| 22:22:12 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:22:19 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:22:37 | <zzz> | next time someone asks, i can answer ;) |
| 22:22:52 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:23:19 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:23:34 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:23:35 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:23:38 | × | raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Quit: WeeChat 3.0) |
| 22:23:43 | → | abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net) |
| 22:23:54 | → | howdoi joins (uid224@gateway/web/irccloud.com/x-logrrugzsdwspzft) |
| 22:24:12 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:24:46 | → | mjevans- joins (~mjevans-@185.204.1.185) |
| 22:25:05 | → | raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) |
| 22:25:37 | × | fendor quits (~fendor@77.119.130.58.wireless.dyn.drei.com) (Read error: Connection reset by peer) |
| 22:26:07 | → | enoq joins (~bernhard@2a02:8388:6ac1:c780:140:318f:2327:47a3) |
| 22:26:23 | × | theothornhill quits (~user@161.80-203-66.nextgentel.com) (Ping timeout: 272 seconds) |
| 22:26:30 | <enoq> | hi, what would you name a function that applies itself again and again to a given value until it reaches n applications |
| 22:26:44 | <enoq> | for instance: double value 3 9 times |
| 22:26:57 | × | takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection) |
| 22:27:04 | <merijn> | :t iterate -- ? |
| 22:27:05 | <lambdabot> | (a -> a) -> a -> [a] |
| 22:27:24 | <enoq> | that produces a list, I want a value |
| 22:27:24 | <merijn> | Or wait, there was another with with a Int argument |
| 22:28:06 | × | usr25 quits (~usr25@unaffiliated/usr25) (Quit: Leaving) |
| 22:28:08 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:28:24 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:28:25 | <enoq> | a doesn't have to be an Int |
| 22:28:28 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:28:36 | <enoq> | I have to implement basic arithmetics for a custom type |
| 22:28:48 | <enoq> | and there are special rules for halving/doubling |
| 22:29:03 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:29:45 | <enoq> | I came up with this https://dpaste.org/rMF3 but I'm unsure if repeat is a good name |
| 22:30:15 | <enoq> | using it like this: repeat((bulk) => bulk.double(), 5, bulk) |
| 22:30:51 | <enoq> | I'm sure there's a function in haskell that does roughly what that function dooes |
| 22:31:46 | <zzz> | Util.nTimes ? |
| 22:32:09 | <merijn> | enoq: I mean, you could just do "head . drop n . iterate" :p |
| 22:32:27 | <enoq> | merijn: still would need to name it xD |
| 22:33:10 | <zzz> | enoq: nTimes from Util |
| 22:33:15 | <enoq> | thanks |
| 22:33:42 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 246 seconds) |
| 22:37:55 | × | Neuromancer quits (~Neuromanc@unaffiliated/neuromancer) (Ping timeout: 256 seconds) |
| 22:45:49 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:45:53 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:47:54 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:49:02 | → | royal_screwup21 joins (52254809@gateway/web/cgi-irc/kiwiirc.com/ip.82.37.72.9) |
| 22:51:13 | <justsomeguy> | applyNTimes? |
| 22:52:42 | <enoq> | justsomeguy: yep, that's exactly what I went with |
| 22:53:36 | × | __monty__ quits (~toonn@unaffiliated/toonn) (Quit: leaving) |
| 22:53:42 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:53:55 | <koz_> | Does anyone know of any type that is a Category, a Profunctor, and a Choice? |
| 22:53:55 | × | jackk__ quits (~jackk@205-185-193-10.wlvpn.com) (Quit: Going offline, see ya! (www.adiirc.com)) |
| 22:53:56 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:54:02 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:55:07 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:55:11 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Remote host closed the connection) |
| 22:55:47 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 22:55:48 | <dolio> | (->) |
| 22:56:05 | <koz_> | LOL |
| 22:56:15 | <koz_> | Shoulda guessed. |
| 22:56:36 | → | conal_ joins (~conal@64.71.133.70) |
| 22:56:45 | <Uniaika> | (unsurprisingly :P) |
| 22:57:20 | × | alx741 quits (~alx741@186.178.110.72) (Quit: alx741) |
| 22:57:22 | <koz_> | Also (Monad f) => Star f, but that's just Kleisli and we all knew this. |
| 22:58:16 | × | Tario quits (~Tario@201.192.165.173) (Ping timeout: 240 seconds) |
| 23:01:18 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 264 seconds) |
| 23:03:20 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Remote host closed the connection) |
| 23:03:39 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 23:03:42 | × | arybczak quits (~unknown@2a02:a312:c83d:7800:bb7f:5c00:4f48:cc5c) (Quit: Konversation terminated!) |
| 23:06:49 | × | hiroaki quits (~hiroaki@2a02:908:4b18:8c40::ee4f) (Ping timeout: 272 seconds) |
| 23:07:18 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 23:08:14 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Remote host closed the connection) |
| 23:10:52 | → | Tario joins (~Tario@200.119.187.60) |
| 23:11:09 | → | alx741 joins (~alx741@186.178.110.72) |
| 23:12:56 | → | theothornhill joins (~user@161.80-203-66.nextgentel.com) |
| 23:13:17 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:13:27 | × | star_cloud quits (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) (Excess Flood) |
| 23:14:41 | → | star_cloud joins (~star_clou@ec2-34-220-44-120.us-west-2.compute.amazonaws.com) |
| 23:16:52 | × | conal_ quits (~conal@64.71.133.70) (Quit: Computer has gone to sleep.) |
| 23:17:06 | × | theothornhill quits (~user@161.80-203-66.nextgentel.com) (Ping timeout: 246 seconds) |
| 23:17:17 | → | conal joins (~conal@64.71.133.70) |
| 23:17:26 | → | myname_ joins (~sevenk@64.85.149.202) |
| 23:17:32 | <myname_> | hi |
| 23:17:33 | × | conal quits (~conal@64.71.133.70) (Client Quit) |
| 23:17:39 | <Axman6> | Hello! |
| 23:17:40 | <myname_> | how do I change my name again? |
| 23:17:51 | <Axman6> | You use /nick NewName |
| 23:17:53 | <koz_> | myname_: First, you apply to your local government for a change of name. |
| 23:17:53 | × | gehmehgeh quits (~ircuser1@gateway/tor-sasl/gehmehgeh) (Quit: Leaving) |
| 23:17:57 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 23:18:00 | myname_ | is now known as SevenK |
| 23:18:05 | <SevenK> | Thank you |
| 23:18:19 | × | wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Ping timeout: 265 seconds) |
| 23:20:33 | → | conal joins (~conal@64.71.133.70) |
| 23:22:18 | × | niekvandepas quits (~niekvande@dhcp-077-249-088-250.chello.nl) (Ping timeout: 264 seconds) |
| 23:22:23 | × | tabemann quits (~travisb@2600:1700:7990:24e0:2184:3ba:9bdb:ab9c) (Quit: Leaving) |
| 23:23:23 | → | atraii joins (~atraii@c-98-32-64-84.hsd1.ut.comcast.net) |
| 23:23:25 | × | Tario quits (~Tario@200.119.187.60) (Read error: Connection reset by peer) |
| 23:24:54 | × | heatsink quits (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection) |
| 23:25:24 | × | son0p quits (~son0p@181.136.122.143) (Quit: leaving) |
| 23:25:30 | → | Tario joins (~Tario@201.192.165.173) |
| 23:25:41 | × | niklasb_ quits (~niklasb@unaffiliated/codeslay0r) (Ping timeout: 256 seconds) |
| 23:25:56 | → | nineonine joins (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) |
| 23:26:04 | <ph88> | does someone have a good example for me of a complicated pointfree function ? and then how to write it in more understandable way ? |
| 23:26:28 | <koz_> | ph88: Uhh, that's a rather specific request. |
| 23:26:47 | → | wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) |
| 23:27:04 | → | niklasb_ joins (~niklasb@unaffiliated/codeslay0r) |
| 23:27:37 | <ph88> | ya |
| 23:27:48 | <ph88> | just as demonstration |
| 23:28:26 | <dolio> | @pl \x y z f -> f x y z |
| 23:28:26 | <lambdabot> | (flip .) . flip . flip id |
| 23:28:47 | → | mikevdg joins (73bd8641@115-189-134-65.mobile.spark.co.nz) |
| 23:29:00 | <ph88> | that will do :P thanks |
| 23:29:11 | × | alx741 quits (~alx741@186.178.110.72) (Quit: alx741) |
| 23:29:17 | → | theothornhill joins (~user@161.80-203-66.nextgentel.com) |
| 23:29:38 | <mikevdg> | I'm struggling with monad transformers. How do you run a stack of them, e.g. if you have (from https://mmhaskell.com/monads/transformers) `readUserName :: MaybeT (ReaderT Env IO) String`? |
| 23:30:22 | <ph88> | why is it @pl ?? |
| 23:30:25 | <koz_> | mikevdg: One layer at a time |
| 23:30:30 | <koz_> | ph88: Short for 'pointless'. |
| 23:30:40 | <ph88> | shouldn't it be pointfree ? |
| 23:30:40 | <SevenK> | From a beginner haskeller, is Learn you a Good Haskell for Great Good a good place to start? I would like to get the physical copy |
| 23:30:41 | <koz_> | So in this case, you first have to use 'runMaybeT'. |
| 23:30:53 | <koz_> | SevenK: Not really. There are better resources. |
| 23:30:53 | × | nineonine quits (~nineonine@2604:3d08:7785:9600:d432:dfde:d2e0:ad7c) (Ping timeout: 272 seconds) |
| 23:30:57 | <Axman6> | @hoogle runMaybeT |
| 23:30:57 | <lambdabot> | Control.Monad.Trans.Maybe runMaybeT :: MaybeT m a -> m (Maybe a) |
| 23:30:57 | <lambdabot> | Relude.Monad.Reexport runMaybeT :: MaybeT (m :: Type -> Type) a -> m (Maybe a) |
| 23:30:57 | <lambdabot> | Universum.Monad.Reexport runMaybeT :: MaybeT a -> m (Maybe a) |
| 23:31:06 | <Axman6> | @hoogle runReaderT |
| 23:31:07 | <lambdabot> | Control.Monad.Trans.Reader runReaderT :: ReaderT r m a -> r -> m a |
| 23:31:07 | <lambdabot> | Control.Monad.Reader runReaderT :: ReaderT r m a -> r -> m a |
| 23:31:07 | <lambdabot> | Protolude runReaderT :: ReaderT r -> r -> m a |
| 23:31:14 | → | travisb joins (~travisb@2600:1700:7990:24e0:a06a:2f67:d4cf:9646) |
| 23:31:22 | <mikevdg> | Thanks koz_. Once you've used runMaybeT, then how to you use runReaderT? In a do- block? |
| 23:31:35 | <koz_> | mikevdg: Just chain them together, or let-bind. |
| 23:31:37 | <Axman6> | :t \env -> runReaderT . runMaybeT -- probably not going to work? |
| 23:31:38 | <lambdabot> | error: |
| 23:31:38 | <lambdabot> | Variable not in scope: runMaybeT :: a -> ReaderT r m a1 |
| 23:31:56 | <SevenK> | koz which book do you recommend for me? |
| 23:31:59 | <ph88> | why is it not @pf instead of @pl ? |
| 23:32:02 | <Axman6> | :t \env -> flip runReaderT env . runExceptT |
| 23:32:04 | <lambdabot> | r -> ExceptT e (ReaderT r m) a -> m (Either e a) |
| 23:32:04 | <koz_> | ph88: It's a joke. |
| 23:32:10 | <dolio> | @pf \x y z f -> f x y z |
| 23:32:10 | <lambdabot> | Maybe you meant: pl bf |
| 23:32:11 | <ph88> | oh ok |
| 23:32:46 | <dolio> | It could be if there weren't a very useful brainfuck interpreter. |
| 23:33:16 | × | theothornhill quits (~user@161.80-203-66.nextgentel.com) (Ping timeout: 240 seconds) |
| 23:34:00 | <koz_> | mikevdg: https://gist.github.com/kozross/3e780d55d3eb177d3525e9b7d5e9a89f |
| 23:34:09 | <koz_> | This is pure 'follow the types' material. |
| 23:34:57 | × | cr3 quits (~cr3@192-222-143-195.qc.cable.ebox.net) (Ping timeout: 246 seconds) |
| 23:35:21 | → | theothornhill joins (~user@161.80-203-66.nextgentel.com) |
| 23:35:23 | <mikevdg> | https://gist.github.com/mikevdg/aa9b5505b528f0836b85a716667e51a0 |
| 23:35:36 | <mikevdg> | Line 13 is breaking me. |
| 23:35:46 | × | mjevans- quits (~mjevans-@185.204.1.185) (Remote host closed the connection) |
| 23:35:47 | × | devalot quits (~ident@mail.pmade.com) (Quit: ZNC - http://znc.in) |
| 23:35:54 | <koz_> | mikevdg: Why? |
| 23:35:57 | mikevdg | stares intently at koz_'s code |
| 23:36:54 | × | vappend quits (~ezrakilty@75-172-109-5.tukw.qwest.net) (Remote host closed the connection) |
| 23:37:37 | <mikevdg> | Well, it won't compile... |
| 23:37:46 | mikevdg | is still starting at koz_'s code |
| 23:37:49 | <koz_> | mikevdg: What's the error message? |
| 23:37:58 | <koz_> | Generally without that, we can't advise you much. |
| 23:38:46 | × | threestrikes quits (~haskell@cpe-24-243-229-2.hot.res.rr.com) (Ping timeout: 256 seconds) |
| 23:39:20 | <mikevdg> | • Couldn't match expected type ‘ReaderT |
| 23:39:21 | <mikevdg> | (Maybe a0, Maybe a1, Maybe a2) (MaybeT IO) [Char]’ |
| 23:39:21 | <mikevdg> | with actual type ‘MaybeT (ReaderT Env IO) String’ |
| 23:39:25 | mikevdg | reflects on that error. |
| 23:39:41 | <mikevdg> | Do I need to move that line out of the first do block? |
| 23:39:45 | <koz_> | Yeah, do you see how ReaderT and MaybeT are swapped there? |
| 23:39:48 | <koz_> | That's your problem. |
| 23:39:51 | <mikevdg> | yes |
| 23:39:58 | <koz_> | You're saying that the order of effects is different to the one there. |
| 23:40:02 | <koz_> | Which is the order that you want? |
| 23:40:04 | × | theothornhill quits (~user@161.80-203-66.nextgentel.com) (Ping timeout: 265 seconds) |
| 23:41:39 | × | srk quits (~sorki@gateway/tor-sasl/sorki) (Ping timeout: 268 seconds) |
| 23:42:32 | → | acarrico joins (~acarrico@dhcp-68-142-39-249.greenmountainaccess.net) |
| 23:43:21 | <koz_> | @pl \f -> Transform . Star $ \x -> pure . f $ x |
| 23:43:21 | <lambdabot> | Transform . Star . (pure .) |
| 23:43:24 | <koz_> | LOL |
| 23:43:26 | <koz_> | Close |
| 23:43:32 | → | merijn joins (~merijn@83-160-49-249.ip.xs4all.nl) |
| 23:43:37 | → | srk joins (~sorki@gateway/tor-sasl/sorki) |
| 23:44:01 | → | threestrikes joins (~haskell@cpe-24-243-229-2.hot.res.rr.com) |
| 23:46:00 | × | xcmw quits (~textual@dyn-72-33-0-89.uwnet.wisc.edu) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 23:46:17 | × | geyaeb quits (~geyaeb@gateway/tor-sasl/geyaeb) (Remote host closed the connection) |
| 23:46:19 | → | geyaeb_ joins (~geyaeb@gateway/tor-sasl/geyaeb) |
| 23:46:34 | → | alx741 joins (~alx741@186.178.110.72) |
| 23:48:42 | × | merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 264 seconds) |
| 23:50:51 | × | geyaeb_ quits (~geyaeb@gateway/tor-sasl/geyaeb) (Remote host closed the connection) |
| 23:51:07 | → | theothornhill joins (~user@161.80-203-66.nextgentel.com) |
| 23:51:09 | → | geyaeb joins (~geyaeb@gateway/tor-sasl/geyaeb) |
| 23:52:17 | → | elred_ joins (~elred_@178.239.168.171) |
| 23:52:45 | <Axman6> | mikevdg: you have to run each transformer from the outside in - first run the MaybeT with runMaybeT, then run the reader with flip unReaderT env. this will give you an IO (Maybe a) |
| 23:53:08 | <mikevdg> | Thanks, Axman. |
| 23:54:20 | <mikevdg> | If you look at the gist I pasted (https://gist.github.com/mikevdg/aa9b5505b528f0836b85a716667e51a0), I've got three functions. I don't think you can have them in the same do-block unless they have the same signature. |
| 23:54:51 | → | heatsink joins (~heatsink@107-136-5-69.lightspeed.sntcca.sbcglobal.net) |
| 23:55:04 | <Axman6> | you _can_, but it's possibly a little advanced if you're this new to transformers |
| 23:55:43 | <Axman6> | @hoogle (forall a. m a -> n a) -> ReaderT e m a -> ReaderT e n a |
| 23:55:43 | <lambdabot> | package ad |
| 23:55:53 | <Axman6> | not even close lambdabot |
| 23:55:54 | × | theothornhill quits (~user@161.80-203-66.nextgentel.com) (Ping timeout: 264 seconds) |
| 23:56:04 | <Axman6> | @hoogle generalise |
| 23:56:04 | <lambdabot> | Language.Haskell.Extension GeneralisedNewtypeDeriving :: KnownExtension |
| 23:56:04 | <lambdabot> | module Data.GraphViz.Types.Generalised |
| 23:56:04 | <lambdabot> | module Codec.Serialise.Internal.GeneralisedUTF8 |
| 23:56:12 | <Axman6> | @hoogle generalize |
| 23:56:12 | <lambdabot> | Pipes.Prelude generalize :: Monad m => Pipe a b m r -> x -> Proxy x a x b m r |
| 23:56:12 | <lambdabot> | Hedgehog.Internal.Gen generalize :: Monad m => Gen a -> GenT m a |
| 23:56:12 | <lambdabot> | Control.Monad.Morph generalize :: Monad m => Identity a -> m a |
| 23:56:23 | <Axman6> | hmm, not to useful |
| 23:56:58 | <koz_> | Axman6: I think it's called something else. |
| 23:57:18 | <Axman6> | anyway, mikevdg, you are correct, you can't unify MaybeT IO a with MaybeT (ReaderT Env IO) b, you need to turn one into the other |
| 23:57:20 | <koz_> | And yeah, let's leave NTs out of this for now. :P |
| 23:57:28 | <Axman6> | yeah I think you're right. Agreed |
| 23:58:22 | → | niekvandepas joins (~niekvande@dhcp-077-249-088-250.chello.nl) |
| 23:59:20 | <Axman6> | mikevdg: you can change readEmail to do: MaybeT $ do lift $ putStrLn "..."; str <- lift getLine; ...; but it's a little gross. you're getting close to finding out why MTL exists :) |
All times are in UTC on 2021-01-24.