Home liberachat/#haskell: Logs Calendar

Logs on 2021-09-18 (liberachat/#haskell)

00:04:23 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
00:04:40 <lechner> Hi, I find postgresql-simple awkward. Should I look at opaleye instead? Also, can rel8 already handle some light production use to power a simple website? Thanks!
00:04:54 <lechner> Or Beam?
00:07:11 hololeap joins (~hololeap@user/hololeap)
00:08:51 thyriaen joins (~thyriaen@dynamic-089-012-047-178.89.12.pool.telefonica.de)
00:11:10 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
00:11:32 hololeap_ joins (~hololeap@user/hololeap)
00:14:33 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
00:16:02 × ph88 quits (~ph88@ip5f5af6fd.dynamic.kabel-deutschland.de) (Read error: Connection reset by peer)
00:16:17 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Ping timeout: 245 seconds)
00:18:31 juhp joins (~juhp@bb220-255-143-175.singnet.com.sg)
00:20:47 × fendor_ quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection)
00:21:10 cheater joins (~Username@user/cheater)
00:21:32 fendor_ joins (~fendor@78-2-181-45.adsl.net.t-com.hr)
00:21:57 × Ram-Z quits (Ram-Z@2a01:7e01::f03c:91ff:fe57:d2df) (Ping timeout: 268 seconds)
00:24:26 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:24:56 Ram-Z joins (~Ram-Z@li1814-254.members.linode.com)
00:31:02 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
00:35:49 × proofofkeags_ quits (~proofofke@205.209.28.54) (Ping timeout: 252 seconds)
00:45:27 × tommd quits (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 245 seconds)
00:50:18 <sclv> they're all good choices and well supported afaik
00:50:29 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
00:57:43 × Gurkenglas quits (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) (Ping timeout: 268 seconds)
00:58:23 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
00:58:44 geekosaur joins (~geekosaur@xmonad/geekosaur)
00:58:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
01:00:04 <Cale> I find opaleye quite a lot more awkward than postgresql-simple, just because of the way that all the records are parametric in all the actual types of the fields. But yeah, check out Beam if you want something a little higher level for creating the SQL syntax.
01:01:40 <Cale> (to be fair though, it's been a *long* time since I last checked out opaleye, so I wouldn't know if it had changed in that regard)
01:02:47 × fendor_ quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Remote host closed the connection)
01:03:40 <Cale> Beam though kind of surprised me when I went to look at how it was implemented. It's like the astronaut gun meme "It's all ByteString manipulation? Always has been."
01:03:42 fendor joins (~fendor@78-2-181-45.adsl.net.t-com.hr)
01:04:54 × chexum quits (~quassel@gateway/tor-sasl/chexum) (Remote host closed the connection)
01:05:12 chexum joins (~quassel@gateway/tor-sasl/chexum)
01:05:12 <Cale> (Since it went to so much trouble to formalise all the SQL syntax so meticulously, I'd kind of expected that it'd go via a syntax tree, but that's optional.)
01:07:15 <Cale> The meticulousness of how it breaks everything down by which SQL standard introduced things can also make the library a little awkward to navigate, and can induce some pretty hairy constraints on your types.
01:12:16 × xff0x quits (~xff0x@2001:1a81:52ad:c900:b704:3c1b:6bea:6e62) (Ping timeout: 252 seconds)
01:13:56 xff0x joins (~xff0x@2001:1a81:52ed:4100:e126:e3d0:8698:438)
01:17:56 × epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
01:22:16 × juhp quits (~juhp@bb220-255-143-175.singnet.com.sg) (Ping timeout: 265 seconds)
01:24:49 <lechner> Cale sclv: Thanks so much!
01:27:15 neurocyte01 joins (~neurocyte@45.93.111.147)
01:27:15 × neurocyte01 quits (~neurocyte@45.93.111.147) (Changing host)
01:27:15 neurocyte01 joins (~neurocyte@user/neurocyte)
01:29:47 × neurocyte0 quits (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
01:29:47 neurocyte01 is now known as neurocyte0
01:31:01 harveypwca joins (~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26)
01:32:25 × waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 265 seconds)
01:36:39 fendor_ joins (~fendor@78-0-98-118.adsl.net.t-com.hr)
01:39:39 × fendor quits (~fendor@78-2-181-45.adsl.net.t-com.hr) (Ping timeout: 268 seconds)
01:39:41 × hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
01:41:23 <lechner> Does rel8 return true JOINs from the database due to lezy eval, or does it really match the values in Haskell? https://rel8.readthedocs.io/en/latest/tutorial.html#joins
01:41:31 <lechner> lazy
01:44:47 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
01:51:21 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
01:56:05 × acidjnk quits (~acidjnk@p200300d0c703cb83089449f0c9186ff3.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
01:57:15 <cdsmith> I feel like this ought to be obvious, but... is there any way to declare an open kind, which is not Type, but people can later define their own types with that Kind in separate modules?
01:57:54 <awpr> cdsmith: I've wanted this before and haven't managed to come up with anything
01:58:09 <cdsmith> So just abuse Type for it?
01:58:38 <awpr> that, or Symbol (with the associated risk of name collisions because it becomes effectively a global namespace)
01:59:17 awpr wonders about promoting a GADT containing a Typeable dictionary
01:59:26 <ProofTechnique> lechner: https://github.com/circuithub/rel8/blob/4cb7797d9e41765f08a1f7477f45eeb63b89ce8b/docs/concepts/queries.rst#inner-joins
01:59:47 × cuz quits (~user@2601:182:cc02:8b0:e50a:ab1e:19b4:1aaf) (Ping timeout: 268 seconds)
02:01:03 juhp joins (~juhp@111.65.63.250)
02:01:13 <awpr> along the same lines I wish I could have newtypes with result kinds other than Type (e.g. Type -> Type)
02:01:31 × brettgilio quits (~brettgili@x-node.gq) (Quit: The Lounge - https://thelounge.chat)
02:01:51 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 268 seconds)
02:02:11 brettgilio joins (~brettgili@x-node.gq)
02:04:18 <hololeap_> I'm running into something where if I have PolyKinds enabled, some things won't be able to derive e.g. Show unless I use StandaloneDeriving to explicitly state all the needed constraints
02:04:23 hololeap_ is now known as hololeap
02:04:36 <hololeap> has anyone run into this?
02:04:53 <Cajun> re open kind: why cant polykinds be used for that? seems like exactly what its purpose is, unless im misunderstanding the problem statement
02:05:26 <cdsmith> Cajun: Perhaps it can? I'm not sure I would understand how
02:06:24 <ProofTechnique> cdsmith: https://gitlab.haskell.org/ghc/ghc/-/issues/19292 It seems like every kind is open
02:06:39 <hololeap> cdsmith: type family Thing k (t :: k)
02:06:40 <Cajun> well it would mean you can have it like `data Foo :: (k -> k) -> k -> k` for some implementation of Foo, with `k` being some polymorphic kind
02:06:42 <hololeap> for instance
02:07:07 <Cajun> assuming you also have -XStandaloneKindSignatures enabled
02:09:12 <cdsmith> ProofTechnique: Thanks. It seems https://gitlab.haskell.org/ghc/ghc/-/issues/11080 is asking for the same thing I was looking for. Haven't yet understood the linked issue
02:09:22 <Cajun> though if it were a type family, it might require it to be open but im not sure, it would definitely make it easier to instantiate it for a custom user type, but im pretty new to type level programming
02:09:47 <cdsmith> Cajun: I'm still working on understanding what you said. My Haskell brain is slow tonight
02:10:50 <Cajun> its also in line with what hololeap said, its best explained in the GHC docs: https://downloads.haskell.org/~ghc/8.10.5/docs/html/users_guide/glasgow_exts.html#extension-PolyKinds
02:11:56 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
02:12:21 <awpr> that's still kinda just using `Type` though, just one level up, at which point you may as well just use it directly
02:12:41 <awpr> assuming I'm picturing the intended use case correctly
02:15:34 × pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer)
02:18:01 <cdsmith> Cajun: If you're suggesting that what I'm looking for IS kind polymorphism from some other point of view, then that isn't obvious to me. If you're suggesting that it's implementable via kind polymorphism, well, I don't see how yet and linking to the definition of kind polymorphism doesn't tell me how
02:18:12 pavonia joins (~user@user/siracusa)
02:18:30 <Cajun> yeah i just dont think i fully understand the problem statement, my bad
02:18:49 <awpr> like if you want a kind other than `Type`, it's presumably because some arbitrary type like `Int` makes no sense in that context, and if you replace `Type` with a kind variable `k`, you just have the same problem with promoted data constructors in place of types
02:19:47 <Cajun> yeah, i see that. that gitlab page has also gathered some dust, but it does mention a "prior method" so perhaps thats of interest
02:19:55 <cdsmith> Right, this is like the old trick of using EmptyDataDecls to make values for a phantom type constructor. DataKinds makes that obsolete if you want a closed kind. But what about an open kind?
02:20:17 <lechner> ProofTechnique: phew! thank you!
02:20:21 × td_ quits (~td@94.134.91.4) (Ping timeout: 268 seconds)
02:22:08 td_ joins (~td@94.134.91.211)
02:22:37 <cdsmith> I think https://gitlab.haskell.org/ghc/ghc/-/issues/11080 explains the problem quite clearly. But the solution, it seems, is to use EmptyDataDecls and give up kind safety. (Or else rely on the broken behavior that ProofTechnique pointed out, but that appears unwise as it will be eventually fixed?)
02:22:41 <awpr> hmm, how about `data family MyKind k :: Type`, and use `MyKind k` as the kind in place of `Type`
02:23:01 <awpr> assuming you can promote a data family
02:23:39 thyriaen_ joins (~thyriaen@x4db78003.dyn.telefonica.de)
02:23:43 <cdsmith> awpr: I'm not understanding still. How would you declare a type of the kind `MyKind k` now?
02:24:28 <awpr> `data Sentinel; data instance MyKind Sentinel = TheConstructorIActuallyWant`
02:25:01 <awpr> there's still the EmptyDataDecls trick, but it's just to let different data instances exist
02:25:44 <cdsmith> Hmm... I'm thinking that "just use Type" is making my head hurt less, so I'll try it that way, I think!
02:26:33 × thyriaen quits (~thyriaen@dynamic-089-012-047-178.89.12.pool.telefonica.de) (Ping timeout: 265 seconds)
02:27:02 <awpr> I should check whether this trick works
02:27:59 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1)
02:34:18 × MQ-17J quits (~MQ-17J@8.21.10.6) (Ping timeout: 260 seconds)
02:34:36 MQ-17J joins (~MQ-17J@8.21.10.6)
02:35:16 <awpr> `Data constructor 'Z1' cannot be used here (it comes from a data family instance)` :(
02:36:12 <awpr> so no promoting data families. on the plus side, I discovered a new GHC error message I've never seen before
02:37:55 × thyriaen_ quits (~thyriaen@x4db78003.dyn.telefonica.de) (Remote host closed the connection)
02:40:04 <Cajun> today i learned GHC has that error message :P
02:40:37 <awpr> oh, this is probably just the type-level reflection of "data families aren't GADTs"
02:41:47 jinsun joins (~quassel@user/jinsun)
02:51:24 × VoidNoir0 quits (~VoidNoir0@72.80.203.52) (Quit: Connection closed)
02:55:18 benin036932301 joins (~benin@183.82.205.89)
02:56:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:57:04 <hololeap> % type family MyThing k1 k2 (t :: k) :: k2
02:57:05 <yahb> hololeap:
02:57:17 <hololeap> % type instance MyThing Type Type Int = Bool
02:57:17 <yahb> hololeap: ; <interactive>:38:23: error:; Ambiguous occurrence `Type'; It could refer to; either `Language.Haskell.TH.Type', imported from `Language.Haskell.TH' (and originally defined in `Language.Haskell.TH.Syntax'); or `Data.Kind.Type', imported from `Data.Kind' (and originally defined in `GHC.Types'); <interactive>:38:28: error:; Ambiguous occurrence `Type'; It could refer to;
02:57:21 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 268 seconds)
02:57:44 <hololeap> % import qualified Data.Kind as K
02:57:44 <yahb> hololeap:
02:57:53 <hololeap> % type instance MyThing K.Type K.Type Int = Bool
02:57:53 <yahb> hololeap:
02:58:14 <awpr> one or both of those can be made invisible
02:58:17 <hololeap> type instance MyThing (K.Type -> K.Type) (K.Type -> K.Type -> K.Type) Maybe = Either
02:58:48 <hololeap> % type instance MyThing (K.Type -> K.Type) (K.Type -> K.Type -> K.Type) Maybe = Either
02:58:48 <yahb> hololeap:
02:58:51 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:58:54 <awpr> like in https://hackage.haskell.org/package/numeric-kinds-0.1.0.0/docs/Kinds-Num.html#t:Cmp
02:59:29 <hololeap> cdsmith: you can do somthing like that ^ to leave the kinds open ended, and declare them when you make a type instance
02:59:54 × benin036932301 quits (~benin@183.82.205.89) (Ping timeout: 265 seconds)
03:00:50 <hololeap> s/(t :: k)/(t :: k1)/
03:01:45 <hololeap> or I suppose you don't even have to have them mentioned in the type instance declaration
03:02:17 <hololeap> % type family AnotherThing (t :: k1) :: k2
03:02:17 <yahb> hololeap:
03:02:38 <hololeap> % type instance AnotherThing Either = Maybe
03:02:38 <yahb> hololeap:
03:05:01 yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
03:07:40 andrei-n joins (~andrei-n@109.130.156.104)
03:08:10 benin036932301 joins (~benin@183.82.205.89)
03:09:15 × benin036932301 quits (~benin@183.82.205.89) (Read error: Connection reset by peer)
03:09:46 × yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
03:10:47 wei2912 joins (~wei2912@112.199.250.21)
03:11:50 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
03:14:00 × neo1 quits (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 268 seconds)
03:14:59 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
03:17:42 <andrei-n> Hello. Is the idiom where you reverse a list after building it in a recursive function is considered bad coding style in haskell? Thanks.
03:18:55 <shachaf> That depends on the situation.
03:19:04 <shachaf> Laziness sometimes makes it unnecessary or a bad idea.
03:19:52 <andrei-n> Ok...
03:20:48 <shachaf> For example think about how "map f [] = []; map f (x:xs) = f x : map f xs" is evaluated.
03:21:26 <shachaf> When you call it on a list, it constructs the value (f x) : (map f xs) and returns immediately. It doesn't recurse all the way to the end like in a strict language.
03:21:59 <andrei-n> Ok. I understand.
03:23:27 × nctcf^ quits (~nctcf@68.101.54.227) (Remote host closed the connection)
03:26:23 × shachaf quits (~shachaf@user/shachaf) (Quit: Reconnecting)
03:26:31 shachaf joins (~shachaf@user/shachaf)
03:29:23 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
03:34:14 <dsal> I may have to stop complaining about ormolu. https://github.com/ret/specifica/blob/main/tlaplus/src/Language/TLAPlus/Parser.hs
03:42:14 hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com)
03:42:52 × Skyfire quits (~pyon@user/pyon) (Quit: brb)
03:43:17 Skyfire joins (~pyon@user/pyon)
03:45:02 dsrt^ joins (~dsrt@68.101.54.227)
03:58:38 <hololeap> is it possible to derive MonoTraversable? http://sprunge.us/lWf9hV
04:00:03 eggplant_ joins (~Eggplanta@2600:1700:bef1:5e10:6853:9e54:2a70:a12e)
04:00:03 <awpr> I ran into that problem working on `Traversable10`, see https://ryanglscott.github.io/2018/06/22/quantifiedconstraints-and-the-trouble-with-traversable/
04:00:46 <awpr> short answer, no, not the way MonoTraversable is defined
04:01:26 <jle`> dsal: art
04:02:13 <dsal> There's such weird constructs in there, but the author clearly knows things.
04:03:26 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:3440:f429:80f2:b168) (Ping timeout: 260 seconds)
04:03:30 <jle`> gotta love the consistency
04:03:46 × Nahra quits (~user@static.161.95.99.88.clients.your-server.de) (Ping timeout: 252 seconds)
04:12:47 × fendor_ quits (~fendor@78-0-98-118.adsl.net.t-com.hr) (Remote host closed the connection)
04:13:12 fendor_ joins (~fendor@78-0-98-118.adsl.net.t-com.hr)
04:16:30 × theang quits (~theang@fef109.internetdsl.tpnet.pl) (Ping timeout: 260 seconds)
04:38:39 wrengr is now known as wrengr_away
04:41:18 × andrei-n quits (~andrei-n@109.130.156.104) (Quit: Leaving)
04:43:45 System123 joins (~System123@net-37-179-171-3.cust.vodafonedsl.it)
04:47:53 × pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
04:48:16 × System123 quits (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 252 seconds)
04:51:03 pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-57-65-92-163-194.dsl.bell.ca)
05:04:54 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
05:06:13 geekosaur joins (~geekosaur@xmonad/geekosaur)
05:10:53 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds)
05:16:11 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:18:54 pony joins (~ed@101.100.135.79)
05:21:01 <pony> hi
05:22:01 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
05:22:44 falafel joins (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com)
05:22:54 syntactic_sugar joins (~amoljha@2601:644:8601:2e30::822c)
05:26:06 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:30:49 × syntactic_sugar quits (~amoljha@2601:644:8601:2e30::822c) (Quit: WeeChat 3.1)
05:31:03 syntactic_sugar joins (~amoljha@2601:644:8601:2e30::822c)
05:36:18 × falafel quits (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 260 seconds)
05:38:41 fawful joins (~guy@c-76-104-217-93.hsd1.wa.comcast.net)
05:40:46 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds)
05:41:40 hyiltiz joins (~quassel@31.220.5.250)
05:45:08 falafel joins (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com)
05:45:42 yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
05:46:08 × yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Remote host closed the connection)
05:46:10 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 265 seconds)
05:46:36 yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
05:48:00 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
05:48:35 × dsrt^ quits (~dsrt@68.101.54.227) (Ping timeout: 265 seconds)
05:51:41 ubert joins (~Thunderbi@178.115.41.246.wireless.dyn.drei.com)
05:51:58 × yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
06:00:19 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
06:04:05 nrl^ joins (~nrl@68.101.54.227)
06:04:33 hyiltiz joins (~quassel@31.220.5.250)
06:04:38 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:d472:34ee:a050:6ca2)
06:04:43 × doyougnu quits (~user@c-73-25-202-122.hsd1.or.comcast.net) (Ping timeout: 252 seconds)
06:05:21 zaquest joins (~notzaques@5.128.210.178)
06:16:26 × falafel quits (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Ping timeout: 260 seconds)
06:17:24 neo1 joins (~neo3@cpe-292712.ip.primehome.com)
06:19:00 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds)
06:21:01 vysn joins (~vysn@user/vysn)
06:32:19 × ubert quits (~Thunderbi@178.115.41.246.wireless.dyn.drei.com) (Quit: ubert)
06:32:23 ubert1 joins (~Thunderbi@178.115.41.246.wireless.dyn.drei.com)
06:34:41 ubert1 is now known as ubert
06:35:13 yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
06:39:40 × yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
06:39:57 hyiltiz joins (~quassel@31.220.5.250)
06:40:48 mc47 joins (~mc47@xmonad/TheMC47)
06:44:57 × ubert quits (~Thunderbi@178.115.41.246.wireless.dyn.drei.com) (Remote host closed the connection)
06:50:10 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
06:52:12 hololeap_ joins (~hololeap@user/hololeap)
06:52:21 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
06:53:00 yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
06:54:35 falafel joins (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com)
06:54:55 × falafel quits (~falafel@2603-8000-d800-688c-753f-04f5-7eeb-6eb7.res6.spectrum.com) (Read error: Connection reset by peer)
06:55:50 max22- joins (~maxime@2a01cb0883359800b8a33ca92ffd9155.ipv6.abo.wanadoo.fr)
06:57:34 × yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
07:01:12 × fendor_ quits (~fendor@78-0-98-118.adsl.net.t-com.hr) (Remote host closed the connection)
07:01:37 fendor_ joins (~fendor@78-0-98-118.adsl.net.t-com.hr)
07:02:14 Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr)
07:05:43 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:d472:34ee:a050:6ca2) ()
07:07:18 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds)
07:11:09 hololeap joins (~hololeap@user/hololeap)
07:13:09 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 276 seconds)
07:14:02 × max22- quits (~maxime@2a01cb0883359800b8a33ca92ffd9155.ipv6.abo.wanadoo.fr) (Quit: Leaving)
07:14:51 × fawful quits (~guy@c-76-104-217-93.hsd1.wa.comcast.net) (Quit: WeeChat 3.2)
07:15:51 × eggplant_ quits (~Eggplanta@2600:1700:bef1:5e10:6853:9e54:2a70:a12e) (Remote host closed the connection)
07:16:02 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
07:16:07 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
07:17:37 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
07:17:39 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
07:20:54 × fendor_ quits (~fendor@78-0-98-118.adsl.net.t-com.hr) (Ping timeout: 265 seconds)
07:22:29 hyiltiz joins (~quassel@31.220.5.250)
07:23:22 Gurkenglas joins (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de)
07:29:24 × hololeap_ quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
07:30:06 benin036932301 joins (~benin@183.82.205.89)
07:30:16 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
07:30:27 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
07:30:48 × syntactic_sugar quits (~amoljha@2601:644:8601:2e30::822c) (Quit: WeeChat 3.1)
07:30:56 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 268 seconds)
07:31:06 syntactic_sugar joins (~amoljha@2601:644:8601:2e30::822c)
07:31:33 × syntactic_sugar quits (~amoljha@2601:644:8601:2e30::822c) (Client Quit)
07:32:27 <Axman6> anyone know what the secret incantation is to make hls work with a cabal project? I expected it to work but it tells me I don't have GHC installed
07:34:35 <Cajun> hls for use in an editor? the first thing you should do is update everything with `ghcup tui`
07:36:39 <Axman6> yeah I've just gone through that dance - though I might try restarting VS code
07:36:59 <Cajun> ctrl+shift+p -> restart lsp server typically helps, though restarting it will also do that
07:38:11 <Axman6> restarting seems to have worked! Fantastic. I love HLS when it works
07:39:05 <Cajun> its really great, especially being able to be told the types of lambdas and other variables on the fly
07:40:00 <Cajun> though i find myself commonly restarting the lsp server whenever a new dependency is added, as it will tend to just keep the red underline on some hidden package despite having built the project w/ cabal. just a minor thing
07:41:52 oxide joins (~lambda@user/oxide)
07:42:04 <Cajun> ah i think i know why it was saying you didnt have ghc installed, did you update and/or uninstall a ghc version and the other tools with the editor open? ive had something similar happen in ghci before
07:44:53 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
07:47:33 syntactic_sugar joins (~amoljha@2601:644:8601:2e30::822c)
07:49:27 hyiltiz joins (~quassel@31.220.5.250)
07:49:45 <Axman6> yeah I think I just had old versions open at the time
07:58:34 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:04:13 × benin036932301 quits (~benin@183.82.205.89) (Ping timeout: 252 seconds)
08:05:30 hendursa1 joins (~weechat@user/hendursaga)
08:05:55 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:fc0c:f30:d5c3:23fa)
08:05:57 × syntactic_sugar quits (~amoljha@2601:644:8601:2e30::822c) (Quit: WeeChat 3.1)
08:06:11 syntactic_sugar joins (~amoljha@2601:644:8601:2e30::822c)
08:08:24 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
08:09:59 jtomas joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
08:10:10 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:fc0c:f30:d5c3:23fa) (Ping timeout: 252 seconds)
08:12:02 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22)
08:13:18 × syntactic_sugar quits (~amoljha@2601:644:8601:2e30::822c) (Quit: WeeChat 3.1)
08:14:30 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:16:22 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22) (Ping timeout: 260 seconds)
08:17:44 allbery_b joins (~geekosaur@xmonad/geekosaur)
08:17:44 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
08:17:47 allbery_b is now known as geekosaur
08:21:21 max22- joins (~maxime@2a01cb0883359800f35697ac373bfb77.ipv6.abo.wanadoo.fr)
08:30:59 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
08:38:03 TranquilEcho joins (~grom@user/tranquilecho)
08:42:59 Nahra joins (~user@static.161.95.99.88.clients.your-server.de)
08:53:41 fef joins (~thedawn@user/thedawn)
08:54:27 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
08:54:44 yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
08:57:38 kuribas joins (~user@ptr-25vy0i8euker9wwjmv4.18120a2.ip6.access.telenet.be)
08:59:40 × yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
09:00:09 × jaror[m] quits (~jaror@2001:470:69fc:105::265) (Quit: You have been kicked for being idle)
09:15:06 × hololeap quits (~hololeap@user/hololeap) (Remote host closed the connection)
09:15:38 hololeap joins (~hololeap@user/hololeap)
09:20:08 chris joins (~chris@81.96.113.213)
09:20:11 chris is now known as Guest2159
09:24:02 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds)
09:24:20 hyiltiz joins (~quassel@31.220.5.250)
09:31:50 × hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
09:37:17 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
09:44:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:56:28 __monty__ joins (~toonn@user/toonn)
09:58:50 × jespada quits (~jespada@host244.190-3-30.dynamic.telmex.net.ar) (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:03:23 yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
10:13:23 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22)
10:13:57 × ikex quits (ash@user/ikex) (Quit: ZNC - https://znc.in)
10:14:10 ikex joins (ash@user/ikex)
10:18:10 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22) (Ping timeout: 260 seconds)
10:24:00 tomjaguarpaw joins (~tom@li367-225.members.linode.com)
10:30:42 × haskl quits (~haskl@user/haskl) (Read error: Connection reset by peer)
10:30:51 × favonia quits (~favonia@user/favonia) (Ping timeout: 265 seconds)
10:33:11 haskl joins (~haskl@user/haskl)
10:41:47 jespada joins (~jespada@2803:9800:9842:7a62:e945:15a6:5467:94f6)
10:45:02 <xerox> maerwald: does ghcup install arm ghc on m1 nowadays?
11:02:16 rond_ joins (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438)
11:03:54 × yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
11:06:09 × Gurkenglas quits (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) (Ping timeout: 268 seconds)
11:07:06 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 265 seconds)
11:11:24 <tomjaguarpaw> Not sure if there's a nuance I'm missing but does this answer your question: https://gitlab.haskell.org/haskell/ghcup-hs#supported-platforms
11:18:16 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
11:28:27 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
11:35:24 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
11:37:31 Topsi joins (~Tobias@dyndsl-095-033-091-004.ewe-ip-backbone.de)
11:43:50 × Topsi quits (~Tobias@dyndsl-095-033-091-004.ewe-ip-backbone.de) (Quit: Leaving.)
11:44:31 Everything joins (~Everythin@37.115.210.35)
11:44:56 Topsi joins (~Tobias@dyndsl-095-033-091-004.ewe-ip-backbone.de)
11:50:20 wei2912 joins (~wei2912@112.199.250.21)
11:55:13 × kmein quits (~weechat@user/kmein) (Quit: ciao kakao)
11:55:32 kmein joins (~weechat@user/kmein)
11:57:35 × max22- quits (~maxime@2a01cb0883359800f35697ac373bfb77.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
12:04:22 sm2n_ joins (~sm2n@user/sm2n)
12:04:57 × sm2n quits (~sm2n@user/sm2n) (Ping timeout: 268 seconds)
12:07:08 juhp_ joins (~juhp@bb220-255-143-175.singnet.com.sg)
12:11:01 × juhp quits (~juhp@111.65.63.250) (Ping timeout: 252 seconds)
12:11:01 juhp_ is now known as juhp
12:13:03 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
12:15:15 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: Connection reset by peer)
12:18:52 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
12:20:15 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
12:20:39 fef joins (~thedawn@user/thedawn)
12:21:16 hyiltiz joins (~quassel@31.220.5.250)
12:21:20 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
12:28:02 Guest22 joins (~Guest22@ip4d14815a.dynamic.kabel-deutschland.de)
12:28:41 <Guest22> @unpl ((`notElem` " |+") . head)
12:28:41 <lambdabot> (\ x -> notElem (head x) " |+")
12:29:27 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: Connection reset by peer)
12:29:57 <Guest22> @unpl break ((`notElem` " |+") . head) $ lines side
12:29:58 <lambdabot> (break (\ x -> notElem (head x) " |+") (lines side))
12:32:57 × fef quits (~thedawn@user/thedawn) (Quit: Leaving)
12:33:35 × hrnz quits (~ulli@vegan.im.it) (Quit: das ist mir zu bld hier; bb)
12:34:20 × nrl^ quits (~nrl@68.101.54.227) (Ping timeout: 268 seconds)
12:34:28 hrnz joins (~ulli@vegan.im.it)
12:35:10 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
12:35:57 acidjnk joins (~acidjnk@p200300d0c703cb488c4c1d5595111d0b.dip0.t-ipconnect.de)
12:39:37 × hrnz quits (~ulli@vegan.im.it) (Quit: das ist mir zu bld hier; bb)
12:40:04 hrnz joins (~ulli@vegan.im.it)
12:43:58 sheddow joins (~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6)
12:46:09 <maerwald> xerox: yes
12:47:19 <maerwald> xerox: https://gitlab.haskell.org/haskell/ghcup-hs#supported-platforms
12:47:33 × pony quits (~ed@101.100.135.79) (Quit: WeeChat 2.8)
12:48:38 max22- joins (~maxime@2a01cb0883359800101dc8ab48a7971b.ipv6.abo.wanadoo.fr)
12:49:33 × Vq quits (~vq@90-227-195-41-no77.tbcn.telia.com) (Quit: Server upgrade)
12:56:43 mikoto-chan joins (~mikoto-ch@83.137.2.251)
12:57:25 <xerox> maerwald: could it be that I have the x64 version and it won't ever think of updating to an arm version because of this
12:57:57 <maerwald> yeah
12:58:01 <xerox> makes sense
12:58:19 <maerwald> https://downloads.haskell.org/~ghcup/aarch64-apple-darwin-ghcup
12:58:28 <xerox> appreciate it (:
12:58:44 <xerox> are there still random bugs or is it solid nowadays?
12:59:02 <xerox> in the whole thing, ghc and friends
12:59:59 <maerwald> there are a couple of bugs I guess
13:00:18 <maerwald> https://gitlab.haskell.org/ghc/ghc/-/issues?label_name[]=aarch64-darwin
13:00:34 <maerwald> and someone on the stack issue tracker claims the aarch64 ghc is 10 times slower
13:00:37 <maerwald> but I haven't seen that
13:01:32 yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
13:01:57 <maerwald> I mean, GHC, ghcup and cabal are all built successfully on darwin M1
13:01:59 <geekosaur> is that for 8.10.7 or for 9.2 alpha? going through llvm means a decent amount of extra work going on (llc and opt)
13:02:05 × vysn quits (~vysn@user/vysn) (Ping timeout: 268 seconds)
13:02:17 <maerwald> and cabal and ghcup have a decent amount of dependencies
13:02:22 <xerox> ah yes I am on 8.10
13:02:57 <maerwald> stack fails to build because of haskell tls shenanigans
13:03:35 <maerwald> that whole stack is on my personal blacklist
13:03:44 <maerwald> library stack I mean
13:04:12 <maerwald> try to convince stack upstream to switch to curl... problem solved
13:05:23 × acidjnk quits (~acidjnk@p200300d0c703cb488c4c1d5595111d0b.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
13:06:24 × yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
13:09:47 × mikoto-chan quits (~mikoto-ch@83.137.2.251) (Read error: Connection reset by peer)
13:13:18 Lycurgus joins (~juan@98.4.112.204)
13:15:36 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22)
13:16:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:20:10 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22) (Ping timeout: 260 seconds)
13:26:19 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
13:30:49 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
13:36:38 × Guest2159 quits (~chris@81.96.113.213) (Remote host closed the connection)
13:38:03 hendursaga joins (~weechat@user/hendursaga)
13:39:49 × juhp quits (~juhp@bb220-255-143-175.singnet.com.sg) (Quit: juhp)
13:40:02 juhp joins (~juhp@bb220-255-143-175.singnet.com.sg)
13:43:09 ubert joins (~Thunderbi@91.141.74.182.wireless.dyn.drei.com)
13:44:18 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
13:44:50 benin036932301 joins (~benin@183.82.205.89)
13:48:43 × sheddow quits (~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6) (Ping timeout: 256 seconds)
13:49:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
13:50:34 × benin036932301 quits (~benin@183.82.205.89) (Ping timeout: 252 seconds)
13:53:22 × Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Ping timeout: 265 seconds)
13:53:40 × xsperry quits (~as@user/xsperry) (Remote host closed the connection)
14:02:17 ub joins (~Thunderbi@178.165.161.213.wireless.dyn.drei.com)
14:02:40 × ubert quits (~Thunderbi@91.141.74.182.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
14:02:40 ub is now known as ubert
14:13:32 zer0bitz joins (~zer0bitz@dsl-hkibng31-54fafc-123.dhcp.inet.fi)
14:15:42 × ubert quits (~Thunderbi@178.165.161.213.wireless.dyn.drei.com) (Ping timeout: 260 seconds)
14:16:42 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
14:19:19 Vajb joins (~Vajb@nbptnppvs5wp2vjps-2.v6.elisa-mobile.fi)
14:21:45 × Guest22 quits (~Guest22@ip4d14815a.dynamic.kabel-deutschland.de) (Quit: Client closed)
14:25:02 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 260 seconds)
14:25:43 hyiltiz joins (~quassel@31.220.5.250)
14:28:28 Gurkenglas joins (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de)
14:34:30 xsperry joins (~as@user/xsperry)
14:37:15 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
14:41:53 favonia joins (~favonia@user/favonia)
14:45:30 Guest52 joins (~Guest52@93-172-101-61.bb.netvision.net.il)
14:49:33 <Guest52> what types should be in place so i could add a complex number to a fractional number?
14:49:57 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
14:50:00 <Guest52> ive tried everything but always get the error `Occurs check: cannot construct the infinite type: a1 ~ Complex a1`
14:52:37 <xerox> > let a = 2/3; b = (-2/3) + 1 in a :+ b
14:52:39 <lambdabot> 0.6666666666666666 :+ 0.33333333333333337
14:53:01 <xerox> missed a : in b's def, oopsie
14:53:28 <xerox> and it's wrong anyway!
14:54:08 vysn joins (~vysn@user/vysn)
14:55:02 <xerox> I guess you complexify your rational with ":+ 0" and that's it
14:56:38 <ProofTechnique> > let a = 2/3; b = 1 :+ 1 in a + b
14:56:40 <lambdabot> 1.6666666666666665 :+ 1.0
14:57:53 <Guest52> no
14:58:01 <Guest52> i mean
14:58:31 <Guest52> i want to add a Complex number with a double lets say
14:58:44 <Guest52> not two doubles to a complex
14:59:22 <ProofTechnique> > let a = pi; b = 1 :+ 1 in a + b
14:59:24 <lambdabot> 4.141592653589793 :+ 1.0
14:59:29 <ProofTechnique> I'm not following
14:59:45 <ProofTechnique> What does "add" mean?
14:59:52 <Guest52> (0 :+ 0) + (1.2 :: Double)
15:00:13 <xerox> > let a = 2/3 :: Double; b = (-2/3) :+ 1 :: Complex Double; f x y = (x :+ 0) + y in f a b
15:00:15 <lambdabot> 0.0 :+ 1.0
15:03:05 yauhsien joins (~yauhsien@118-167-49-246.dynamic-ip.hinet.net)
15:04:05 slowButPresent joins (~slowButPr@user/slowbutpresent)
15:06:16 <Drew[m]> `(0 :+ 0) + (realToFrac 1.2) `
15:08:06 × yauhsien quits (~yauhsien@118-167-49-246.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
15:14:36 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:14:36 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
15:14:36 wroathe joins (~wroathe@user/wroathe)
15:17:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22)
15:18:42 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
15:20:49 <monochrom> Haha latest plot twist in the haskell-cafe hell thread: "I learned Haskell straight from the Haskell Report" "Yeah me too"
15:21:58 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22) (Ping timeout: 260 seconds)
15:22:51 <hpc> use the source, luke
15:23:46 <monochrom> Oh yeah should I troll with "I learned Haskell from the source code of Hugs, it maps Haskell to the bare metal when the rubber hits to road"? >:)
15:24:01 <monochrom> err s/hits to road/hits the road/
15:24:35 <monochrom> "It is written in C. It's very readable."
15:25:02 <monochrom> "I ruled out GHC because back then there was a component written in Perl. Not readable."
15:26:35 <c_wraith> is the renamer no longer in perl?
15:27:19 <monochrom> Actually more seriously I would want to challenge him "did you learn C from an actual compiler that does an actual mapping to the rubber-hit-the-road thing you rambled about, or did you only imagine a fantasy mapping to congratulate yourself?"
15:27:40 <monochrom> I think there is no longer a renamer.
15:27:49 <c_wraith> that'd do the job
15:28:04 <sclv> “i learned haskell because i invented a perfect language in my head and it turned out paul hudak and lennart had the same idea already” lmao
15:28:23 <hpc> monochrom: "i learned python straight from the test suite"
15:28:26 <monochrom> Ah but GHC has a large component written in Haskell again. If I haven't learned Haskell I can't read it to learn Haskell... >:)
15:28:46 <monochrom> haha hpc
15:28:53 <monochrom> @quote monochrom downloaded
15:28:53 <lambdabot> monochrom says: I was trying to design a sensible language... then I downloaded ghc.
15:29:38 × Vajb quits (~Vajb@nbptnppvs5wp2vjps-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
15:30:08 <monochrom> OK don't worry folks, I'm on a leash, all the dream posts I said I wanted to post, I won't because I know they are not helpful.
15:30:39 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
15:31:07 <monochrom> I have posted only once, and it was only to debunk "visual learner, spatial learner", and cdsmith did it too.
15:34:17 <Drew[m]> Is there a tool to take a package and a stackage lts version you know its developer used to build it and return the versions of all its dependencies, without installing stack?
15:34:53 <Drew[m]> That would be handy to have right now
15:35:15 <maerwald> Drew[m]: you want to build a stack project with cabal?
15:35:48 avital joins (~avital@cpe7073cbb4373d-cmf81d0fa2a7e0.cpe.net.cable.rogers.com)
15:36:06 <Drew[m]> I want to build a hackage package with cabal that a maintainer hasn't put any upper bounds on
15:36:07 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
15:36:34 <maerwald> so you want to build a stack project with cabal?
15:36:49 <Drew[m]> essentially
15:36:55 <maerwald> https://hackage.haskell.org/package/stack2cabal
15:37:08 <sclv> monochrom: that was a great link you posted on learning styles by the way, wasn't aware really before
15:37:36 <Drew[m]> maerwald: Ah, thanks
15:38:06 <monochrom> Yeah you can count on Veritasium and other science communicator channels.
15:40:09 <avital> Hi all. This is something I don't quite get. I am trying to use Control.Arrow. Say I have an arrow defined as `pre = (arr .) (++)`. Which makes an arrow `Arrow a1 => [a2] -> a1 [a2] [a2]`. I can run the arrow say with `["one", "two"] >>=(runKleisli $ pre "test")
15:40:47 <avital> But What I do not get is how runKleisli takes an arrow while its type signature requires Kleisli?
15:40:56 <monochrom> @type (arr .) (++)
15:40:57 <lambdabot> Arrow a1 => [a2] -> a1 [a2] [a2]
15:41:29 <avital> I get I can use Kleisli where Arrow is expected bc there is an Arrow instance for Kleisli
15:41:34 <monochrom> @type runKleisli
15:41:34 <avital> But this is reverse
15:41:35 <lambdabot> Kleisli m a b -> a -> m b
15:41:56 <c_wraith> avital: pre is polymorphic, as defined.
15:42:19 <ProofTechnique> I like how this video dances around the point that the learning style myth is just a knock-on consequence of Western hyperindividualist woo
15:42:26 <monochrom> Ah, right, a1 = Kleisli m
15:43:05 <c_wraith> Kleisli [], in that particular case
15:43:35 <avital> What type resolution rule is applied to make an arrow into kleisli in runKleisli, that what I don't quite get. Sorry, this might be a real dumb question
15:43:54 <c_wraith> It's just unification
15:44:39 jakalx joins (~jakalx@base.jakalx.net)
15:45:14 <c_wraith> pre "test" :: Arrow a1 => a1 [a2] [a2] ; runKleisli :: Kleisli m a b -> a -> m b
15:45:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:46:21 <c_wraith> err. (Arrow a1 => a1 String String), actually
15:46:30 <avital> So how Arrow a1 is type-compatible with Kleisli m a b
15:46:40 <c_wraith> Arrow a1 isn't a type
15:46:44 <c_wraith> it's a constraint
15:46:49 <avital> Constraint
15:46:59 <avital> Yup, I get that
15:47:01 <c_wraith> Kleisli m is an instance of Arrow
15:47:09 <c_wraith> so Kleisli m unifies with a1
15:47:18 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
15:47:33 <avital> Guess I will go read about unification some more, thank you, c_wraith
15:48:18 <monochrom> a1 is the type compatible with Kleisli m
15:48:21 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
15:48:28 hendursaga joins (~weechat@user/hendursaga)
15:48:33 <c_wraith> It's the same idea as let { x :: Int ; x = 3 ; f :: Num a => a -> a ; f = (+ 1) } in f x
15:49:24 <monochrom> I think my http://www.vex.net/~trebla/haskell/prerequisite.xhtml#unification is all you need to know about unification for a long time.
15:49:39 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
15:49:46 <avital> ty, c_wraith, monochrom
15:49:54 <monochrom> I say this because if you Google for unification you will just be getting detailed algorithms that you don't need and won't care for a long time.
15:50:27 <c_wraith> Yeah, definitely don't look at unification algorithms. They're super-complicated because of edge cases that aren't important for this
15:50:28 <monochrom> What most people need for the most part is the problem statement of unification, not a solution.
15:51:46 <monochrom> Or at most, an inefficient but straigthforward solution that you can say "ah yeah this is easy I can do it by hand".
15:52:36 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
15:54:18 <hpc> which usually you can
15:54:44 cheater1__ joins (~Username@user/cheater)
15:54:51 <hpc> things don't get difficult unless you do something uselessly complicated like fmap (fmap fmap fmap) fmap (fmap (fmap fmap) fmap) fmap fmap
15:54:58 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
15:55:07 cheater1__ is now known as cheater
15:57:23 <EvanR> when all sentences work, no help from the computer notifying you of writing the wrong thing
15:57:30 <EvanR> bad
15:58:13 <EvanR> all least not all fmap clouds fit all slots
15:58:32 <int-e> :t fmap (fmap fmap fmap) fmap (fmap (fmap fmap) fmap) fmap fmap
15:58:33 <lambdabot> (Functor f1, Functor f2, Functor f3) => f1 (a1 -> b) -> f1 ((a2 -> f3 a1) -> f2 a2 -> f2 (f3 b))
15:59:03 <int-e> could be worse :P
15:59:32 jtomas_ joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
16:01:49 × avital quits (~avital@cpe7073cbb4373d-cmf81d0fa2a7e0.cpe.net.cable.rogers.com) (Quit: Client closed)
16:02:54 × jtomas quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 265 seconds)
16:03:43 <int-e> :t fmap ((fmap .) . (.) . fmap)
16:03:44 <lambdabot> (Functor f1, Functor f2, Functor f3) => f1 (a1 -> b) -> f1 ((a2 -> f3 a1) -> f2 a2 -> f2 (f3 b))
16:04:43 <int-e> hpc: ^^ it's almost reasonable!
16:05:09 <hpc> definitely almost :P
16:05:11 jakalx joins (~jakalx@base.jakalx.net)
16:05:30 <monochrom> "is this representable functor?" meme
16:08:39 <ldlework> Reading about Reader, and my tiny brain can't handle it.
16:09:09 <hpc> you should write about Writer instead
16:09:34 <ldlework> hah
16:09:36 <monochrom> "Each Reader functor is just the representation of a representable functor, what's the problem?" >:)
16:09:59 <ldlework> Last night in HFFP: "Reader is the Functor of functions."
16:10:02 <ldlework> Me: Weeeeeeeeeee
16:10:37 <monochrom> More seriously, you should not be reading. This is not a spectator sport. You should be trying your hands at guessing how to code up fmap, >>=, etc for Reader.
16:11:03 <ldlework> monochrom: I do all the exercises in the book and I've stopped to write a few haskell experiments like with gloss and some other stuff.
16:11:19 <ldlework> But each chapter needs to read at least once :P
16:12:06 <ldlework> (or let's be real, twice or thrice heh)
16:12:08 <monochrom> Sure, but the reading is only to be told "Reader is an instance of Functor".
16:12:27 <monochrom> Beyond that point, if you just read how other people code it up, it makes no sense.
16:12:46 <monochrom> It only makes sense after you walk the same journey yourself.
16:12:47 <ldlework> Well a series of examples of the typeclass in use is instructive
16:13:02 <ldlework> monochrom: sure that's what the exercises in the back of the chapter are for!
16:13:05 <hpc> also consider what you would do if you didn't have Monad and do-notation
16:13:09 <monochrom> OK even after that you will still be missing something. But that is the minimum.
16:13:15 <hpc> and how you would write some random Reader thing
16:13:45 <hpc> then those class functions are just the things you're doing over and over again
16:14:29 <hpc> like for Maybe, the thing you do over and over again is case foo of {Nothing -> Nothing; Just x -> something involving x}
16:14:46 <monochrom> Use case is that if you have "Reader Int XXX" it means that you can a read-only config of type Int you want to consult every once in a while. THE END.
16:15:55 <ldlework> Someone should make a code-academy thing for haskell
16:15:55 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 252 seconds)
16:15:57 <c_wraith> Reader itself isn't very useful
16:16:38 <ldlework> I think that'd be really valuable
16:17:38 waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
16:18:31 sheddow joins (~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6)
16:22:10 × jtomas_ quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 260 seconds)
16:23:34 hololeap joins (~hololeap@user/hololeap)
16:23:43 Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr)
16:31:10 hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com)
16:33:13 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
16:34:28 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
16:35:35 VoidNoir0 joins (~VoidNoir0@72.80.203.52)
16:36:19 <kuribas> Which REST framework, besides servant, lets you generate openapi docs, clients, etc?
16:37:20 × meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
16:37:51 <kuribas> I didn't find any...
16:37:55 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22)
16:38:23 <hpc> what's wrong with servant?
16:38:31 <kuribas> it's fancy haskell
16:38:43 <hpc> heh
16:38:49 <kuribas> It is fairly easy to use, until you want to extend it.
16:38:54 <kuribas> Write your own types.
16:39:03 <kuribas> And it is basically untyped on the type level (unkinded?)
16:41:20 lbseale joins (~lbseale@user/ep1ctetus)
16:41:36 <kuribas> It also seems overcomplicated, with it's use of GADTs.
16:42:41 hsiktas[m] joins (~hsiktasma@2001:470:69fc:105::30d4)
16:42:52 <kuribas> I just think you could have all the functionality of servant without any type level stuff.
16:43:22 <kuribas> For example, when you generate an REST server, it also creates the API description.
16:43:44 <kuribas> (a theoritical web framework I mean).
16:44:00 <kuribas> Then from the API description you could generate client, openapi, etc...
16:44:49 × juhp quits (~juhp@bb220-255-143-175.singnet.com.sg) (Quit: juhp)
16:45:08 juhp joins (~juhp@bb220-255-143-175.singnet.com.sg)
16:45:25 <ProofTechnique> Scala has tapir
16:45:43 tommd joins (~tommd@75-164-130-101.ptld.qwest.net)
16:46:06 <ProofTechnique> Might have some ideas worth stealing, though I expect the mapping won't be very direct, and I imagine the internals are "fancy Scala"
16:46:40 <ldlework> Can you call a function using `getArgs` from ghci repl
16:47:01 jstolarek joins (~jstolarek@ers4.neoplus.adsl.tpnet.pl)
16:47:18 <geekosaur> could you give an example of what you're trying to do?
16:47:25 <kuribas> I just think a type level REST API would work better in idris.
16:47:43 <kuribas> Because the API would be a normal value.
16:48:14 <hpc> ldlework: try it
16:48:33 <ldlework> hpc: i did
16:48:38 <kuribas> Is template haskell "fancy"?
16:48:55 <geekosaur> if you mean can you pass values via getArgs, there is :main and there is :set args
16:49:01 <monochrom> If you run ":main a b c", getArgs will receive ["a","b","c"]
16:49:09 <ldlework> monochrom: oh thanks
16:49:44 <hpc> ah, you meant "and actually give it arguments"
16:49:53 <ldlework> yeah hehe
16:50:09 <geekosaur> yeh, I was unclear on that as well
16:51:50 <kuribas> weird that idris gets so little traction, when people love type level programming so much...
16:52:12 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
16:52:51 econo joins (uid147250@user/econo)
16:53:53 × Flonk quits (~Flonk@ec2-52-40-29-25.us-west-2.compute.amazonaws.com) (Quit: The Lounge - https://thelounge.chat)
16:54:11 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: No route to host)
16:54:35 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
16:59:05 <ldlework> with `runhaskell` is there a way to invoke a specific function
17:00:47 <ldlework> other than main, that is
17:00:57 <geekosaur> I think the closest you get is --ghc-arg='-main-is function'
17:01:08 <geekosaur> which requires the function to behave like main
17:01:21 <monochrom> ghc -e 'f 5' yourfile.hs
17:02:00 <monochrom> In fact ghc -e '1+1' yourfile.hs too, although it seems like trolling if you load up the file just to end up not using it :)
17:02:27 <monochrom> ghc -e '1+1' is also OK, you don't have to name a file.
17:02:57 <ldlework> monochrom: ah that worked, thanks
17:07:22 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:12:01 × hyiltiz quits (~quassel@31.220.5.250) (Ping timeout: 252 seconds)
17:12:25 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
17:12:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
17:14:19 machinedgod joins (~machinedg@24.105.81.50)
17:17:41 <kuribas> hmm, I actually have a nice idea for a higher kinded, profunctor REST API...
17:18:06 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
17:18:19 <kuribas> Will still require generics or TH though...
17:18:38 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
17:20:06 × Guest52 quits (~Guest52@93-172-101-61.bb.netvision.net.il) (Quit: Client closed)
17:20:30 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:20:58 jtomas_ joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
17:22:31 hyiltiz joins (~quassel@31.220.5.250)
17:24:07 × neurocyte0 quits (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
17:24:23 × hyiltiz quits (~quassel@31.220.5.250) (Read error: Connection reset by peer)
17:26:37 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
17:27:29 × kuribas quits (~user@ptr-25vy0i8euker9wwjmv4.18120a2.ip6.access.telenet.be) (Quit: ERC (IRC client for Emacs 26.3))
17:30:56 <ldlework> I built a handy bash script that lets me either; run, doctest or quicktest a given HFFP exercise, chapter, or everything -- with the ability to "watch" a single exercise in either doctest or quicktest mode
17:32:23 <ldlework> I wonder if it'd be of any value if I made a template repo, with all of the exercises stubbed out, ready to be solved
17:36:37 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
17:43:26 <hololeap> is there a way to reuse a portion of a cabal file, e.g. a subset of dependencies that are used by multiple executables in the same package?
17:43:34 <sm> sounds good! and a reddit post
17:44:04 <sm> yes hololeap
17:44:38 Vq joins (~vq@90-227-195-41-no77.tbcn.telia.com)
17:46:20 × cheater quits (~Username@user/cheater) (Ping timeout: 265 seconds)
17:46:22 × Topsi quits (~Tobias@dyndsl-095-033-091-004.ewe-ip-backbone.de) (Read error: Connection reset by peer)
17:46:37 <hololeap> oh, just found it: common stanzas
17:46:37 cheater joins (~Username@user/cheater)
17:49:06 lbseale joins (~lbseale@user/ep1ctetus)
17:50:54 jlamothe joins (~jlamothe@104.158.48.100)
17:51:24 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:52:23 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
17:55:32 jakalx parts (~jakalx@base.jakalx.net) (Disconnected: Replaced by new connection)
17:55:33 jakalx joins (~jakalx@base.jakalx.net)
18:12:02 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:14:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 240 seconds)
18:14:59 × betelgeuse quits (~betelgeus@94-225-47-8.access.telenet.be) (Quit: The Lounge - https://thelounge.chat)
18:15:30 × azimut_ quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
18:15:48 <sshine> ldlework, what's HFFP?
18:16:19 <sshine> ldlework, oh, first principles book.
18:16:36 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:20:30 × max22- quits (~maxime@2a01cb0883359800101dc8ab48a7971b.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
18:22:50 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
18:29:30 Sgeo joins (~Sgeo@user/sgeo)
18:29:50 × sander quits (~sander@user/sander) (Ping timeout: 265 seconds)
18:34:42 × tommd quits (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 260 seconds)
18:34:47 wootehfoot joins (~wootehfoo@user/wootehfoot)
18:39:35 Lycurgus joins (~juan@98.4.112.204)
18:42:11 <hololeap> sshine: it's the noise you make when someone tells you haskell will never break into the mainstream
18:44:38 <Lycurgus> hs from 1st principles, i was gonna guess gigglesnort
18:47:28 max22- joins (~maxime@2a01cb08833598007ff170d7dad3fd31.ipv6.abo.wanadoo.fr)
18:50:23 × Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Remote host closed the connection)
18:52:38 neurocyte01 joins (~neurocyte@45.93.111.147)
18:52:38 × neurocyte01 quits (~neurocyte@45.93.111.147) (Changing host)
18:52:38 neurocyte01 joins (~neurocyte@user/neurocyte)
18:55:22 Chai-T-Rex joins (~ChaiTRex@user/chaitrex)
18:58:13 yinghua joins (~yinghua@2800:2121:1400:1db:b16d:d359:384:92aa)
19:00:36 × yinghua quits (~yinghua@2800:2121:1400:1db:b16d:d359:384:92aa) (Quit: Leaving)
19:03:59 yinghua joins (~yinghua@2800:2121:1400:1db:b16d:d359:384:92aa)
19:04:22 sander joins (~sander@user/sander)
19:07:50 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
19:19:31 <awpr> > let buffalo = fmap -- after reading this morning's backlogs about unification
19:19:33 <lambdabot> <no location info>: error:
19:19:33 <lambdabot> not an expression: ‘let buffalo = fmap -- after reading this morning's b...
19:20:56 <hpc> lol
19:24:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
19:30:42 justsomeguy joins (~justsomeg@user/justsomeguy)
19:31:32 <sm> someone should write PFFFH
19:33:01 <justsomeguy> Programming functionally from finnish hotels?
19:33:37 <awpr> Profunctors and Functors For Fledgling Haskellers
19:33:41 <maerwald> any good finnish hotels for coding haskell?
19:33:48 <sm> Programmers' Follies, Failures and Fun with Haskell ?
19:36:54 × neurocyte01 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
19:37:44 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
19:37:53 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
19:38:13 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
19:38:18 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
19:38:34 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
19:38:59 neurocyte01 joins (~neurocyte@45.93.111.147)
19:38:59 × neurocyte01 quits (~neurocyte@45.93.111.147) (Changing host)
19:38:59 neurocyte01 joins (~neurocyte@user/neurocyte)
19:39:09 <monochrom> In Soviet Russia, principles form first haskell? >:)
19:41:15 <monochrom> I don't want haskell to be mainstream.
19:41:56 <monochrom> People are in delusional denial of what would happen if haskell went into mainstream.
19:42:16 <maerwald> that means you're basically not pro Haskell Foundation
19:42:24 <monochrom> It would mean haskell would be changed by mainstream, not mainstream changed by haskell. Don't be naïve.
19:42:42 <monochrom> Do you want haskell to adopt mainstream values?
19:43:13 <monochrom> For example utter disrespect of types?
19:43:52 <sm> Programmers' Fabulous Fantasies For Haskell ?
19:44:02 <monochrom> The "I'm bad at math, and proud of it" anti-intellectual attitude?
19:44:44 <monochrom> Note that that attitude means that even our "foldr :: (a -> b -> b) -> ..." is "too advanced, PhD level".
19:44:54 <maerwald> I was good at math, but I remember none of it. Does that count?
19:45:09 acidjnk joins (~acidjnk@p200300d0c703cb488c4c1d5595111d0b.dip0.t-ipconnect.de)
19:45:15 <awpr> also that it's too hard to learn the word "Endo" as "function that returns the same type it accepts"
19:45:35 <monochrom> No. Haskell just needs the aptitude, not the memory.
19:45:52 <maerwald> I mean come on... how would you keep those things in memory if you have no exposure. And most coding gives you no exposure.
19:46:06 <awpr> _disclaimer: any similarity to current topics of discussion in any other media is purely coincidental and not to be construed as passing judgment on any other forum_
19:46:26 <monochrom> Here is an example of being bad at math in a way that hinders learning Haskell.
19:46:44 <monochrom> Suppose I define f(x) = x+1 and g(x) = 2*x, and now ask you about f(g(x)).
19:47:16 <monochrom> Here is some people's mental model that leads them to failure. You won't believe it, but I saw it happen.
19:47:38 <monochrom> They think of "x" as a global variable and there is only one global x.
19:47:56 <maerwald> that's rough
19:48:02 <sshine> does HLS understand 'default-extensions'? I have OverloadedStrings listed there, and I get a String/Text error in haskell-mode + lsp-haskell in Emacs.
19:48:14 <maerwald> is x an object or a class?
19:48:16 <maerwald> :D
19:48:21 <monochrom> So for example if I start talking about f(g(5)), their trouble is that now x=5 and also x=g(5) and also x=g(x).
19:49:19 <monochrom> You don't remember the quadratic formula, but you still retain your skill of plugging in, you have a correct mental model of functions. That's all I need.
19:49:31 <awpr> to be fair it's easy to mix up xs in different scopes when evaluating mentally, even if you know in principle that they're unrelated things
19:49:35 <hpc> this is why haskell has unicode support, so you can have 144,762 variables instead of 26
19:49:49 <monochrom> haha
19:49:50 <sm> sshine: for me, most things HLS seem to depend on the phase of the moon...
19:50:09 <sshine> https://github.com/haskell/haskell-language-server/issues/590
19:50:15 <monochrom> Well 144762 variables still can't help you with f(5) + f(6).
19:50:43 <awpr> which is to say, doing capture-avoiding substitution in my head isn't the easiest thing
19:51:45 <awpr> huh, I just realized I reason about `f(g(x))` in something more akin to point-free form, i.e. interpret `f` into like "add one" and `g` into "double"
19:52:01 <monochrom> Another mainstream value is banning recursion.
19:52:40 <sshine> sm, my project is actually ghc-8.10, as that issue suggests would work. but I'm betting that the hlint my emacs refers to is compiled against another version.
19:52:54 <monochrom> I would love to be one of the hippies and soften that to "they just avoid recursion" but no, there are companies that explicitly ban recursion in their code base.
19:53:39 <monochrom> On the very ground that "we want to hire employees who can't deal with recursion".
19:53:50 <sm> sshine: sounds likely.. unfortunately there are still so many ways for things to go wrong, and not enough easy troubleshooting techniques
19:54:06 <awpr> is that a _value_, or an observation that recursion in C-family languages is just a shorthand for "technically-O(1) algorithm for computing stack overflows"
19:54:18 sm is a little down on HLS as it hasn't been working in some projects lately. It'll pass
19:54:32 <awpr> ah, if it's about hiring then it sounds like a value
19:54:35 <maerwald> my manager once said that "coders -> coders who understand recursion -> coders who understand dynamic programming"
19:54:46 <monochrom> It is a value. The reason for banning recursion is perceived human difficulty, not perceived machine penalty.
19:55:01 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
19:55:32 awpr wants to see an inductively-defined microservice
19:55:44 kenran joins (~kenran@200116b82b42930064c9f17a2d060773.dip.versatel-1u1.de)
19:55:58 <maerwald> I'd probably ban effects system in my company
19:57:06 <monochrom> gcc does TCO very well, and I suspect many other C compilers. You ought to take C off the "C-family" you have in mind. :)
19:57:36 <hpc> monochrom: if you're a C shop you ban pointers and malloc instead
19:58:18 <monochrom> I would be OK with "Java-family" and if it included javascript.
19:58:38 <awpr> how about just "non-Hindley-Milner family"
19:58:47 gehmehgeh joins (~user@user/gehmehgeh)
19:58:55 <Hecate> monochrom: damn, I had no idea gcc had support for TCO
19:58:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
19:59:10 <awpr> Python, C, Perl, Turing machines, it's all the same
19:59:24 <monochrom> You have to turn on -O2. But it has been there for decades.
20:00:15 <maerwald> I think I used recursion in C once
20:00:16 <monochrom> This is why when I was young I said "people write-protect their brains upon graduation or 21-yo"
20:01:05 <Hecate> monochrom: wait, has it been here for *decades* but not in a "you can absolutely, always rely on it" way?
20:01:33 <Hecate> Because I'm reading StackOverflow posts and apparently you shouldn't rely on this behaviour being brought to you by the C compiler
20:01:53 <Hecate> unless you're doing "__attribute__((musttail))"
20:02:02 <Hecate> (which is clang-specific
20:02:03 <Hecate> )
20:02:04 <monochrom> Put it this way, I have never seen a failure example.
20:02:23 <monochrom> And I wouldn't trust stackoverflow either.
20:02:29 <Hecate> ah, quite unfortunately this is very much not in line with what C is all about :P
20:02:34 × qbt quits (~edun@user/edun) (Remote host closed the connection)
20:02:51 <monochrom> I can be talked into "you don't know that you can always use gcc, so don't use gcc-specific features".
20:02:57 <awpr> I mean, writing code that isn't capable of being a tail-call is pretty common. recursion over a binary tree -> only one of two is a tail call at most; doing any postprocessing on the recursive result -> not a tail call unless GCC is very heroic about code motion; etc.
20:03:14 <monochrom> But if I already know that it's gcc, "it randomly decides not to optimize" is absurd.
20:03:41 <monochrom> And instead, I have seen an example of stackoverflow being wrong.
20:03:50 <awpr> is it possible "randomly" is code for "I didn't understand my code was not tail-call-compatible"?
20:04:41 <Hecate> monochrom: to be extremely honest I only do two (mutually exclusive) things when I code in C: Either I overfit my code for one precise compiler, or I keep the standard in mind and then everything is UB :P
20:04:45 <monochrom> No, it means that I have not changed by code, I at most upgrade to a newer gcc version.
20:04:51 <justsomeguy> stackoverflow is wrong so often, I don't know people even us it.
20:05:01 <justsomeguy> s/us it/use it/
20:05:47 <awpr> monochrom: right, I meant if you encounter people in the wild suggesting GCC "randomly" doesn't TCO, perhaps the truth is they incorrectly merged the cases where
20:06:00 <awpr> where TCO is possible and happens with the cases where it's impossible and doesn't
20:06:40 <monochrom> Suppose you want to know whether stdin will hit EOF the next time you read one byte. Stackoverflow will suggest fseek(to the end) and see if ftell says 0.
20:06:50 <monochrom> That's how wrong stackoverflow is.
20:07:12 <sshine> sm, do you fall back on ghcid or just alt-tabbing and recompiling?
20:07:55 <monochrom> And the only reason I know is because I put that question on exam, then my TAs noticed that several students gave that same wrong answer, and we thought of "maybe the students googled it"
20:11:01 <maerwald> https://git.io/JzqXg ...this C recursion likely doesn't optimize well :p
20:11:25 <Hecate> monochrom: excellent
20:12:15 <Hecate> maerwald: why so?
20:12:35 <maerwald> there are two
20:12:59 <maerwald> I remember it blowing up
20:13:08 <Hecate> oh indeed
20:13:31 <monochrom> Well yeah I had T in TCO, I don't expect smart use-CPS-to-enable-TCO either.
20:13:39 <maerwald> but it kinda fits the project
20:14:00 <monochrom> And it is unwise to get CPS involved anyway.
20:14:36 enikar paste here the first anwser find with ddg on stackoverflow: https://stackoverflow.com/questions/1428911/detecting-eof-in-c
20:14:49 <monochrom> If you have a genuine non-tail call, CPS just trades stack space for thunk space.
20:15:33 <monochrom> And if you cite "defunctionalization" after that, you just trade thunk space back for user-defined stack space.
20:15:44 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
20:16:23 <monochrom> You are not saving space, you're just rebranding.
20:18:43 <sm> sshine: yes ghcid is my usual fallback
20:19:25 <sm> or sometimes, stack build --fast --file-watch
20:19:26 <maerwald> coding without instant feedback is healthy
20:19:50 <monochrom> enikar: Enjoy https://stackoverflow.com/questions/47320496/how-to-determine-if-stdin-is-empty/47320694
20:19:50 <sm> sometimes, yes.. I think it depends what you're doing
20:20:14 <maerwald> sm: coding
20:20:16 <maerwald> :D
20:20:25 <monochrom> Enjoy the fact that the voice of reason, "getchar, check, ungetchar" carries a negative score.
20:20:44 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
20:21:26 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
20:22:02 × oxide quits (~lambda@user/oxide) (Ping timeout: 260 seconds)
20:23:42 <enikar> monochrom: very bad, I agree, but my search was "How to detect the end of file in C?"
20:24:05 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
20:24:12 <monochrom> My students found that one because my exam question wording was "stdin ... empty ..."
20:24:50 <enikar> ok, they even didn't reformulate
20:24:56 <monochrom> I think it's a good thing that a question's wording leads to googling for the wrong thing.
20:25:59 <monochrom> There was one time I consciously arranged for that.
20:26:15 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
20:26:33 <kenran> Is anyone of you perhaps using fourmolu in haskell-mode with Emacs? I'm seeing "ended with errors", but there are no errors to be seen, and it works well on the command line
20:26:44 <monochrom> I once gave an assignment that amounts to a version of the probability monad. (I chose a free monad form, i.e., a decision tree.)
20:27:13 <monochrom> Clearly, if I called it "probability monad", it's way too googlable.
20:27:38 <monochrom> It was a stroke of genius that I thought up calling it "random monad".
20:27:56 <monochrom> It's way too googlable too but you'll get very misled.
20:28:15 <monochrom> Indeed I had a very lost student who emailed me "is it OK to import Control.Monad.Random?"
20:28:44 <enikar> ah!
20:31:17 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
20:31:40 System123 joins (~System123@net-37-179-171-3.cust.vodafonedsl.it)
20:39:24 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
20:41:09 geekosaur joins (~geekosaur@xmonad/geekosaur)
20:43:48 × sander quits (~sander@user/sander) (Remote host closed the connection)
20:48:10 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 260 seconds)
20:49:52 mikoto-chan joins (~mikoto-ch@83.137.2.250)
20:54:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
20:55:04 chris joins (~chris@81.96.113.213)
20:55:07 chris is now known as Guest3790
20:57:22 × brettgilio quits (~brettgili@x-node.gq) (Ping timeout: 252 seconds)
20:57:59 Pickchea joins (~private@user/pickchea)
21:01:28 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:01:40 × System123 quits (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Read error: Connection reset by peer)
21:02:18 System123 joins (~System123@net-37-179-171-3.cust.vodafonedsl.it)
21:04:54 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
21:05:40 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
21:07:40 Lord_of_Life_ is now known as Lord_of_Life
21:11:55 × fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
21:11:57 pavonia joins (~user@user/siracusa)
21:12:26 × neo1 quits (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 260 seconds)
21:21:29 × terrorjack quits (~terrorjac@ec2-54-95-39-30.ap-northeast-1.compute.amazonaws.com) (Remote host closed the connection)
21:22:26 terrorjack joins (~terrorjac@ec2-54-95-39-30.ap-northeast-1.compute.amazonaws.com)
21:22:43 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 252 seconds)
21:25:49 justsomeguy joins (~justsomeg@user/justsomeguy)
21:27:33 × System123 quits (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Remote host closed the connection)
21:29:10 × max22- quits (~maxime@2a01cb08833598007ff170d7dad3fd31.ipv6.abo.wanadoo.fr) (Quit: Leaving)
21:30:53 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:33:35 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:36:20 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
21:38:54 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
21:41:14 geekosaur joins (~geekosaur@xmonad/geekosaur)
21:42:22 machinedgod joins (~machinedg@24.105.81.50)
21:43:28 × kenran quits (~kenran@200116b82b42930064c9f17a2d060773.dip.versatel-1u1.de) (Quit: WeeChat info:version)
21:46:25 × sheddow quits (~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6) (Ping timeout: 256 seconds)
21:47:20 max22- joins (~maxime@2a01cb0883359800b763d25c3c1fa8b3.ipv6.abo.wanadoo.fr)
21:48:40 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 240 seconds)
21:49:30 × max22- quits (~maxime@2a01cb0883359800b763d25c3c1fa8b3.ipv6.abo.wanadoo.fr) (Client Quit)
22:05:01 × jstolarek quits (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 252 seconds)
22:07:16 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
22:07:52 × Guest3790 quits (~chris@81.96.113.213) (Remote host closed the connection)
22:08:10 tfeb joins (~tfb@88.98.95.237)
22:08:29 chris joins (~chris@81.96.113.213)
22:08:33 chris is now known as Guest8163
22:12:12 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
22:13:08 × Guest8163 quits (~chris@81.96.113.213) (Ping timeout: 265 seconds)
22:14:14 __monty__ joins (~toonn@user/toonn)
22:14:39 × __monty__ quits (~toonn@user/toonn) (Client Quit)
22:14:58 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 260 seconds)
22:23:09 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:25:40 × tfeb quits (~tfb@88.98.95.237) (Quit: died)
22:34:13 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:35:27 chris joins (~chris@81.96.113.213)
22:35:30 chris is now known as Guest359
22:36:31 × Gurkenglas quits (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) (Ping timeout: 252 seconds)
22:36:51 syntactic_sugar joins (~amoljha@2601:644:8601:2e30::822c)
22:36:58 lbseale joins (~lbseale@user/ep1ctetus)
22:39:25 betelgeuse joins (~betelgeus@94-225-47-8.access.telenet.be)
22:40:20 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
22:41:45 × acidjnk quits (~acidjnk@p200300d0c703cb488c4c1d5595111d0b.dip0.t-ipconnect.de) (Ping timeout: 268 seconds)
22:42:10 × jtomas_ quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
22:42:19 × syntactic_sugar quits (~amoljha@2601:644:8601:2e30::822c) (Quit: WeeChat 3.1)
22:42:43 machinedgod joins (~machinedg@24.105.81.50)
22:47:58 × zer0bitz quits (~zer0bitz@dsl-hkibng31-54fafc-123.dhcp.inet.fi) (Ping timeout: 252 seconds)
23:12:26 × Guest359 quits (~chris@81.96.113.213) (Remote host closed the connection)
23:12:42 × TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8)
23:13:03 chris joins (~chris@81.96.113.213)
23:13:04 × Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Ping timeout: 265 seconds)
23:13:06 Guest21 joins (~Guest21@pool-96-252-123-136.bstnma.fios.verizon.net)
23:13:06 chris is now known as Guest3574
23:15:26 proofofkeags_ joins (~proofofke@97-118-134-2.hlrn.qwest.net)
23:15:58 <Guest21> What is an example of a type that is a functor that you cannot write a valid ‘join :: f (f a) -> f a’ for?
23:16:50 cuz joins (~user@2601:182:cc02:8b0:c4d:9139:bf18:4cf7)
23:17:24 <Cajun> (btw its the backtick ` for the monospace font, it should be on the same key as the tilde ~)
23:17:45 × Guest3574 quits (~chris@81.96.113.213) (Ping timeout: 260 seconds)
23:18:01 <Guest21> oh ok
23:18:04 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
23:21:05 <geekosaur> ZipList, I think
23:21:32 <geekosaur> because you never get aroiund to joining, because both results are infinite
23:22:38 <geekosaur> (ZipList is a newtype over lists which has an Applicative instance but no Monad instance)
23:22:56 <hpc> you can still write something with join's type, it just doesn't obey the laws
23:23:03 <geekosaur> yeh
23:24:08 <Guest21> join :: [[a]] -> [a]. Ok I’m gonna study this one. I’ve seen this discussed as a sort of canonical example of a type that is a Applicative but not a Monad
23:24:24 <hpc> [] is very much a Monad
23:24:29 <hpc> ZipList is different
23:24:32 <geekosaur> that's a normal list. look at how the ZipList Applicative is defined
23:24:41 <Guest21> Right ziplist wraps this
23:24:48 <hpc> https://hoogle.haskell.org/?hoogle=ZipList
23:25:58 <Cajun> https://paste.tomsmeding.com/dd6I1dBV is the applicative instance specifically
23:28:17 System123 joins (~System123@net-37-179-171-3.cust.vodafonedsl.it)
23:30:00 enikar thought, join works only with monads (and it can be use to define monad instead of bind)
23:32:01 <geekosaur> correct
23:33:03 <geekosaur> well, kinda-sorta. you can define join for more things than monads, but you can't then go on to define a law-abiding monad
23:33:10 × System123 quits (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 252 seconds)
23:33:55 <geekosaur> like as above where you can define join for ZipLists but the result doesn't obey the monad laws
23:34:00 <hpc> fun fact, there was once a type class that you couldn't write an unlawful instance for, called Pointed
23:34:05 <hpc> which consisted of just pure from Applicative
23:34:06 <geekosaur> this is why there are laws separate from the function definitions
23:34:17 smitop7 joins (~smitop@user/smitop)
23:34:24 <hpc> once people realized that though, the class became rather pointless
23:34:48 koz- joins (~koz@121.99.240.58)
23:34:50 <geekosaur> Haskell's type system isn't strong enough to capture many typeclass laws
23:34:57 <hpc> (the laws it had were actually free theorems)
23:35:08 nitrix_ joins (~nitrix@ns569831.ip-51-79-81.net)
23:35:57 × smitop quits (~smitop@user/smitop) (Quit: Ping timeout (120 seconds))
23:35:57 smitop7 is now known as smitop
23:35:57 × koz quits (~koz@121.99.240.58) (Quit: ZNC 1.7.5 - https://znc.in)
23:35:57 × nitrix quits (~nitrix@user/nitrix) (Quit: Genius is one percent inspiration and ninety-nine percent perspiration)
23:36:23 <geekosaur> tbh I thought Pointed never really existed outside the Typeclassopedia because it was known to not be useful
23:36:42 <Guest21> geekosaur: are there languages with a strong enough type system that they can prove type class laws at compile time?
23:37:03 <geekosaur> proof checking languages like Idris and Agda, I believe
23:37:17 <geekosaur> (note that this doens't mean they're easy or cheap)
23:37:29 <Guest21> Ok I didn’t know these languages used typeclasses
23:37:57 <geekosaur> I'm not sure Idris does formally but you can describe them in it
23:38:16 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
23:39:57 slack1256 joins (~slack1256@191.126.227.79)
23:42:58 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
23:44:52 × MQ-17J quits (~MQ-17J@8.21.10.6) (Ping timeout: 268 seconds)
23:45:34 hammock joins (~Hammock@2600:1700:19a1:3330:a2d6:386:8cfd:4ac5)
23:47:28 <Guest21> Do Agda programmers look at Haskell somewhat similarly to Haskell programmers look at a dynamically typed language? For example in my Perl code I always worry in the back of my head that I’m gonna do something accidentally try to equate two strings with (==)
23:47:47 <Guest21> Err didn’t mean to enter so fast
23:48:16 <Guest21> Anyways I wonder if Agda people see writing an unlawful type class instance equally as dangerous
23:49:26 <Guest21> writing an illegal typeclass instance would be even worse because the program wouldn’t halt
23:50:24 <Guest21> My perl example is a poor one
23:52:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
23:58:32 × Guest21 quits (~Guest21@pool-96-252-123-136.bstnma.fios.verizon.net) (Quit: Client closed)

All times are in UTC on 2021-09-18.