Home liberachat/#haskell: Logs Calendar

Logs on 2022-01-01 (liberachat/#haskell)

00:00:18 <EvanR> as an example of how idris streamlines things, the type level pair, type level list is not a promoted datakind, it's literally the pair and list that you would use on values
00:01:07 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
00:01:07 × lavaman quits (~lavaman@98.38.249.169) (Read error: Connection reset by peer)
00:01:40 lavaman joins (~lavaman@98.38.249.169)
00:02:07 × ________________ quits (~textual@node-1w7jr9qkwjp05lc932j6d6xa7.ipv6.telus.net) (Quit: Textual IRC Client: www.textualapp.com)
00:02:09 <monochrom> @quote monochrom poor.*dependent
00:02:10 <lambdabot> monochrom says: dynamic type is poor man's dependent type, they are so poor they can't buy a theorem prover.
00:02:12 n3rdy1 joins (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293)
00:02:22 <ProfSimm> The way I imagine it is that you assign a type directly to a variable, and it has this abstract constraint now. From that point on you can only assign a more constrained type on it until it gets assigned a specific value
00:02:54 <hpc> idris 2 also has linear types, which is pretty cool too
00:03:20 <EvanR> you can 'assign' types to variables in idris, as if they were values
00:03:54 <EvanR> they are allowed in the same places as values, as long as their types match up (types have types)
00:03:58 <geekosaur> although the notion of assigning more and more constraining types until you reach values sounds more like "gradual typing" to me
00:05:15 × zincy_ quits (~zincy@2a00:23c8:970c:4801:b868:7e50:825e:321f) (Remote host closed the connection)
00:05:19 <geekosaur> one problem with doing that in Haskell is that a type is what you promise to others, whereas a value is what you actually do
00:05:59 <monochrom> Hee hee why write programs if we expect proof erasure anyway >:)
00:06:00 <geekosaur> this has crucial differences when what you promise to others is that you will accept "any X such that…"
00:06:44 <geekosaur> you are not in this case refining a type, you are implementing a contract
00:07:53 DNH joins (~DNH@2a02:8108:1100:16d8:4942:7271:af20:a403)
00:08:10 hexeme is now known as ldlework
00:08:19 <geekosaur> how you implement it is your business as long as you obey the terms of the contract
00:10:58 <geekosaur> it'd actually make more sense if the contract were passed in, as opposed to "refining assignment" as you're thinking of
00:11:21 <geekosaur> that is, the contract comes from the caller, the implementation is the callee
00:15:12 esoca123 joins (uid534098@id-534098.tinside.irccloud.com)
00:15:13 zincy_ joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
00:17:29 <geekosaur> actually I guess that's backwards. the type (contract) goes out, the implementation goes in
00:19:25 × CiaoSen quits (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
00:20:57 × wroathe_ quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Ping timeout: 240 seconds)
00:20:57 <ProfSimm> I wonder can we do something to combine assignment and comparison for equality in one operator and action
00:21:08 the_proffesor joins (~theproffe@2601:282:847f:8010::85ac)
00:21:08 × the_proffesor quits (~theproffe@2601:282:847f:8010::85ac) (Changing host)
00:21:08 the_proffesor joins (~theproffe@user/theproffesor)
00:21:32 <ProfSimm> I mean if something is unassigned, then you assign it 5, it equals 5. So.
00:21:43 <ProfSimm> The comparison is true automaticlaly
00:21:43 <EvanR> if it were C it would be spelled ===
00:21:57 × theproffesor quits (~theproffe@user/theproffesor) (Ping timeout: 240 seconds)
00:22:19 <EvanR> and pronounced, equaliquals
00:22:21 <geekosaur> you seem to be looking for a lot of not-Haskell
00:22:32 <geekosaur> I mean, the whole concept of that goes against immutable data
00:23:46 theproffesor_ joins (~theproffe@2601:282:847f:8010::85ac)
00:23:48 × zincy_ quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
00:23:55 × the_proffesor quits (~theproffe@user/theproffesor) (Remote host closed the connection)
00:25:21 <EvanR> haskell doesn't feature "unassigned" variables
00:26:00 <EvanR> they are always bound to something, even if sometimes it is an error value or something
00:26:26 × theproffesor_ quits (~theproffe@2601:282:847f:8010::85ac) (Read error: Connection reset by peer)
00:26:45 theproffesor_ joins (~theproffe@2601:282:847f:8010::85ac)
00:28:24 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
00:28:35 <EvanR> s/feature/bug/
00:32:27 × Jing quits (~hedgehog@2604:a840:3::1013) (Remote host closed the connection)
00:32:29 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
00:32:29 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
00:32:29 wroathe joins (~wroathe@user/wroathe)
00:34:13 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 240 seconds)
00:36:15 × max22- quits (~maxime@2a01cb0883359800912ec9454e10c944.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
00:36:17 Jing joins (~hedgehog@2604:a840:3::1013)
00:36:20 <EvanR> too bad lambdabot doesn't have Data.Time so we can play with the date
00:36:48 <monochrom> Wait, what do you want to play with the date?
00:37:16 <geekosaur> % import Data.Time
00:37:16 <yahb> geekosaur:
00:37:21 <geekosaur> go nuts
00:37:28 max22- joins (~maxime@2a01cb08833598005a78fa8a594f3623.ipv6.abo.wanadoo.fr)
00:37:45 <EvanR> % fromGregorian 2021 12 31
00:37:45 <yahb> EvanR: 2021-12-31
00:37:50 <EvanR> cewl
00:39:07 <EvanR> % addDays 1 it
00:39:07 <yahb> EvanR: 2022-01-01
00:39:25 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 268 seconds)
00:39:30 <geekosaur> anyway I could imagine languages which did either, but they won't in much of any sense be Haskell
00:43:05 retroid_ joins (~retro@05412d78.skybroadband.com)
00:45:34 × retro_ quits (~retro@05412d78.skybroadband.com) (Ping timeout: 268 seconds)
00:46:40 SummerSonw joins (~The_viole@203.77.49.232)
00:48:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:49:09 × mastarija quits (~mastarija@2a05:4f46:e0e:5000:bc70:8f18:1f10:57e1) (Quit: Leaving)
00:50:24 Everything joins (~Everythin@37.115.210.35)
00:51:28 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
00:56:13 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 240 seconds)
00:57:39 ksqsf joins (~user@134.209.106.31)
00:59:37 × mvk quits (~mvk@2607:fea8:5cdd:f000::917a) (Ping timeout: 240 seconds)
01:01:37 × doyougnu quits (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 268 seconds)
01:07:46 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
01:10:14 Erutuon joins (~Erutuon@user/erutuon)
01:10:55 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
01:11:02 zincy_ joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
01:11:05 × DNH quits (~DNH@2a02:8108:1100:16d8:4942:7271:af20:a403) (Quit: My MacBook has gone to sleep. ZZZzzz…)
01:12:44 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 252 seconds)
01:12:56 sabhrd33 joins (~shawna@76.14.56.206)
01:14:10 × ProfSimm quits (~ProfSimm@87.227.196.109) (Remote host closed the connection)
01:14:19 × sabhrd33 quits (~shawna@76.14.56.206) (Remote host closed the connection)
01:15:27 × zincy_ quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Ping timeout: 256 seconds)
01:17:04 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
01:18:44 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
01:18:44 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
01:18:44 wroathe joins (~wroathe@user/wroathe)
01:21:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
01:23:42 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
01:25:05 × python476 quits (~user@88.160.31.174) (Ping timeout: 256 seconds)
01:25:47 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
01:26:18 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
01:34:57 DNH joins (~DNH@2a02:8108:1100:16d8:4942:7271:af20:a403)
01:36:11 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 245 seconds)
01:42:19 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 268 seconds)
01:43:29 × DNH quits (~DNH@2a02:8108:1100:16d8:4942:7271:af20:a403) (Quit: Textual IRC Client: www.textualapp.com)
01:45:00 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
01:46:08 × max22- quits (~maxime@2a01cb08833598005a78fa8a594f3623.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
01:47:51 lavaman joins (~lavaman@98.38.249.169)
01:48:17 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
01:49:13 <EvanR> hpc, I took the bait and went for the dang Applicative instance and ... the bind operation was only 3 lines xD https://paste.tomsmeding.com/41JicFe6
01:50:19 <EvanR> i guess i could use a library instead
01:51:00 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
01:51:32 × Tuplanolla quits (~Tuplanoll@91-159-69-90.elisa-laajakaista.fi) (Quit: Leaving.)
01:52:17 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
01:55:53 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 268 seconds)
01:59:49 × foul_owl quits (~kerry@94.140.8.106) (Quit: WeeChat 2.3)
02:00:37 × InternetCitizen quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 240 seconds)
02:00:59 kaction joins (~kaction@pool-71-191-91-40.washdc.fios.verizon.net)
02:01:16 <kaction> Does anybody know how to suppress error messages "unable to decommit memory" due madvice returning ENOSYS? Would it be considered GHC bug that it keeps saying it again and again?
02:01:25 × xff0x_ quits (~xff0x@2001:1a81:52ba:da00:768d:77e:35d:d86a) (Ping timeout: 268 seconds)
02:01:38 lavaman joins (~lavaman@98.38.249.169)
02:02:05 xff0x_ joins (~xff0x@2001:1a81:52ba:da00:be6d:6461:7f7a:de65)
02:02:33 <lechner_> Hi, could someone please explain how, in rel8, I can tie the Data.SemVer type to the postgresql-semver extension, please? Thanks! It's something like this https://hackage.haskell.org/package/rel8-1.2.1.0/docs/src/Rel8.Type.html#typeInformation
02:02:37 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds)
02:02:51 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
02:03:33 otherwise joins (~otherwise@2601:602:880:90f0:b87e:64be:1874:bae6)
02:05:08 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
02:05:44 <lechner_> kaction: thanks for blazing the trail on this https://salsa.debian.org/lechner/dh-haskell
02:08:13 × n3rdy1 quits (~n3rdy1@2600:1700:4570:3480:1b88:50f:dae0:9293) (Ping timeout: 240 seconds)
02:09:33 <kaction> lechner_: you are welcome :)
02:09:33 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
02:12:04 <lechner_> kaction: did you get the same reaction years ago? https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1002296#19
02:12:44 × mcglk_ quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer)
02:14:20 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 252 seconds)
02:14:26 mcglk joins (~mcglk@131.191.49.120)
02:15:41 L29Ah joins (~L29Ah@wikipedia/L29Ah)
02:17:29 _73 joins (~user@pool-108-49-252-36.bstnma.fios.verizon.net)
02:19:17 <kaction> lechner_: I don't recall how it ended. I think dh-haskell got some adoption, but it had rough corners with more complicated packages, and I never took time to make it perfectly bit-to-bit compatible with whatever build system was status-quo.
02:22:33 foul_owl joins (~kerry@97-126-11-68.tukw.qwest.net)
02:24:27 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
02:25:40 lavaman joins (~lavaman@98.38.249.169)
02:27:48 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
02:28:29 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
02:31:51 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
02:32:51 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 245 seconds)
02:32:52 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
02:32:52 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
02:32:52 wroathe joins (~wroathe@user/wroathe)
02:33:06 × wroathe quits (~wroathe@user/wroathe) (Client Quit)
02:33:21 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
02:33:21 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
02:33:21 wroathe joins (~wroathe@user/wroathe)
02:42:11 × xff0x_ quits (~xff0x@2001:1a81:52ba:da00:be6d:6461:7f7a:de65) (Ping timeout: 250 seconds)
02:43:37 × cyphase_eviltwin quits (~cyphase@user/cyphase) (Ping timeout: 240 seconds)
02:44:17 xff0x_ joins (~xff0x@2001:1a81:52f9:6300:887a:5ed1:98de:74ec)
02:45:01 × waleee quits (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4) (Ping timeout: 240 seconds)
02:47:23 <lechner_> kaction: thanks! now it is. i copied everything from hlibrary.mk
02:49:59 qrpnxz parts (abc4f95c31@user/qrpnxz) (Disconnected: closed)
02:50:56 cyphase joins (~cyphase@user/cyphase)
02:52:05 × ksqsf quits (~user@134.209.106.31) (Remote host closed the connection)
02:52:33 ksqsf joins (~user@2001:da8:d800:600:1db7:f109:60a:6851)
02:54:42 × bollu_ quits (uid233390@id-233390.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
02:54:59 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
02:55:39 × ksqsf quits (~user@2001:da8:d800:600:1db7:f109:60a:6851) (Read error: Connection reset by peer)
02:56:08 ksqsf joins (~user@134.209.106.31)
03:02:00 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
03:06:54 neverfindme joins (~hayden@72.92.246.5)
03:07:08 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 252 seconds)
03:08:54 doyougnu joins (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net)
03:11:38 × neverfindme quits (~hayden@72.92.246.5) (Client Quit)
03:18:47 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
03:18:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
03:19:40 × burnsidesLlama quits (~burnsides@dhcp168-010.wadham.ox.ac.uk) (Remote host closed the connection)
03:20:19 burnsidesLlama joins (~burnsides@dhcp168-010.wadham.ox.ac.uk)
03:23:16 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 245 seconds)
03:24:37 × burnsidesLlama quits (~burnsides@dhcp168-010.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
03:25:13 × vglfr quits (~vglfr@88.155.60.141) (Ping timeout: 256 seconds)
03:26:57 vglfr joins (~vglfr@88.155.60.141)
03:29:31 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
03:30:46 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 245 seconds)
03:35:17 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
03:38:57 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 240 seconds)
03:39:57 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
03:40:08 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 252 seconds)
03:41:34 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
03:43:03 mbuf joins (~Shakthi@223.184.115.117)
03:46:36 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:46:36 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:46:36 finn_elija is now known as FinnElija
03:50:02 × ksqsf quits (~user@134.209.106.31) (Ping timeout: 252 seconds)
03:51:31 × theproffesor_ quits (~theproffe@2601:282:847f:8010::85ac) (Changing host)
03:51:31 theproffesor_ joins (~theproffe@user/theproffesor)
03:51:51 theproffesor_ is now known as theproffesor
03:52:51 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
03:53:02 × td_ quits (~td@muedsl-82-207-238-106.citykom.de) (Ping timeout: 260 seconds)
03:54:54 td_ joins (~td@muedsl-82-207-238-133.citykom.de)
04:03:41 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
04:04:12 img joins (~img@user/img)
04:05:59 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
04:06:47 × EvanR quits (~EvanR@user/evanr) (Quit: Leaving)
04:07:35 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
04:08:08 EvanR joins (~EvanR@user/evanr)
04:12:47 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 268 seconds)
04:14:25 × otherwise quits (~otherwise@2601:602:880:90f0:b87e:64be:1874:bae6) (Remote host closed the connection)
04:16:10 gaff joins (~gaff@49.207.212.151)
04:25:44 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
04:29:02 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 240 seconds)
04:30:13 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 240 seconds)
04:32:12 × mcglk quits (~mcglk@131.191.49.120) (Read error: Connection reset by peer)
04:33:11 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
04:33:28 mcglk joins (~mcglk@131.191.49.120)
04:34:45 mvk joins (~mvk@2607:fea8:5cdd:f000::917a)
04:37:20 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 252 seconds)
04:37:44 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
04:40:12 fef joins (~thedawn@user/thedawn)
04:42:37 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
04:46:12 otherwise joins (~otherwise@2601:602:880:90f0:fce5:a06d:c23f:e50d)
04:47:13 × kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
04:47:56 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 268 seconds)
04:50:54 × otherwise quits (~otherwise@2601:602:880:90f0:fce5:a06d:c23f:e50d) (Ping timeout: 260 seconds)
04:56:41 × kaph quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer)
04:59:54 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
05:00:05 off^ joins (~off@207.5.21.20)
05:00:18 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
05:02:02 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
05:04:45 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 250 seconds)
05:09:09 kaph_ joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it)
05:15:49 juri_ joins (~juri@178.63.35.222)
05:23:57 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 240 seconds)
05:29:04 uam joins (uid360535@id-360535.hampstead.irccloud.com)
05:38:10 Erutuon joins (~Erutuon@user/erutuon)
05:39:29 × mvk quits (~mvk@2607:fea8:5cdd:f000::917a) (Ping timeout: 252 seconds)
05:41:17 × Hawker_ quits (~pi@user/hawker) (Ping timeout: 240 seconds)
05:42:35 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
05:44:39 deadmarshal joins (~deadmarsh@95.38.119.182)
05:49:09 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:50:29 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
05:51:06 fef joins (~thedawn@user/thedawn)
05:53:26 × cyphase quits (~cyphase@user/cyphase) (Ping timeout: 260 seconds)
05:53:41 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds)
05:53:44 cyphase joins (~cyphase@user/cyphase)
05:54:53 × kaph_ quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Quit: Leaving)
05:55:09 kaph joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it)
05:55:14 × gaff quits (~gaff@49.207.212.151) (Remote host closed the connection)
05:55:14 kaph_ joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it)
05:55:23 × kaph_ quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Client Quit)
05:55:23 × kaph quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Client Quit)
05:55:38 kaph joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it)
05:56:23 gaff joins (~gaff@49.207.212.151)
06:00:07 otherwise joins (~otherwise@2601:602:880:90f0:1c02:7c0e:4814:d07c)
06:00:28 lavaman joins (~lavaman@98.38.249.169)
06:01:03 × gaff quits (~gaff@49.207.212.151) (Ping timeout: 256 seconds)
06:01:55 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
06:01:55 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
06:01:55 wroathe joins (~wroathe@user/wroathe)
06:02:27 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
06:04:17 × otherwise quits (~otherwise@2601:602:880:90f0:1c02:7c0e:4814:d07c) (Ping timeout: 240 seconds)
06:06:09 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
06:06:17 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
06:07:17 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
06:11:23 mvk joins (~mvk@2607:fea8:5cdd:f000::917a)
06:14:18 gaff joins (~gaff@49.207.198.216)
06:23:43 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
06:37:52 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
06:40:17 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 240 seconds)
06:46:25 Rum joins (~bourbon@user/rum)
07:00:56 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
07:07:34 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
07:08:13 nhatanh02 joins (~satori@123.24.172.30)
07:09:09 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 268 seconds)
07:17:08 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
07:23:54 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Remote host closed the connection)
07:24:40 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
07:29:06 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
07:33:08 lavaman joins (~lavaman@98.38.249.169)
07:34:32 × gaff quits (~gaff@49.207.198.216) (Remote host closed the connection)
07:37:17 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
07:37:52 otherwise joins (~otherwise@2601:602:880:90f0:15d8:a1fc:ce25:ad10)
07:39:58 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Remote host closed the connection)
07:42:29 coolnickname joins (uid531864@user/coolnickname)
07:47:37 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
07:51:58 × Jonno_FTW quits (~come@api.carswap.me) (Ping timeout: 260 seconds)
07:52:17 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
07:59:14 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
08:04:44 × Rum quits (~bourbon@user/rum) (Quit: WeeChat 3.4)
08:05:42 img joins (~img@user/img)
08:12:18 gaff joins (~gaff@49.207.222.122)
08:15:09 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
08:15:36 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:16:35 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
08:22:12 × otherwise quits (~otherwise@2601:602:880:90f0:15d8:a1fc:ce25:ad10) (Remote host closed the connection)
08:23:56 × SummerSonw quits (~The_viole@203.77.49.232) (Ping timeout: 252 seconds)
08:25:03 × deadmarshal quits (~deadmarsh@95.38.119.182) (Quit: ZNC 1.8.2 - https://znc.in)
08:25:57 deadmarshal joins (~deadmarsh@95.38.119.182)
08:26:53 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:36:35 × xff0x_ quits (~xff0x@2001:1a81:52f9:6300:887a:5ed1:98de:74ec) (Ping timeout: 252 seconds)
08:37:28 xff0x_ joins (~xff0x@2001:1a81:52f9:6300:7499:a110:eaa4:a379)
08:40:57 × Vajb quits (~Vajb@85-76-162-179-nat.elisa-mobile.fi) (Ping timeout: 240 seconds)
08:42:50 × gaff quits (~gaff@49.207.222.122) (Ping timeout: 260 seconds)
08:42:55 SummerSonw joins (~The_viole@203.77.49.232)
08:44:11 Vajb joins (~Vajb@2001:999:50:e6be:1e98:9376:d93e:4506)
08:47:45 otherwise joins (~otherwise@2601:602:880:90f0:cdff:5f10:47b:dd48)
09:03:27 zer0bitz joins (~zer0bitz@196.244.192.57)
09:04:23 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 250 seconds)
09:07:03 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
09:07:03 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
09:07:03 wroathe joins (~wroathe@user/wroathe)
09:08:09 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
09:12:01 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
09:12:01 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
09:12:41 geekosaur joins (~geekosaur@xmonad/geekosaur)
09:16:25 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
09:16:56 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Read error: Connection reset by peer)
09:17:51 geekosaur joins (~geekosaur@xmonad/geekosaur)
09:19:23 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
09:19:37 × otherwise quits (~otherwise@2601:602:880:90f0:cdff:5f10:47b:dd48) (Remote host closed the connection)
09:24:36 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
09:32:46 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
09:33:51 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
09:37:23 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
09:53:05 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Remote host closed the connection)
09:53:30 coot joins (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827)
09:55:46 × coot quits (~coot@2a02:a310:e03f:8500:5cc8:47c:8ec0:b827) (Client Quit)
09:56:10 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
10:01:56 gehmehgeh joins (~user@user/gehmehgeh)
10:15:36 neurocyte0132889 joins (~neurocyte@IP-045128181214.dynamic.medianet-world.de)
10:15:36 × neurocyte0132889 quits (~neurocyte@IP-045128181214.dynamic.medianet-world.de) (Changing host)
10:15:36 neurocyte0132889 joins (~neurocyte@user/neurocyte)
10:15:42 lavaman joins (~lavaman@98.38.249.169)
10:20:01 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
10:20:03 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:21:30 Tuplanolla joins (~Tuplanoll@91-159-69-90.elisa-laajakaista.fi)
10:27:22 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
10:28:27 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
10:28:42 fcc977 joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it)
10:28:50 acidjnk joins (~acidjnk@p200300d0c7271e28a1c27b1d533e8cdb.dip0.t-ipconnect.de)
10:28:51 acidjnk_new joins (~acidjnk@p200300d0c7271e28a1c27b1d533e8cdb.dip0.t-ipconnect.de)
10:29:14 × vglfr quits (~vglfr@88.155.60.141) (Ping timeout: 260 seconds)
10:30:02 × kaph quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Ping timeout: 240 seconds)
10:34:26 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
10:37:54 × fcc977 quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Quit: Leaving)
10:38:32 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
10:38:32 kaph joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it)
10:40:55 × mbuf quits (~Shakthi@223.184.115.117) (Read error: Connection reset by peer)
10:41:12 mbuf joins (~Shakthi@223.184.115.117)
10:45:48 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
10:58:29 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
11:02:10 jtomas joins (~jtomas@153.red-83-53-252.dynamicip.rima-tde.net)
11:07:42 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
11:07:50 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
11:07:50 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
11:07:50 wroathe joins (~wroathe@user/wroathe)
11:12:26 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds)
11:13:37 vglfr joins (~vglfr@88.155.60.141)
11:14:02 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 240 seconds)
11:15:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
11:18:43 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
11:20:26 cosimone joins (~user@93-34-132-88.ip49.fastwebnet.it)
11:24:08 img joins (~img@user/img)
11:24:18 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
11:26:26 jakalx parts (~jakalx@base.jakalx.net) ()
11:28:47 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
11:28:53 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
11:38:29 zincy_ joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
11:38:36 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
11:38:36 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
11:38:36 wroathe joins (~wroathe@user/wroathe)
11:39:27 joo-_ joins (~joo-_@80-62-117-1-mobile.dk.customer.tdc.net)
11:39:27 × joo-_ quits (~joo-_@80-62-117-1-mobile.dk.customer.tdc.net) (Changing host)
11:39:27 joo-_ joins (~joo-_@fsf/member/joo--)
11:39:32 max22- joins (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr)
11:43:53 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
11:44:26 dyeplexer joins (~dyeplexer@user/dyeplexer)
11:49:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
11:50:26 jakalx joins (~jakalx@base.jakalx.net)
12:09:23 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
12:09:23 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
12:09:23 wroathe joins (~wroathe@user/wroathe)
12:13:14 retro_ joins (~retro@05412d78.skybroadband.com)
12:14:11 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
12:14:23 × retroid_ quits (~retro@05412d78.skybroadband.com) (Ping timeout: 268 seconds)
12:15:04 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
12:17:34 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
12:18:16 gehmehgeh joins (~user@user/gehmehgeh)
12:19:03 × off^ quits (~off@207.5.21.20) (Remote host closed the connection)
12:20:21 × kaph quits (~kaph@net-2-38-107-19.cust.vodafonedsl.it) (Read error: Connection reset by peer)
12:20:43 kaph joins (~kaph@net-2-38-107-19.cust.vodafonedsl.it)
12:21:37 InternetCitizen joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
12:28:39 Rum joins (~bourbon@user/rum)
12:28:41 × xff0x_ quits (~xff0x@2001:1a81:52f9:6300:7499:a110:eaa4:a379) (Ping timeout: 252 seconds)
12:29:39 xff0x_ joins (~xff0x@port-92-193-207-83.dynamic.as20676.net)
12:32:35 × cosimone quits (~user@93-34-132-88.ip49.fastwebnet.it) (Ping timeout: 250 seconds)
12:34:05 __monty__ joins (~toonn@user/toonn)
12:35:09 fef joins (~thedawn@user/thedawn)
12:36:36 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
12:36:45 CiaoSen joins (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de)
12:39:57 × acidjnk_new quits (~acidjnk@p200300d0c7271e28a1c27b1d533e8cdb.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
12:39:57 × acidjnk quits (~acidjnk@p200300d0c7271e28a1c27b1d533e8cdb.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
12:40:13 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
12:40:13 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
12:40:13 wroathe joins (~wroathe@user/wroathe)
12:41:01 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
12:44:06 × nhatanh02 quits (~satori@123.24.172.30) (Ping timeout: 260 seconds)
12:45:01 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
12:46:13 × vglfr quits (~vglfr@88.155.60.141) (Ping timeout: 256 seconds)
12:46:13 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
12:47:52 gaff joins (~gaff@49.207.192.225)
12:48:05 vglfr joins (~vglfr@88.155.60.141)
12:48:23 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
12:48:57 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 240 seconds)
12:50:10 × max22- quits (~maxime@lfbn-ren-1-1026-62.w92-139.abo.wanadoo.fr) (Ping timeout: 260 seconds)
12:53:00 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
12:56:02 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
12:57:34 × CiaoSen quits (~Jura@p200300c957347b002a3a4dfffe84dbd5.dip0.t-ipconnect.de) (Quit: CiaoSen)
12:58:29 × uam quits (uid360535@id-360535.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
12:59:07 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
13:02:48 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
13:03:42 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Ping timeout: 260 seconds)
13:03:51 _ht joins (~quassel@5.253.205.174)
13:07:29 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 250 seconds)
13:10:13 × gaff quits (~gaff@49.207.192.225) (Read error: Connection reset by peer)
13:10:18 gaff_ joins (~gaff@49.207.192.225)
13:10:57 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
13:10:57 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
13:10:57 wroathe joins (~wroathe@user/wroathe)
13:11:42 cosimone joins (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20)
13:15:50 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 260 seconds)
13:16:04 nrl^ joins (~nrl@207.5.21.20)
13:22:45 × turlando_ quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Read error: Connection reset by peer)
13:22:59 turlando joins (~turlando@93-42-250-112.ip89.fastwebnet.it)
13:22:59 × turlando quits (~turlando@93-42-250-112.ip89.fastwebnet.it) (Changing host)
13:22:59 turlando joins (~turlando@user/turlando)
13:32:01 simendsjo joins (~user@host.62.119.172.37.bitcom.se)
13:33:18 fjmorazan_ is now known as fjmorazan
13:35:17 nhatanh02 joins (~satori@123.24.172.30)
13:35:27 sprout joins (~quassel@2a02:a467:ccd6:1:5c9e:b916:30fd:4234)
13:36:05 × turlando quits (~turlando@user/turlando) (Ping timeout: 256 seconds)
13:38:20 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
13:42:47 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
13:43:53 machinedgod joins (~machinedg@24.105.81.50)
13:46:12 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:47:59 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
13:47:59 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
13:47:59 wroathe joins (~wroathe@user/wroathe)
13:50:17 × simendsjo quits (~user@host.62.119.172.37.bitcom.se) (Ping timeout: 240 seconds)
13:52:12 spaceseller joins (~spacesell@31.147.205.13)
13:52:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
13:57:18 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
13:57:30 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
13:59:11 <InternetCitizen> > (\x -> (x 3, x "three")) (\x -> x)
13:59:13 <lambdabot> error:
13:59:13 <lambdabot> • No instance for (Num [Char]) arising from the literal ‘3’
13:59:13 <lambdabot> • In the first argument of ‘x’, namely ‘3’
13:59:50 × Rum quits (~bourbon@user/rum) (Quit: WeeChat 3.4)
14:00:01 <InternetCitizen> why does this not work? It's like Haskell specializes the type of id to `Num a => a -> a`
14:00:22 <InternetCitizen> > (\x -> (x "four", x "three")) (\x -> x)
14:00:24 <lambdabot> ("four","three")
14:00:31 <InternetCitizen> > (\x -> (x 3, x 4)) (\x -> x)
14:00:33 <lambdabot> (3,4)
14:01:31 <InternetCitizen> on the Hindley-Milner wikipedia article I found:
14:01:40 <InternetCitizen> "Only values bound in a let construct are subject to instantiation, i.e. are polymorphic, while the parameters in lambda-abstractions are treated as being monomorphic."
14:02:11 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 252 seconds)
14:05:15 <InternetCitizen> > let id x = x in (id 3, id "three")
14:05:17 <lambdabot> (3,"three")
14:05:24 <hpc> InternetCitizen: it needs to be rank 2, which needs a type signature
14:05:38 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:06:01 <InternetCitizen> what needs to be rank 2?
14:06:08 <hpc> that makes sure x stays as type (forall a. a -> a) and not some specific (a -> a) in the context of the lambda
14:06:40 <hpc> > let foo :: (forall a. a -> a) -> (Int, String); foo x = (x 3, x "three") in foo (\x -> x)
14:06:41 <lambdabot> (3,"three")
14:11:17 <InternetCitizen> hpc: if I understand correctly, the inference algorithm starts with `(\x -> (x "four", x "three"))`, gives x a type variable `a` and since we call it with "four" substitues `a` for type `String -> b` and fails when we call `x` with `Int` again?
14:12:25 <hpc> essentially
14:12:33 <Hecate> morning
14:13:02 <hpc> you get a weirder error than that because 3 :: Num a => a, so it thinks "hmm, what if there was instance Num String where ...?"
14:13:24 <hpc> > (\x -> (x False, x "False")) (\x -> x) -- this might make it more clear
14:13:25 <lambdabot> error:
14:13:25 <lambdabot> • Couldn't match expected type ‘Bool’ with actual type ‘[Char]’
14:13:25 <lambdabot> • In the first argument of ‘x’, namely ‘"False"’
14:14:07 <InternetCitizen> then why does the Wikipedia article that writing lambd expressions this way is undecidable?
14:14:09 <InternetCitizen> https://en.wikipedia.org/wiki/Hindley%E2%80%93Milner_type_system#Let-polymorphism
14:14:27 <InternetCitizen> they give the example of `(λ id . ... (id 3) ... (id "text") ... ) (λ x . x)`
14:15:30 <InternetCitizen> "restricting the binding mechanism in an extension of the expression syntax. Only values bound in a let construct are subject to instantiation, i.e. are polymorphic, while the parameters in lambda-abstractions are treated as being monomorphic."
14:15:47 × spaceseller quits (~spacesell@31.147.205.13) (Remote host closed the connection)
14:15:54 <InternetCitizen> so Haskell type-inference isn't decidable ???
14:16:13 spaceseller joins (~spacesell@31.147.205.13)
14:16:42 <hpc> it's decidable if you don't allow that sort of example
14:17:25 <hpc> rank 2 is also decidable, but higher ranked stuff is not
14:17:27 lavaman joins (~lavaman@98.38.249.169)
14:17:47 <hpc> rank 2 is where you see things like that nested forall in foo
14:18:01 <hpc> rank 3 is forall nested one level further, etc etc
14:18:19 <geekosaur> (note that ghc does not implement rank-2 type inference, even though it is decidable)
14:18:23 <InternetCitizen> I thought that the example is what I typed into Haskel
14:18:46 <InternetCitizen> > (\x -> (x 3, x "three")) (\x -> x)
14:18:48 <lambdabot> error:
14:18:48 <lambdabot> • No instance for (Num [Char]) arising from the literal ‘3’
14:18:48 <lambdabot> • In the first argument of ‘x’, namely ‘3’
14:18:49 <InternetCitizen> ^
14:18:55 <hpc> yeah, ghc chooses not to infer rank-2 types
14:19:40 <hpc> Rank2Types and RankNTypes used to be separate, so maybe if you went back to ghc 6 it could be inferred?
14:19:50 <geekosaur> no
14:20:17 <geekosaur> rank-2 type inference is fairly complicated, so they decided to punt on it because there didn't seem to be any demand for it
14:20:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
14:20:37 <hpc> ah, forgot about that
14:20:45 <geekosaur> I mean, the typechecker is already complex enough without it :)
14:20:50 <hpc> in any event, you don't really want higher-ranked inference anyway
14:21:45 <hpc> imagine you're writing your code, and decide to implement some nice higher-order function like map
14:21:51 <hpc> you make a mistake somewhere and your code compiles
14:21:56 <InternetCitizen> how does it "choose" not to infer rank-2 types exactly? Does this simply amount to giving `x` a monomorphic type rather than a polymorphic one?
14:21:59 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
14:22:01 <hpc> but surprise, it's now a rank-5 type or something and completely unusable
14:22:08 <hpc> and you have no error to figure out what you did wrong
14:22:18 × coolnickname quits (uid531864@user/coolnickname) (Quit: Connection closed for inactivity)
14:22:53 <InternetCitizen> that sounds scary, I don't even know what higher ranked types are
14:24:03 <hpc> a rank 3 type would be maybe something like (forall b. (forall a. a -> a) -> (b -> b)) -> (c -> c) -> c -> c
14:24:17 <hpc> just more and more foralls to the left of (->)
14:24:25 <hpc> at deeper and deeper nestings
14:24:34 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:24:49 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:25:11 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:25:14 coolnickname joins (uid531864@user/coolnickname)
14:25:23 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:25:28 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:25:39 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:25:47 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:25:58 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:26:02 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:26:13 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:26:16 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:26:27 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:26:27 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:26:37 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:26:37 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
14:26:48 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:26:48 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:26:58 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:26:58 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:27:09 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:27:09 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
14:27:20 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:27:20 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
14:27:22 <InternetCitizen> so the real type of the lambda on the left is forall b, c. (forall a. a -> a) -> (b, c) ?
14:27:33 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:27:33 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:27:47 <InternetCitizen> no sorry (forall a. a -> a) -> (String, Integer)
14:27:49 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:27:49 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:28:11 <InternetCitizen> I mean for `(\x -> (x 3, x "three"))`
14:28:12 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:28:12 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
14:28:26 <hpc> yes
14:28:47 <hpc> and thata (forall a. a -> a) type only accepts things that can be that polymorphic
14:28:48 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:28:53 <hpc> it will accept id, but not ($) for instance
14:28:53 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:29:04 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:29:07 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:29:17 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:29:19 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:29:30 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:29:30 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:29:40 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:29:40 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:29:50 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:29:50 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
14:30:01 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:30:01 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
14:30:12 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:30:12 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:30:13 n3rdy1 joins (~n3rdy1@2601:646:c300:f20:d852:3bde:2197:ddf9)
14:30:24 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:30:24 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:30:29 <InternetCitizen> sorry but isn't ($) :: forall a. forall b. (a -> b) -> a -> b ?
14:30:38 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:30:38 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:30:48 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:30:48 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:30:58 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:30:58 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
14:31:09 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:31:09 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:31:20 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:31:21 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:31:32 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:31:36 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:31:43 ChanServ sets mode +o geekosaur
14:31:47 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
14:31:52 geekosaur sets mode +b *!*@static.211.245.203.116.clients.your-server.de
14:31:53 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
14:32:06 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
14:32:14 geekosaur sets mode -o geekosaur
14:32:27 <hpc> InternetCitizen: yea, but you can define it as ($) = id
14:32:28 Feuermagier joins (~Feuermagi@user/feuermagier)
14:32:41 <hpc> perhaps that's a bad example
14:32:54 <hpc> it will accept id, but not... not for instance
14:32:57 <hpc> :t not
14:32:58 <lambdabot> Bool -> Bool
14:33:08 waleee joins (~waleee@2001:9b0:21d:fc00:398f:b003:b90d:acf4)
14:33:11 <hpc> grammatically that's an even worse example lol
14:34:53 <hpc> > let foo :: (forall a. a -> a) -> (Int, String); foo x = (x 3, x "three") in foo not
14:34:55 <lambdabot> error:
14:34:55 <lambdabot> • Couldn't match type ‘a’ with ‘Bool’
14:34:55 <lambdabot> ‘a’ is a rigid type variable bound by
14:35:16 <InternetCitizen> hpc: so if I understand correctly, this implies that when it tries to infer the type of (\x -> (x 3, x "three")), it gives x a type variable `a` and not a type schema `forall a . b` (or something like that)
14:35:17 <hpc> and that's the sort of error you get when you pass something that's "too monomorphic"
14:35:42 <hpc> yeah
14:36:00 <hpc> it tries to have the "forall a" all the way to the left
14:36:15 <hpc> foo :: forall a. (a -> a) -> (Int, String)
14:36:23 <hpc> which means you have to pick a single a when calling foo
14:38:28 <InternetCitizen> hpc: thank you very much <3
14:44:03 max22- joins (~maxime@2a01cb0883359800a99596770101e95e.ipv6.abo.wanadoo.fr)
14:49:11 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
14:49:29 Feuermagier joins (~Feuermagi@user/feuermagier)
14:50:10 × gaff_ quits (~gaff@49.207.192.225) (Remote host closed the connection)
14:51:27 gaff joins (~gaff@49.207.192.225)
14:53:25 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds)
14:54:58 Feuermagier joins (~Feuermagi@user/feuermagier)
14:55:37 × gaff quits (~gaff@49.207.192.225) (Ping timeout: 240 seconds)
14:58:43 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
14:59:07 Feuermagier joins (~Feuermagi@user/feuermagier)
15:00:32 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
15:00:54 × SummerSonw quits (~The_viole@203.77.49.232) (Ping timeout: 268 seconds)
15:02:04 ChanServ sets mode +o litharge
15:02:05 litharge sets mode -bo *!*@static.211.245.203.116.clients.your-server.de litharge
15:02:08 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:02:09 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:02:19 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:02:21 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:02:31 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:02:31 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:02:41 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:02:41 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:02:51 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:02:51 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
15:02:59 gaff joins (~gaff@49.207.192.225)
15:03:01 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:03:01 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:03:13 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:03:13 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:03:26 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:03:26 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:03:42 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:03:42 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:04:05 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:04:07 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:04:18 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:04:19 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:04:29 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:04:29 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:04:40 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:04:42 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:04:52 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:04:52 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:05:02 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:05:02 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
15:05:12 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:05:12 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:05:22 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:05:22 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:05:25 <int-e> geekosaur: ^half an hour wasn't enough
15:05:33 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:05:33 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:05:47 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:05:47 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:06:05 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:06:05 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:06:16 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:06:16 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:06:27 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:06:31 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:06:42 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:06:44 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:06:55 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:06:55 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:07:05 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:07:05 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:07:15 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:07:15 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:07:25 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:07:25 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:07:35 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:07:35 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
15:07:46 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:07:46 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
15:07:59 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:08:02 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:08:12 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:08:12 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
15:08:22 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:08:22 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
15:08:32 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:08:33 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:08:44 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:08:45 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:08:54 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:08:54 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:09:04 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:09:04 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
15:09:15 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:09:17 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:09:28 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:09:40 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:09:52 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:10:02 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:10:14 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:10:22 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:10:33 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:10:38 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:10:50 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:10:51 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:11:01 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:11:01 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:11:03 SummerSonw joins (~The_viole@203.77.49.232)
15:11:11 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:11:11 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
15:11:22 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:11:22 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:11:32 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:11:32 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Read error: Connection reset by peer)
15:11:43 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:11:43 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:11:50 <geekosaur> blegh
15:11:53 ChanServ sets mode +o geekosaur
15:11:56 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:11:56 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:12:12 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
15:12:12 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Remote host closed the connection)
15:12:13 geekosaur sets mode +b ralu!*@*
15:12:24 <Hecate> §2
15:12:41 geekosaur sets mode -o geekosaur
15:13:09 × gaff quits (~gaff@49.207.192.225) (Ping timeout: 250 seconds)
15:13:17 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
15:13:17 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
15:13:17 wroathe joins (~wroathe@user/wroathe)
15:13:54 × _ht quits (~quassel@5.253.205.174) (Ping timeout: 260 seconds)
15:14:02 × sprout quits (~quassel@2a02:a467:ccd6:1:5c9e:b916:30fd:4234) (Ping timeout: 240 seconds)
15:14:07 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
15:14:56 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:14:57 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
15:15:19 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
15:15:46 ph14nix joins (~io@94.234.51.48)
15:17:36 Feuermagier joins (~Feuermagi@user/feuermagier)
15:19:44 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
15:19:46 × ph14nix quits (~io@94.234.51.48) (Quit: WeeChat 3.4)
15:22:29 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 252 seconds)
15:23:25 wootehfoot joins (~wootehfoo@user/wootehfoot)
15:25:49 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
15:26:51 Feuermagier joins (~Feuermagi@user/feuermagier)
15:27:15 × spaceseller quits (~spacesell@31.147.205.13) (Quit: Leaving)
15:27:17 × son0p quits (~ff@181.136.122.143) (Remote host closed the connection)
15:30:42 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 260 seconds)
15:30:57 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds)
15:31:37 acode joins (~acode@dslb-092-077-045-168.092.077.pools.vodafone-ip.de)
15:33:11 <acode> I'm a mathematician learning haskell and I'm confused by the name of the typeclass Functor. In my understanding Functor is for types that "can be mapped over" which makes a lot of sense, but I'm confused by its name. Is it related to functors in mathematics or is it one of the many instances of unrelated concepts sharing a name?
15:33:43 <geekosaur> it's a restricted form of a category theory functor, as I understand it
15:34:12 <geekosaur> there's a more genjeral one in Control.Category; the normla one is restricted to the (notional) category Hask of Haskell types
15:35:00 <acode> Uh I never realized that types form a category. What's an arrow in Hask?
15:38:41 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 245 seconds)
15:38:51 <Clint> https://wiki.haskell.org/Hask
15:39:00 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
15:40:32 <geekosaur> and they don't quite, because of bottom. But I'm also led to believe that there are other category-like things that would admit Hask
15:40:42 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
15:41:11 <geekosaur> also there's the paper "Fast and loose reasoning is morally correct" which shows that many CT things are applicable to Hask if you take some care
15:42:14 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
15:42:52 <acode> very interesting, thanks for the references
15:42:57 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
15:43:35 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Remote host closed the connection)
15:45:41 × SummerSonw quits (~The_viole@203.77.49.232) (Quit: Leaving)
15:47:01 × zincy_ quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
15:47:28 Feuermagier joins (~Feuermagi@user/feuermagier)
15:49:28 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
15:50:09 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
15:52:10 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 260 seconds)
15:53:17 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 240 seconds)
15:54:30 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
15:54:44 son0p joins (~ff@181.136.122.143)
15:56:39 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
15:57:22 Feuermagier joins (~Feuermagi@user/feuermagier)
15:57:28 gaff joins (~gaff@49.207.207.53)
15:57:36 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
15:58:18 <lechner_> Hi, my cabal.project.local specifies "ignore-project: False; compiler: ghc" Do I need it? Thanks!
15:58:39 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
15:59:14 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
16:00:08 × ServerStatsDisco quits (~serversta@2001:470:69fc:105::1a) (Quit: You have been kicked for being idle)
16:00:41 Feuermagier joins (~Feuermagi@user/feuermagier)
16:02:30 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
16:04:25 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 268 seconds)
16:06:11 dyeplexer joins (~dyeplexer@user/dyeplexer)
16:09:02 × _73 quits (~user@pool-108-49-252-36.bstnma.fios.verizon.net) (Remote host closed the connection)
16:12:29 ChanServ sets mode +o litharge
16:12:29 litharge sets mode -bo ralu!*@* litharge
16:15:07 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
16:15:54 <lyxia> How do I use an installed package with standalone invocations of ghc? I tried cabal install --lib first-class-families && ghc -package first-class-families and cabal seems to install things somewhere but ghc tells me it "cannot satisfy -package first-class-families"
16:16:09 <albet70> is there binary package manager for ghc?
16:16:22 Pickchea joins (~private@user/pickchea)
16:16:39 <hpc> albet70: does apt count? :P
16:16:49 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
16:16:50 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
16:17:28 <albet70> apt provide scotty?
16:18:38 <geekosaur> lyxia, you may need to use --package-env (cabal) / -package-env (ghc)
16:18:47 <hpc> maybe?
16:18:52 Feuermagier joins (~Feuermagi@user/feuermagier)
16:19:02 <hpc> https://hackage.haskell.org/package/scotty doesn't list debian, but a few other distros have it packaged
16:19:49 <hpc> is there a reason you can't cabal install it?
16:20:16 <geekosaur> there's no binary package manager because too many things alter abis and ghc is critically dependent on the exact package abi for cross-module inlining
16:20:27 MoC joins (~moc@user/moc)
16:21:11 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 245 seconds)
16:21:15 <albet70> my VPS only has 1GB RAM
16:22:39 <hpc> yeah that'll do it
16:23:00 <lyxia> geekosaur: thanks, that works
16:23:02 <hpc> although, maybe upgrade it?
16:23:10 <lyxia> sounds like something I'm going to forget in a few months
16:23:10 <hpc> 1 gig isn't even enough to install centos anymore
16:23:22 <albet70> 1GB isn't enough to compile scotty
16:23:32 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 252 seconds)
16:23:58 euouae joins (~euouae@user/euouae)
16:24:30 Feuermagier joins (~Feuermagi@user/feuermagier)
16:25:01 <euouae> Hello, I have a question about the reader monad and monads in general. From what I know, a monad is an endofunctor so M : C -> C, and then we have a return with type :: a -> M a. But how does this include the reader monad? https://en.wikipedia.org/wiki/Monad_(functional_programming)#Environment_monad
16:25:21 <euouae> In the reader monad, there are two parameters for return; the value and the environment
16:25:28 <hpc> albet70: build your webapp somewhere else and copy it over maybe?
16:25:48 <hpc> with static linking you won't need scotty's libs on the vps at all
16:26:11 <euouae> I'm noticing that there is the following remark under Notes, https://en.wikipedia.org/wiki/Monad_(functional_programming)#cite_note-4 which says in CT they're called "strong monads" instead?
16:26:22 <euouae> is that the missing link?
16:27:17 <euouae> Because again strong monads seem to involve a single category C and I don't understand how multiple parameters of different types are incorporated into the theory
16:27:24 <lyxia> energizer: return :: a -> M a, if M a = (e -> a) then return :: a -> e -> a
16:27:35 <lyxia> I'm not sure what's the confusion here
16:27:44 <lyxia> euouae: ^
16:28:32 × Feuermagier quits (~Feuermagi@user/feuermagier) (Ping timeout: 240 seconds)
16:28:53 <euouae> Oh, I didn't realize the hom functor is a monad!
16:29:14 <euouae> but later on, with the state monad we have `type State s t = s -> (t, s)`. Isn't `State` the monad?
16:29:32 <lyxia> `State s`
16:29:44 <euouae> So `State s` is the monad?
16:29:54 <lyxia> `State s` is a monad, yes.
16:30:01 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
16:31:05 <euouae> That's because of how constructors curry?
16:31:42 geekosaur joins (~geekosaur@xmonad/geekosaur)
16:31:44 <lyxia> Can you define return :: a -> State s a ? bind :: State s a -> (a -> State s b) -> State s b ? Do they satisfy the monad laws?
16:32:44 <euouae> I'm just not understanding how to see it as M : C -> C. What's the category here?
16:33:12 <lyxia> Still the same category of types and functions
16:33:14 <euouae> If you parametrize State by `s` then I understand that C is Hask, and that's the objects `t` runs over
16:33:41 <euouae> But for `State` it looks more like C x C -> C
16:34:01 <lyxia> That's why I was careful to say `State s`
16:34:33 <euouae> The article states "From the category theory point of view, a state monad is derived from the adjunction between the product functor and the exponential functor, which exists in any cartesian closed category by definition. "
16:34:44 <euouae> Are they talking about `State` or `State s` here?
16:34:48 <lyxia> State s
16:35:21 × Pickchea quits (~private@user/pickchea) (Ping timeout: 245 seconds)
16:35:26 <euouae> " Due to the fact that functions on multiple free variables are common in programming, monads as described in this article are technically what category theorists would call strong monads."
16:35:46 <euouae> Don't they mean `State` is a strong monad (with two parameters s and t)?
16:35:54 <lyxia> It's the adjunction between `(s, ) : Type -> Type` and `(s -> ) : Type -> Type`, using Haskell's partially applied infix notation.
16:36:11 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 245 seconds)
16:36:40 <euouae> ah right. That's what product and exponential means since A -> B = B^A
16:36:55 <lyxia> I think you should skip over any mention of strong monads because that's irrelevant for this question.
16:37:33 <euouae> so when we talk about a monad M t1 t2 ... tn, we really mean that (M t1 t2 ... tn-1) is a monad?
16:38:00 <lyxia> Like, table it for after you can reliably say what "M" is when you look at a new monad.
16:38:32 <lyxia> Yeah that's usually the case
16:38:57 <lyxia> When we say monads in Haskell we usually refer to monads on Hask
16:39:34 <lyxia> That's exacly what the Monad class represents
16:40:03 <albet70> what is Kleisli arrow?
16:40:09 <euouae> got it, thank you lyxia
16:40:11 <lyxia> sometimes monads in other categories are relevant, and hopefully it will be mentioned explicitly, but it's useful being careful regardless
16:40:18 Feuermagier joins (~Feuermagi@user/feuermagier)
16:42:41 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
16:42:59 Feuermagier joins (~Feuermagi@user/feuermagier)
16:45:13 × jtomas quits (~jtomas@153.red-83-53-252.dynamicip.rima-tde.net) (Remote host closed the connection)
16:45:36 jtomas joins (~jtomas@153.red-83-53-252.dynamicip.rima-tde.net)
16:46:21 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
16:47:18 × acode quits (~acode@dslb-092-077-045-168.092.077.pools.vodafone-ip.de) (Quit: Client closed)
16:48:10 Feuermagier joins (~Feuermagi@user/feuermagier)
16:48:39 pavonia joins (~user@user/siracusa)
16:50:30 mc47 joins (~mc47@xmonad/TheMC47)
16:50:30 × Feuermagier quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
16:50:45 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
16:50:45 slowButPresent joins (~slowButPr@user/slowbutpresent)
16:50:46 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
16:50:47 takuan joins (~takuan@178-116-218-225.access.telenet.be)
16:51:54 dyeplexer joins (~dyeplexer@user/dyeplexer)
16:52:02 <monochrom> No, I don't talk about a monad "Maybe X". I talk about a monad "Maybe".
16:52:40 <monochrom> Likewise, I don't talk about a function "f(x)". "f" is the function.
16:54:19 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
16:54:22 <lyxia> I believe in getting people to do more math and they will learn to police their language themselves.
16:55:11 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 250 seconds)
16:55:51 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 250 seconds)
16:56:02 Feuermagier joins (~Feuermagi@user/feuermagier)
16:59:02 <monochrom> No, this is not about policing. And I have had students who have appreciated that my clarifications helped them unstick and move forward.
16:59:46 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
17:00:17 <euouae> monochrom, so you're saying that you'd say that `State s` is a monad, which clarifies what is a monad and what is the parameter.
17:00:28 <monochrom> Yes.
17:02:00 <euouae> unfortunately the paper I'm reading doesn't seem to follow that rule
17:02:48 <euouae> Or, I have not read it as carefully as I should? But I do understand what the convention is now that you mention it
17:03:33 <euouae> for example they call `M` a monad but then explain it is parametrized by some `t`, which I think is similar to `State` being parametrized by `s`
17:06:54 <monochrom> Oh, I say "the State monad" all the time, too. But only when I'm casually and to people who have already known. To beginners, I place consistency at a high priority.
17:08:44 × Jing quits (~hedgehog@2604:a840:3::1013) (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:09:22 <euouae> yeah there's some in-the-know thing going on but I'm trying to break through :P thank you for the help
17:10:24 <lyxia> monochrom: that's a fair point!
17:12:18 econo joins (uid147250@user/econo)
17:13:37 × n3rdy1 quits (~n3rdy1@2601:646:c300:f20:d852:3bde:2197:ddf9) (Ping timeout: 240 seconds)
17:16:31 × nrl^ quits (~nrl@207.5.21.20) (Ping timeout: 256 seconds)
17:20:46 Jing joins (~hedgehog@2604:a840:3::1013)
17:23:11 <euouae> lyxia that statement that (-> e) is a monad was quite tricky actually
17:23:19 <euouae> or sorry, (a ->)
17:29:26 Midjak joins (~Midjak@may53-1-78-226-116-92.fbx.proxad.net)
17:32:04 nrl^ joins (~nrl@207.5.21.20)
17:33:59 _73 joins (~user@pool-108-49-252-36.bstnma.fios.verizon.net)
17:34:50 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 260 seconds)
17:38:49 eflister joins (~eflister@2601:1c0:5501:c150:19dd:dfde:ec02:aa1)
17:39:51 hexology joins (~hexology@user/hexology)
17:42:28 × gaff quits (~gaff@49.207.207.53) (Remote host closed the connection)
17:45:20 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:46:13 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
17:48:25 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
17:49:10 × nrl^ quits (~nrl@207.5.21.20) (Remote host closed the connection)
17:50:39 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 250 seconds)
17:53:09 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
17:53:34 <sirlensalot> Anybody have an idea how to use lens to traverse/fold a rank-2 list to "take" or "drop" from it? E.g., given [[1::Int,2,3],[4,5]], I'd like a `take 4` operation that results in `[[1,2,3],[4]]`
17:54:00 <sirlensalot> I have an operational solution but I was hoping there'd be some IndexedTraversal magic
17:58:26 × mbuf quits (~Shakthi@223.184.115.117) (Quit: Leaving)
17:58:54 <Taneb> I'm not aware of any lensy magic that lets you do that
18:01:27 justsomeguy joins (~justsomeg@user/justsomeguy)
18:01:53 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
18:03:03 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
18:05:38 × Jing quits (~hedgehog@2604:a840:3::1013) (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:07:25 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 240 seconds)
18:09:04 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
18:09:43 <xerox> as for not lensy if you write a take variant that also tells you how much it took it's pretty straightforward
18:10:52 Keriel joins (~Keriel@bras-base-toroon474qw-grc-71-184-145-2-133.dsl.bell.ca)
18:13:06 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
18:14:05 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
18:14:38 × johnw quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
18:17:17 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
18:18:53 lavaman joins (~lavaman@98.38.249.169)
18:19:01 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
18:19:01 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
18:19:01 wroathe joins (~wroathe@user/wroathe)
18:19:45 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
18:22:17 Pickchea joins (~private@user/pickchea)
18:22:54 <Keriel> hi, I'm going through HPPFP at the moment and having trouble with the exercises at the end of ch 10 that want you to write a bunch of point-free folds. a lot of them have been ugly enough I think I'm doing something wrong, e.g. myElemF = flip foldr False . ((||) .) . (==) - but also I don't see how to do filter at all.
18:23:22 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
18:23:25 <Keriel> I wanted to start with something like - flip foldr [] . bool (:) (flip const) . magic - but I need to somehow apply the test function to the list element and still have a copy of the list element to cons if needed, which I don't see how to do.
18:23:57 × sprout quits (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c) (Ping timeout: 240 seconds)
18:26:47 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
18:27:24 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
18:27:24 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
18:27:24 wroathe joins (~wroathe@user/wroathe)
18:30:14 <euouae> Keriel what do you mean by point-free style? So you want filter = expr, with no arguments involved, right?
18:30:45 × dyeplexer quits (~dyeplexer@user/dyeplexer) (Ping timeout: 256 seconds)
18:30:50 × cosimone quits (~user@2001:b07:ae5:db26:c24a:d20:4d91:1e20) (Ping timeout: 260 seconds)
18:31:25 <euouae> wouldn't it be enough to write it pointful and then work from there to make it pointfree?
18:32:16 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
18:33:01 <monochrom> filter will be a direct foldr, rather than a flip foldr.
18:34:15 <monochrom> In this case, the hard part is the pointfree form of what you give to foldr.
18:35:11 <monochrom> In this case, I wouldn't bother.
18:36:39 <monochrom> Some pointfree forms elucidate new perspectives, new structures, new beauty.
18:36:44 <monochrom> This is not one of them.
18:36:59 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
18:39:12 × euouae quits (~euouae@user/euouae) (Quit: )
18:41:16 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
18:43:29 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
18:43:29 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
18:43:29 wroathe joins (~wroathe@user/wroathe)
18:45:48 <justsomeguy> Heh, I guess I did all of those exercises wrong.
18:45:59 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 268 seconds)
18:46:41 × jtomas quits (~jtomas@153.red-83-53-252.dynamicip.rima-tde.net) (Remote host closed the connection)
18:47:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
18:50:05 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
18:50:24 × eflister quits (~eflister@2601:1c0:5501:c150:19dd:dfde:ec02:aa1) (Quit: Client closed)
18:50:59 <Keriel> euouae: yeah. filter = expr, where expr also does not contain any lambdas (the latter being the hard part)
18:51:32 <Keriel> monochrom: hm, not flip? don't you need to flip since you don't know what the function is yet but you know what the base case is? or am I misunderstanding when you use flip? (but if you think it's not worth doing that's reasonable too)
18:52:11 <monochrom> How does flip have to do with base cases?
18:52:36 <tomsmeding> > (\p -> foldr (\x r -> if p x then x : r else r) []) (>3) [1..6]
18:52:38 <lambdabot> [4,5,6]
18:52:39 <monochrom> Every recursion has base cases. Are you saying therefore all recursive functions must use flip?
18:52:52 <tomsmeding> @pl \p -> foldr (\x r -> if p x then x : r else r) []
18:52:52 <lambdabot> flip foldr [] . flip flip id . (ap .) . (`ap` (:)) . (((.) . if') .)
18:53:16 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.4)
18:53:17 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:53:28 <Keriel> I'm not sure what ap is?
18:53:37 <tomsmeding> Good :p
18:54:02 <tomsmeding> It's <*>, but that knowledge is probably not helpful to you
18:54:18 <tomsmeding> Are you very sure they're asking to make filter without any lambdas anywhere?
18:54:33 × Pickchea quits (~private@user/pickchea) (Ping timeout: 256 seconds)
18:54:37 <tomsmeding> Because that's, well, that, and that is as monochrom not giving any insight
18:54:41 <Keriel> only in that someone elsewhere told me to use <*> earlier, so now I know I've gotten the same suggestion twice :P
18:55:09 sprout joins (~quassel@2a02:a467:ccd6:1:9ce9:17f7:15aa:852c)
18:55:24 <Keriel> the example at the start of the exercise set starts with the comment "-- fold, both myAnd and the folding function are point-free now"
18:55:27 <EvanR> if you're trying to "golf" your arguments down to zero <*> is one of those things that can contribute
18:55:40 <Keriel> which I think makes it clear they don't want me to use lambdas in the folding function
18:55:47 <tomsmeding> Ah right
18:55:54 <EvanR> (f <*> g) x = f x (g x)
18:55:57 <Keriel> but it might be one of those exercise where they want you to realize you can't do it with the tools you have and move on
18:56:05 <EvanR> (for instance)
18:56:08 <tomsmeding> So you want 'filter p = foldr _ []' for some _
18:56:27 <tomsmeding> The above was 'filter = _'
18:56:28 <Keriel> well, that's not pointfree , right?
18:56:29 <EvanR> wait that's monads
18:57:21 <tomsmeding> Keriel: ... I guess, indeed
18:57:58 <tomsmeding> I mean, you're going to need a conditional somehow: you need to call the predicate on list elements to decide whether to include the element or not
18:58:13 <tomsmeding> And Prelude doesn't have a pointfree conditional
18:58:18 <monochrom> Some of us accept "map f = foldr ..." as pointfree. It is good enough to get rid of "xs".
18:58:34 <Keriel> they've shown us bool in an earlier chapter so I was using that
18:58:40 <tomsmeding> Lambdabot sneakily used if', assuming that's defined as if' a b c = if a then b else c
18:58:46 <tomsmeding> Ah yeah that's bool
18:58:49 eflister joins (~eflister@2601:1c0:5501:c150:e86d:7316:8592:8dd3)
18:59:08 <tomsmeding> I have a suspicion that the book had monochrom's version in mind
18:59:10 <Keriel> also, monochrom: the reason I thought you had to use flip foldr was just that you know what the second argument to foldr will be - [] - before taking any of the arguments to filter, but not the first one?
18:59:28 <Keriel> but yeah. it seems like there isn't a real solution with what they've shown me so I should try to write it as filter f = ...
18:59:34 <lechner_> Hi, why does this module explicty import Prelude, please? https://github.com/nikita-volkov/hasql#short-example
18:59:36 <tomsmeding> Keriel: the @pl output started with 'flip foldr []' for precisely that reason
18:59:51 ProfSimm joins (~ProfSimm@87.227.196.109)
19:00:09 <tomsmeding> @pl \x r -> if p x then x : r else r
19:00:09 <lambdabot> join . ap ((.) . if' . p) (:)
19:00:13 <tomsmeding> Meh
19:00:27 <Keriel> right, I've been doing flip foldr for a lot of these, I was replying to monochrom asking what flip has to do with base cases
19:00:37 <tomsmeding> :t flip
19:00:38 <lambdabot> (a -> b -> c) -> b -> a -> c
19:00:50 <tomsmeding> Flip just flips the arguments of a function
19:00:51 <monochrom> Generally when an argument is mentioned twice, it's already a nightmare. Here we have two arguments, both mentioned twice.
19:01:02 <Keriel> yeah I'm... not even immediately sure if I can do filter f = ...
19:01:36 <Keriel> they also want maximumBy and minimumBy which seem impossible for the same reason
19:02:01 <monochrom> I think those are easier and nicer.
19:02:04 <tomsmeding> :t let bool a b c = if a then b else c in \p -> foldr (join . ap ((.) . bool . p) (:)) -- this is the @pl output, but it's completely unreadable
19:02:05 <lambdabot> Foldable t => (a -> Bool) -> [a] -> t a -> [a]
19:02:35 <Keriel> I'll take a look at those then. are you thinking of maximumBy = _ or maximumBy f = _?
19:02:45 <monochrom> Yes.
19:03:11 <monochrom> Err, "maximumBy f = _".
19:03:32 <Keriel> hmm I guess I have to use head here?
19:04:10 <Keriel> or at least, I don't think the book has introduced foldr1 so I'm probably not meant to use it
19:04:12 <monochrom> Consider foldl1 or foldr1.
19:04:27 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:05:09 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
19:05:36 jpds joins (~jpds@gateway/tor-sasl/jpds)
19:08:44 <Keriel> well. the normal version would be myMaximumBy f = foldr1 (\x y -> bool y x (f x y == GT)) - also using foldr1 because yeah I can't see how to do it without that or ugly head stuff
19:09:34 <Keriel> but this seems to need something like the ap stuff being discussed above? I can do 'flip bool' to get the correct 'conditional', but then I no longer have x and y left to use for the comparison test. if that makes sense.
19:09:45 Erutuon joins (~Erutuon@user/erutuon)
19:10:40 <monochrom> Ah, that's difficult, yeah.
19:11:04 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
19:11:49 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
19:12:11 <Keriel> I think I'm just going to assume I'm supposed to treat these as impossible to write pointfree and come back to it when I learn more tools
19:12:26 <Keriel> thanks for the help though ^^
19:15:49 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:18:53 <lechner_> Hi, in a pinch is there a way, please, to makel libraries accessible to runhaskell without a local cabal file?
19:19:37 <lechner_> cabal install hasql says " Cannot build the executables"
19:19:51 <monochrom> No, but we know ways of "cabal run" and "cabal repl"
19:21:28 × drewolson quits (~drewolson@user/drewolson) (Quit: The Lounge - https://thelounge.chat)
19:21:39 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
19:22:00 <lechner_> should i use cabal repl instead?
19:22:04 drewolson joins (~drewolson@user/drewolson)
19:22:14 <EvanR> if you really can't figure out how to write something point free, consider how anyone's supposed to read it later xD
19:22:20 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
19:22:36 <monochrom> I read it by putting the points back.
19:23:08 <monochrom> I mean in the ugly cases, of course.
19:23:11 × deadmarshal quits (~deadmarsh@95.38.119.182) (Ping timeout: 250 seconds)
19:23:21 zincy_ joins (~zincy@host86-151-99-97.range86-151.btcentralplus.com)
19:23:46 <EvanR> a combination of bool and (==GT) is screaming case analysis to me
19:24:13 <monochrom> "interact (unlines . map (show . solve . read) . lines)" is best read without putting the points back. It's a nice one.
19:24:56 × drewolson quits (~drewolson@user/drewolson) (Client Quit)
19:25:05 drewolson joins (~drewolson@user/drewolson)
19:25:27 × max22- quits (~maxime@2a01cb0883359800a99596770101e95e.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
19:26:37 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
19:26:43 <EvanR> \x y -> case f x y of GT -> y; _ -> x
19:27:14 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
19:27:25 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
19:29:59 Erutuon joins (~Erutuon@user/erutuon)
19:30:07 <lechner_> Hi, rel8 requires base ^>=4.14 but Debian's ghc 8.8.4 only comes with base 4.13 (constraint from non-upgradeable package requires installed instance). can i upgrade ghc via cabal, too?
19:32:09 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
19:32:18 × coolnickname quits (uid531864@user/coolnickname) (Quit: Connection closed for inactivity)
19:32:43 <c_wraith> lechner_: you're best off completely uninstalling debian's ghc distribution and using ghcup to manage your installed ghc versions
19:34:00 Sgeo joins (~Sgeo@user/sgeo)
19:34:52 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
19:35:13 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
19:36:15 <lechner_> c_wraith: thanks!
19:37:18 otherwise joins (~otherwise@2601:602:880:90f0:4406:752c:ba78:a481)
19:48:23 califax joins (~califax@user/califx)
19:51:07 kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
19:53:23 JimL joins (~quassel@89-162-2-132.fiber.signal.no)
19:54:59 justsomeguy joins (~justsomeg@user/justsomeguy)
19:54:59 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.4)
19:55:15 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
19:58:41 × shapr quits (~user@pool-108-28-144-11.washdc.fios.verizon.net) (Ping timeout: 245 seconds)
19:59:47 max22- joins (~maxime@2a01cb0883359800767a96b77d5018f7.ipv6.abo.wanadoo.fr)
20:00:20 xb0o2 joins (~xb0o2@user/xb0o2)
20:06:45 juhp joins (~juhp@128.106.188.82)
20:06:57 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
20:08:04 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
20:08:32 coot joins (~coot@89-64-85-93.dynamic.chello.pl)
20:09:55 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
20:10:33 × zincy_ quits (~zincy@host86-151-99-97.range86-151.btcentralplus.com) (Remote host closed the connection)
20:10:35 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
20:10:35 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
20:10:35 wroathe joins (~wroathe@user/wroathe)
20:18:08 simendsjo joins (~user@host.62.119.30.141.bitcom.se)
20:20:07 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
20:20:55 × otherwise quits (~otherwise@2601:602:880:90f0:4406:752c:ba78:a481) (Remote host closed the connection)
20:23:28 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
20:23:28 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
20:23:28 wroathe joins (~wroathe@user/wroathe)
20:24:44 <lechner_> Hi, is it possible, in hasql, to use a more general connection string (for pg_service) or do i have to specify all the parameters with this separately? I can't figure out how to turn a strict bytestring into the "type Settings = ByteString" declared here https://hackage.haskell.org/package/hasql-1.4.5.3/docs/Hasql-Connection.html
20:26:57 × simendsjo quits (~user@host.62.119.30.141.bitcom.se) (Remote host closed the connection)
20:27:57 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
20:28:18 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:29:09 Pickchea joins (~private@user/pickchea)
20:30:17 simendsjo joins (~user@host.62.119.30.141.bitcom.se)
20:30:37 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
20:30:37 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
20:30:37 wroathe joins (~wroathe@user/wroathe)
20:32:01 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:32:06 <lechner_> never mind, it worked!
20:33:34 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:33:55 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Remote host closed the connection)
20:35:29 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:35:44 nschoe joins (~quassel@2a01:e0a:8e:a190:9f8d:fdc0:8a25:3c46)
20:35:44 × nschoe quits (~quassel@2a01:e0a:8e:a190:9f8d:fdc0:8a25:3c46) (Client Quit)
20:35:52 cosimone joins (~user@93-34-132-88.ip49.fastwebnet.it)
20:35:54 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:37:30 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:37:56 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:39:32 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:39:58 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:41:33 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:41:59 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:42:04 euouae joins (~euouae@user/euouae)
20:42:09 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.3)
20:42:19 <euouae> Hello, what part of the monad definition makes monads appropriate for effectful computations?
20:43:09 <int-e> :t (>>=)
20:43:09 <lambdabot> Monad m => m a -> (a -> m b) -> m b
20:43:32 <euouae> is it the associativity of the join operator?
20:43:34 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:43:45 <euouae> is join "running" the effects?
20:44:00 <int-e> this gives a nice way of sequencing effects one after another (where "sequencing" is really more syntactical than about the actual effects)
20:44:01 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:44:07 <int-e> @src (>>=)
20:44:07 <lambdabot> Source not found. I am sorry.
20:44:14 <int-e> (just checking)
20:44:16 <Rembane> The runtime system takes care of executing the effects in IO.
20:44:22 <Rembane> IIRC
20:44:24 <euouae> How do you read that type and understand sequencing?
20:44:38 <euouae> what is an effect?
20:44:51 <int-e> :t join -- yes, join also sequences two effects; f >>= g = join (g <$> f) after all
20:44:52 <lambdabot> Monad m => m (m a) -> m a
20:45:01 <euouae> I guess `a -> m b` is a computation with an effect, right?
20:45:18 <int-e> what kind of "effect" you have depends on the monad
20:45:21 <Rembane> It doesn't have to. Take a look at Data.Maybe.
20:45:22 <euouae> and we already have an effect `m a`, so we can continue the chain of computation.
20:45:35 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:45:47 <euouae> Rembane Oh yes, I do understand that. I'm just trying to understand that 1) a functor 2) the coherence laws -- why is /that/ the right tool for effects
20:46:00 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:46:11 <int-e> IO is basically the only one with a *real* effect (launching missiles etc)
20:47:15 <dsal> You can think of ST as closer to State than IO and have a similar mental model. Might be a good bridge.
20:47:35 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:47:50 <dsal> IO has no constrained effects, where State allows you to make arbitrary changes to a specific value. The ordering of those effects is important.
20:47:52 <monochrom> Mathematicians study monads in terms of join. But join is not very relatable to programmers. >>= is most relatable, Kleisli arrow is not bad either.
20:48:01 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:48:03 × simendsjo quits (~user@host.62.119.30.141.bitcom.se) (Remote host closed the connection)
20:48:27 <int-e> euouae: monads weren't made for effects... I think people studying effects noticed that they have a monadic structure.
20:49:13 <int-e> euouae: Which makes that kind of question fruitless (at least to my mind) because it's putting the cart before the horse.
20:49:34 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:49:48 <euouae> perhaps my confusion is as to what is a formal definition for an effect
20:49:59 <monochrom> Heh we have none.
20:50:00 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:50:32 × nhatanh02 quits (~satori@123.24.172.30) (Ping timeout: 240 seconds)
20:50:49 <euouae> see, if I were any less wiser, I'd still be confused. But nay, I am now not confused anymore!
20:51:11 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:51:35 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:51:50 <monochrom> BTW I know of a philosopher who opposes having a rigorous definition of "life" for its potential in stagnating biology. Part of the fun of biology is to leave it open so you can always challenge or expand the scope.
20:52:00 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:52:17 × kjak quits (~kjak@pool-108-45-56-21.washdc.fios.verizon.net) (Ping timeout: 240 seconds)
20:52:19 <Rembane> euouae: here, have loads of examples: https://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf
20:52:21 <monochrom> And so I think it is a good thing we don't draw a hard line around "effect" either.
20:53:16 <euouae> Rembane nice, thank you!
20:53:21 <Rembane> euouae: No worries. :)
20:53:36 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:53:55 <int-e> > [1,2,3] >>= \x -> [x..x*2] -- exercise, or possibly a topic for debate: what's the effect here?
20:53:57 <lambdabot> [1,2,2,3,4,3,4,5,6]
20:54:03 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:54:10 <Rembane> monochrom: OTOH, we can draw a fuzzy line around the effect idea and put the data type IO on it.
20:54:25 <int-e> (the stock answer is "nondeterminism")
20:54:35 <EvanR> euouae, you go through many examples of effects and then maybe or maybe not you know what an effect is
20:55:07 <monochrom> Well yeah same for "data structure". We do have a consensus on a larger class of examples and a large class of counterexamples for both.
20:55:25 <monochrom> Same for "car", really.
20:55:36 <EvanR> examples often given first, modifying a state in a stateful computation, using an RNG (same thing really), throwing an exception to stop a computation early, outputting to a log during the computation
20:55:38 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:55:43 <int-e> monochrom: contents of address register?
20:55:52 <monochrom> haha
20:55:59 <monochrom> That's a data structure!
20:56:08 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:56:30 <dsal> Is "Reader monad" considered related to effects? That makes things blurry for me.
20:56:41 <EvanR> later on people start messing with you calling "non-termination" an effect, also CPS
20:57:42 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
20:57:58 <int-e> dsal: it's the effect of living in an unchanging environment (or maybe a museum: you can look, but not touch)
20:58:07 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
20:58:14 <int-e> (I'm not very serious about this)
20:58:18 <EvanR> that doesn't seem like a proper effect xD
20:58:25 <EvanR> it's a lack of effect
20:58:39 <Rembane> You can change it, but only one monter at the time, and when you leave scope it is restored.
20:58:57 <monochrom> If the answer depends on a hidden datum, that is a little bit effectful.
20:58:57 <EvanR> that's a weird feature of Reader specifically
20:59:33 <int-e> reader is fairly useless... except that it allows you to use generic monadic functions; it's a bit more useful as a transformer
20:59:41 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:00:05 <monochrom> :(
21:00:12 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:00:23 <monochrom> The hom functor is used all over the place!
21:00:24 <int-e> (but again for interacting well with monadic library interfaces, not for having an actual effect)
21:00:33 <monochrom> OK, but only as a functor, seldom as a monad.
21:01:05 <int-e> monochrom: that sounds suspiciously like category theory :P
21:01:40 <Rembane> When is Reader useful and why? I haven't run into a use for it yet so the question is honest.
21:01:47 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:02:13 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:02:25 <euouae> code security?
21:02:29 simendsjo joins (~user@host.62.119.30.141.bitcom.se)
21:02:45 nhatanh02 joins (~satori@123.24.172.30)
21:02:53 <euouae> if the type is Reader as opposed to Writer you know what the priviledges are just by looking at the type, useful for code review
21:03:08 <euouae> in some scenario, I could imagine that being helpful I suppose
21:03:46 <monochrom> The Yoneda lemma states that (∀x. Reader E -> F x) is in bijection with F E, and the bijection is natural in both E and F.
21:03:47 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:04:06 <monochrom> err, (∀x. Reader E x -> F x)
21:04:15 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:04:39 <monochrom> Aka the collection of natural transformations from Reader E to F.
21:04:48 kjak joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
21:05:30 <EvanR> euouae, that would be true if local wasn't in the Reader API
21:05:47 <EvanR> so it's basically the same as using a function argument
21:05:47 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:06:11 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:06:14 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:06:33 <EvanR> so is ReaderT
21:07:02 <int-e> The practical utility I've gotten out of ReaderT (the transformer) is that when I write code in mtl style... so newtype App a = App { runApp: WriterT w IO a } deriving (Monad) and then realize that I need to carry a configuration as well (from command line options), then I can add a ReaderT Config into the stack and most of the existing code that doesn't care about the configuration will...
21:07:08 <int-e> ...continue to work.
21:07:49 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:07:54 × simendsjo quits (~user@host.62.119.30.141.bitcom.se) (Remote host closed the connection)
21:08:15 <EvanR> if the code is already monadic style yeah
21:08:17 kjak_ joins (~kjak@pool-108-45-56-21.washdc.fios.verizon.net)
21:08:19 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:08:26 <EvanR> er, do notation
21:08:40 <Rembane> int-e: That's very useful. I'm usually using StateT for that, but I'm not coding Haskell in a hm... production setting so I can change things very carelessly.
21:08:43 <int-e> EvanR: yeah. also having that newtype is quite important
21:08:55 <int-e> because that's how you abstract from the inner stack
21:09:33 <int-e> Which is why I wrote "mtl style"; it's really a particular coding style and you only benefit from ReaderT in this way when you're using it.
21:09:54 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:10:00 op_4 parts (~op_4@user/op-4/x-9116473) (leaving)
21:10:12 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
21:10:17 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:10:28 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:11:44 <int-e> @pl \f g x -> f x (g x)
21:11:44 <lambdabot> ap
21:11:53 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:12:02 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
21:12:10 <int-e> there's also this pointless use of the (->) r reader monad
21:12:21 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:12:35 <int-e> Which I guess monochrom meant earlier. It's occasionally useful.
21:12:50 <int-e> > sequence [succ, pred] 1
21:12:52 <lambdabot> [2,0]
21:12:57 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
21:13:04 <int-e> > map ($ 1) [succ, pred]
21:13:05 <lambdabot> [2,0]
21:13:56 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:14:22 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:15:05 yauhsien joins (~yauhsien@61-231-19-17.dynamic-ip.hinet.net)
21:15:48 <Rembane> int-e: That's neat!
21:15:58 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:16:23 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:18:00 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:18:04 <monochrom> Functor-Man: Hom Functing. Functor-Man: Far from Hom. Functor-Man: No Way Hom.
21:18:11 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
21:18:25 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:20:00 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:20:11 × yauhsien quits (~yauhsien@61-231-19-17.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
21:20:17 × ymherklotz quits (~ymherklot@139.59.166.119) (Ping timeout: 240 seconds)
21:20:27 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:22:02 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:22:24 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:23:59 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:24:12 falafel joins (~falafel@2603-8000-d800-688c-6db4-c125-f693-41cb.res6.spectrum.com)
21:24:26 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:24:42 falafel_ joins (~falafel@2603-8000-d800-688c-587d-3efc-bc6e-2970.res6.spectrum.com)
21:25:36 <EvanR> is venom somehow contravariant functor man
21:26:02 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:26:26 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:26:43 <monochrom> :)
21:27:21 acidjnk joins (~acidjnk@pd9e0bdc0.dip0.t-ipconnect.de)
21:27:21 acidjnk_new joins (~acidjnk@pd9e0bdc0.dip0.t-ipconnect.de)
21:28:01 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:28:17 × falafel quits (~falafel@2603-8000-d800-688c-6db4-c125-f693-41cb.res6.spectrum.com) (Ping timeout: 240 seconds)
21:28:28 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:29:01 × Erutuon quits (~Erutuon@user/erutuon) (Ping timeout: 240 seconds)
21:30:04 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:30:30 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:31:17 × MoC quits (~moc@user/moc) (Quit: Konversation terminated!)
21:32:07 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:32:32 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:34:06 <lechner_> c_wraith: i built ghc for 8.10.7 for Debian bullseye and could make it available, if anyone needs it
21:34:07 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:34:33 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:36:09 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:36:34 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:37:17 × falafel_ quits (~falafel@2603-8000-d800-688c-587d-3efc-bc6e-2970.res6.spectrum.com) (Ping timeout: 240 seconds)
21:38:08 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:38:13 <lechner_> Hi, why does cabal force me to bump a prerequisite declaration on base to the installed version 4.14, please? What does the 'greater than' mean? http://paste.debian.net/1225513/
21:38:33 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:39:41 × euouae quits (~euouae@user/euouae) (Quit: )
21:40:08 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:40:17 <sclv> lechner_: the package you're trying to build has declared that it requires base ^>= 4.13.0.0
21:40:34 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:40:42 <sclv> the carrot greater eaql means it requires base be somewhere between 4.13 and 4.14 but no higher
21:40:53 <lechner_> i see!
21:41:06 <lechner_> it always helps to know the docs
21:41:20 <lechner_> sorry i am a newbie, and hyperctive too
21:42:10 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:42:36 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:44:10 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:44:17 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
21:44:30 <lechner_> sclv: sometimes i also forget to say, thank you!
21:44:34 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:44:54 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
21:45:05 <sclv> no prob
21:46:06 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:46:39 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:47:19 falafel_ joins (~falafel@2603-8000-d800-688c-587d-3efc-bc6e-2970.res6.spectrum.com)
21:48:05 falafel__ joins (~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com)
21:48:14 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:48:44 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:50:19 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:50:51 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:51:49 × falafel_ quits (~falafel@2603-8000-d800-688c-587d-3efc-bc6e-2970.res6.spectrum.com) (Ping timeout: 240 seconds)
21:52:24 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:52:26 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
21:52:43 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
21:52:43 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
21:52:43 wroathe joins (~wroathe@user/wroathe)
21:52:52 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:54:27 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:54:54 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:55:57 × x88x88x quits (~x88x88x@149.28.53.172) (Remote host closed the connection)
21:56:28 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:56:43 x88x88x joins (~x88x88x@2001:19f0:5:39a8:5400:3ff:feb6:73cb)
21:56:52 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
21:57:01 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds)
21:58:25 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
21:58:51 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:00:26 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:00:53 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:02:28 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:02:55 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:04:30 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:04:56 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:05:18 deadmarshal joins (~deadmarsh@95.38.115.228)
22:05:46 lavaman joins (~lavaman@98.38.249.169)
22:06:31 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:06:56 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:08:32 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:09:02 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:09:37 × deadmarshal quits (~deadmarsh@95.38.115.228) (Ping timeout: 240 seconds)
22:10:37 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:11:08 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:11:57 mc47 joins (~mc47@xmonad/TheMC47)
22:12:30 jgeerds joins (~jgeerds@55d4ac73.access.ecotel.net)
22:12:41 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:12:53 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
22:13:07 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:14:41 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:15:10 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:16:43 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:17:10 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:18:43 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:19:11 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:20:17 × falafel__ quits (~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com) (Remote host closed the connection)
22:20:32 falafel__ joins (~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com)
22:20:46 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:21:11 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:22:46 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:23:12 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:24:47 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:25:12 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:25:30 × werneta_ quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 268 seconds)
22:26:48 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:26:53 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
22:27:15 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:27:17 × pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-48-67-70-102-17.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
22:28:50 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:29:21 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:30:57 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:31:01 × zer0bitz quits (~zer0bitz@196.244.192.57) (Ping timeout: 256 seconds)
22:31:23 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:32:57 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:33:24 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:33:25 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
22:34:10 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:34:58 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:35:29 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:35:32 × falafel__ quits (~falafel@2603-8000-d800-688c-c064-54e6-9a05-e359.res6.spectrum.com) (Ping timeout: 240 seconds)
22:37:04 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:37:34 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:38:01 pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-48-67-70-102-17.dsl.bell.ca)
22:38:11 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
22:39:09 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:39:36 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:41:12 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:41:41 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:42:01 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
22:43:15 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:43:42 geekosaur joins (~geekosaur@xmonad/geekosaur)
22:43:46 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:45:23 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:45:49 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:47:26 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:47:53 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:48:20 × nhatanh02 quits (~satori@123.24.172.30) (Ping timeout: 268 seconds)
22:49:27 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:49:56 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:51:30 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:51:53 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:52:18 benin joins (~benin@183.82.178.161)
22:53:29 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:53:55 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:55:29 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:55:55 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:57:29 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:57:56 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
22:59:31 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
22:59:57 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:01:33 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:01:58 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:03:32 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:03:55 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Remote host closed the connection)
23:04:12 lavaman joins (~lavaman@98.38.249.169)
23:04:16 ss4 joins (~wootehfoo@user/wootehfoot)
23:05:31 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:05:59 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:05:59 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
23:05:59 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
23:05:59 finn_elija is now known as FinnElija
23:06:02 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 240 seconds)
23:06:43 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
23:07:34 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:07:59 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:08:17 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
23:09:11 × coot quits (~coot@89-64-85-93.dynamic.chello.pl) (Quit: coot)
23:09:35 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:10:01 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:10:40 × ss4 quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
23:11:38 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:11:47 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:12:03 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:12:08 × ankhers quits (e99e97ef8e@2604:bf00:561:2000::2a2) (Remote host closed the connection)
23:12:18 ankhers joins (e99e97ef8e@2604:bf00:561:2000::2a2)
23:13:29 ankhers is now known as Ankhers
23:13:36 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:13:43 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
23:13:43 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
23:13:43 wroathe joins (~wroathe@user/wroathe)
23:14:00 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:14:53 Erutuon joins (~Erutuon@user/erutuon)
23:15:22 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
23:15:35 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:16:01 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:17:36 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:18:02 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:18:17 kitzman joins (~kitzman@user/dekenevs)
23:19:40 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:20:05 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:20:13 × doyougnu quits (~doyougnu@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 250 seconds)
23:20:29 <kitzman> new haskeller here, mainly for giggles; what i'm currently trying to achieve: create a sum type, and a "class C a", and then create instances for each member of the sum type. however - I don't think A "S = A | B" is considered a type.. or is it?
23:21:35 <geekosaur> if you mean `data S = A | B`, S is a type and A and B are (data) constructors
23:21:42 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:21:49 <geekosaur> not so different form `data Bool = False | True`
23:21:53 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
23:22:08 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:22:34 <kitzman> I see, so I have to create separate types.
23:22:34 <geekosaur> I would alos question why you want a typeclass, but we'll address that when we get to it
23:22:50 × cheater quits (~Username@user/cheater) (Remote host closed the connection)
23:23:41 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:23:53 <kitzman> hmm, I'm thinking of creating, for example a "HealthService", which would have instances for each libvirt provider (qemu, xen, etc).
23:24:08 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:24:09 <kitzman> i think it might be the wrong way to approach the problem, though
23:25:07 <kitzman> (i.e: "instance HealthService QemuProvider etc")
23:25:14 <geekosaur> that's not generally how we do things in Haskell
23:25:24 retroid_ joins (~retro@05412d78.skybroadband.com)
23:25:44 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:25:49 <geekosaur> more likely it'd be data HealthService = Qemu whatever | Xen whatever | ...
23:26:15 <geekosaur> typeclasses are used when you have conceptually similar operations that do different things on different types
23:26:15 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:26:55 × _73 quits (~user@pool-108-49-252-36.bstnma.fios.verizon.net) (Quit: ERC (IRC client for Emacs 27.2))
23:27:09 <geekosaur> so for example we have `Functor`, which provides an operation `fmap`. What this actually does depends on the instance, but it is always conceptually mapping some operation over that type
23:27:50 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:28:10 <geekosaur> for lists, fmap is map. for Maybe, if the value is Just something then fmap applies the operation to something and wraps it in another Just; it does nothing for Nothing
23:28:13 <geekosaur> and so on
23:28:17 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:29:01 × retro_ quits (~retro@05412d78.skybroadband.com) (Ping timeout: 268 seconds)
23:29:37 <geekosaur> there are times when this is appropriate for what you're describing, but usually they're not similar enough and when they are a simple record of functions is often preferable
23:29:52 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:29:55 <geekosaur> (typeclasses are not OOP classes, in short)
23:29:57 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 256 seconds)
23:30:19 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:30:55 AlexNoo_ joins (~AlexNoo@94.233.241.107)
23:31:55 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:31:58 <kitzman> alright, i understand. i'll play a bit more with it. currently thinking of cases in which typeclasses would be more appropriate (so then I know when and when not to use them)
23:32:24 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:32:26 <geekosaur> take a look at https://wiki.haskell.org/Typeclassopedia
23:32:43 × Alex_test quits (~al_test@94.233.241.181) (Ping timeout: 268 seconds)
23:33:09 <geekosaur> it shows what the basic Haskell libraries do with typeclasses, which is a pretty good indication of what they're good for
23:33:10 <kitzman> i could have for example "class Persistable a" and then depending on a, choose how I can persist things
23:33:16 cheater joins (~Username@user/cheater)
23:33:16 <kitzman> nice, thank you
23:33:25 <kitzman> (couldn't come up with a better example yet)
23:33:42 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
23:33:55 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:34:17 × AlexNoo quits (~AlexNoo@94.233.241.181) (Ping timeout: 240 seconds)
23:34:27 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:34:29 × AlexZenon quits (~alzenon@94.233.241.181) (Ping timeout: 256 seconds)
23:36:02 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:36:28 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:37:40 wroathe joins (~wroathe@206-55-188-8.fttp.usinternet.com)
23:37:40 × wroathe quits (~wroathe@206-55-188-8.fttp.usinternet.com) (Changing host)
23:37:40 wroathe joins (~wroathe@user/wroathe)
23:38:04 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:38:24 Alex_test joins (~al_test@94.233.241.107)
23:38:26 AlexZenon joins (~alzenon@94.233.241.107)
23:38:29 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:39:53 lavaman joins (~lavaman@98.38.249.169)
23:40:02 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:40:38 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:41:46 × max22- quits (~maxime@2a01cb0883359800767a96b77d5018f7.ipv6.abo.wanadoo.fr) (Remote host closed the connection)
23:42:13 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:42:38 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:43:57 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 240 seconds)
23:44:13 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:44:39 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:46:16 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:46:42 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:48:17 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:48:44 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:48:47 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:49:49 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:50:19 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:50:44 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:52:17 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:52:43 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:54:18 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:54:48 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:56:24 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:56:52 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:58:27 betelgeuse9 joins (~betelgeus@94-225-47-8.access.telenet.be)
23:58:42 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
23:58:51 × betelgeuse9 quits (~betelgeus@94-225-47-8.access.telenet.be) (Read error: Connection reset by peer)
23:59:05 <EvanR> kitzman, what's the API for Persistable, curious

All times are in UTC on 2022-01-01.