Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,804,055 events total
2021-08-12 01:59:26 Guest14 joins (~Guest14@186.136.54.215)
2021-08-12 02:00:43 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
2021-08-12 02:05:21 × cheater quits (~Username@user/cheater) (Ping timeout: 248 seconds)
2021-08-12 02:05:47 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Ping timeout: 268 seconds)
2021-08-12 02:06:08 <DigitalKiwi> "i went to harvard" "really?" "school of computing" "amazing!" "ok what i really mean to say is that i turned on a computer once" "..."
2021-08-12 02:09:02 × lbseale quits (~lbseale@user/ep1ctetus) (Read error: Connection reset by peer)
2021-08-12 02:09:14 <Axman6> "Really?" "Ok, no, I just keep my todo list and documents separate"
2021-08-12 02:10:44 <DigitalKiwi> what's a todo list
2021-08-12 02:11:14 <DigitalKiwi> i'd like to trade my todo list for a toDONE list
2021-08-12 02:11:22 <Axman6> ... a list of things to do...
2021-08-12 02:11:37 <Axman6> that's a done list
2021-08-12 02:11:57 <DigitalKiwi> https://twitter.com/ArchKiwi/status/1422703998549860352?s=20
2021-08-12 02:12:33 <DigitalKiwi> because i am SO DONE with computers ;D
2021-08-12 02:12:43 <DigitalKiwi> gotta let me finish my jokes ;(
2021-08-12 02:17:07 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
2021-08-12 02:17:12 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Remote host closed the connection)
2021-08-12 02:17:53 cheater joins (~Username@user/cheater)
2021-08-12 02:18:07 × td_ quits (~td@muedsl-82-207-238-098.citykom.de) (Ping timeout: 268 seconds)
2021-08-12 02:19:52 td_ joins (~td@94.134.91.94)
2021-08-12 02:19:53 Matthias1 joins (~Matthias1@2603-8001-b545-4900-682c-3ed2-deff-6231.res6.spectrum.com)
2021-08-12 02:21:42 × Guest14 quits (~Guest14@186.136.54.215) (Quit: Client closed)
2021-08-12 02:22:07 <nshepperd> mine is a todon't list
2021-08-12 02:23:29 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 248 seconds)
2021-08-12 02:24:02 endlesseditions joins (~endlessed@server.zane.wiki)
2021-08-12 02:24:36 endlesseditions is now known as endless
2021-08-12 02:25:52 × fjvallarino quits (~fjvallari@186.136.54.215) (Quit: Leaving...)
2021-08-12 02:26:37 <Axman6> Just call it what it is, a guilt list
2021-08-12 02:26:38 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
2021-08-12 02:26:38 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (copper.libera.chat (Nickname regained by services)))
2021-08-12 02:26:38 finn_elija is now known as FinnElija
2021-08-12 02:29:25 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-12 02:29:36 jess joins (~jess@libera/staff/jess)
2021-08-12 02:34:41 slack1256 joins (~slack1256@181.203.38.2)
2021-08-12 02:36:53 <slack1256> Is the current advice for typeclasses without laws "don't"?
2021-08-12 02:37:02 × Guest8327 quits (~chris@81.96.113.213) (Remote host closed the connection)
2021-08-12 02:37:18 cwraith is now known as c_wraith
2021-08-12 02:38:08 <slack1256> What is the alternative to codifiying "business effects"? for example a UserQuerCapability with a single method `getUser :: Id -> m User` that gets an user from the DB. It doesn't have any laws, but it useful for mocking (via quickcheck and ReaderT).
2021-08-12 02:40:00 <c_wraith> the usual alternative is to just use higher-order functions
2021-08-12 02:40:27 <c_wraith> Whether with the ReaderT IO pattern, or something more complicated
2021-08-12 02:40:49 × hgolden quits (~hgolden2@cpe-172-114-84-61.socal.res.rr.com) (Quit: Konversation terminated!)
2021-08-12 02:41:13 <c_wraith> then instead of dispatching based on type, you use the same type everywhere and initialize the functions in scope differently
2021-08-12 02:41:30 <slack1256> Is that exposed on some blogpost? I would like to see a example.
2021-08-12 02:41:54 chris joins (~chris@81.96.113.213)
2021-08-12 02:41:58 chris is now known as Guest4783
2021-08-12 02:42:26 hgolden joins (~hgolden2@cpe-172-114-84-61.socal.res.rr.com)
2021-08-12 02:42:38 × epolanski quits (uid312403@id-312403.brockwell.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-12 02:43:13 × myShoggoth quits (~myShoggot@97-120-70-214.ptld.qwest.net) (Ping timeout: 248 seconds)
2021-08-12 02:44:43 × Matthias1 quits (~Matthias1@2603-8001-b545-4900-682c-3ed2-deff-6231.res6.spectrum.com) (Remote host closed the connection)
2021-08-12 02:45:00 × endless quits (~endlessed@server.zane.wiki) (Quit: The Lounge - https://thelounge.chat)
2021-08-12 02:45:11 endless joins (~endlessed@server.zane.wiki)
2021-08-12 02:46:38 × Guest4783 quits (~chris@81.96.113.213) (Ping timeout: 256 seconds)
2021-08-12 02:47:46 × cheater quits (~Username@user/cheater) (Ping timeout: 256 seconds)
2021-08-12 02:51:11 myShoggoth joins (~myShoggot@97-120-70-214.ptld.qwest.net)
2021-08-12 02:54:00 khumba joins (~khumba@user/khumba)
2021-08-12 02:58:41 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 248 seconds)
2021-08-12 03:00:25 Erutuon joins (~Erutuon@user/erutuon)
2021-08-12 03:01:57 chris joins (~chris@81.96.113.213)
2021-08-12 03:02:02 chris is now known as Guest8182
2021-08-12 03:03:13 euouae joins (~euouae@user/euouae)
2021-08-12 03:03:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 248 seconds)
2021-08-12 03:03:30 <euouae> Hello I'm trying to understand traverse
2021-08-12 03:03:48 <euouae> For example in `traverse _ empty = pure empty` in https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Traversable.html#g:9
2021-08-12 03:04:00 <euouae> How is `pure empty` of type `t (f b)`?
2021-08-12 03:04:20 <euouae> I don't understand how `pure` specializes for a Traversable since a Traversable is not Applicative
2021-08-12 03:08:16 × jao quits (~jao@cpc103048-sgyl39-2-0-cust502.18-2.cable.virginm.net) (Ping timeout: 272 seconds)
2021-08-12 03:09:03 <euouae> never mind I misread the type... :(
2021-08-12 03:09:06 <euouae> I get it now
2021-08-12 03:10:16 <euouae> (It is of type `f (t b)` not `t (f b)`...)
2021-08-12 03:14:59 <Cale> euouae: If you know mapM, traverse is just that, but generalised slightly.
2021-08-12 03:16:13 Matthias1 joins (~Matthias1@cpe-76-170-236-166.socal.res.rr.com)
2021-08-12 03:16:16 <Cale> It turns a container of actions into an action that, when executed, executes each of the actions in some order, and builds a similarly-shaped container of results.
2021-08-12 03:16:30 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-12 03:16:43 <euouae> Yeah I'm just learning both Cale
2021-08-12 03:16:51 <Cale> Or rather, sequenceA does exactly that :)
2021-08-12 03:16:57 <euouae> I have some misunderstanding with regards to how it works, I understand the high-level idea
2021-08-12 03:17:25 <Cale> traverse uses the given function to turn the elements of the given container into actions
2021-08-12 03:17:29 <euouae> Luckily the Base docs have a good section called 'Construction' that addresses exactly what I am puzzled with
2021-08-12 03:17:36 × Matthias1 quits (~Matthias1@cpe-76-170-236-166.socal.res.rr.com) (Read error: Connection reset by peer)
2021-08-12 03:17:44 Matthias_ joins (~Matthias1@2603-8001-b545-4900-3152-055a-7434-14e0.res6.spectrum.com)
2021-08-12 03:17:54 <Cale> ah, yeah
2021-08-12 03:18:04 <euouae> Cale: Should the boldface in https://hackage.haskell.org/package/base-4.15.0.0/docs/Data-Traversable.html#g:9 be changed with inline code instead?
2021-08-12 03:18:20 <euouae> This is a minor question but I'm curious if I should bother with a PR
2021-08-12 03:18:27 <Cale> You mean the 'a'?
2021-08-12 03:18:53 <euouae> "We can view a partially built structure *t0 :: T a* as a function *append :: a -> T a* that takes one more element *a* "
2021-08-12 03:19:06 <Cale> I think that might already be inline code, it's just formatted as bold fixed-width text
2021-08-12 03:19:27 <euouae> I don't think it's consistent with other parts of the docs
2021-08-12 03:19:51 <euouae> Maybe it is. Idk
2021-08-12 03:20:59 <Cale> If you're already familiar with IO and do-notation to some extent, it might help to see a specialisation like:
2021-08-12 03:21:07 <Cale> traverse :: [IO a] -> IO [a]
2021-08-12 03:21:07 lavaman joins (~lavaman@98.38.249.169)
2021-08-12 03:21:12 <Cale> traverse [] = return []
2021-08-12 03:21:23 <Cale> oops
2021-08-12 03:21:27 <Cale> traverse f [] = return []
2021-08-12 03:21:49 <Cale> traverse f (x:xs) = do v <- f x; vs <- traverse f xs; return (v:vs)
2021-08-12 03:22:04 <euouae> I get that one
2021-08-12 03:22:10 <euouae> the issue I had is some argument with >> I brought up
2021-08-12 03:22:26 <euouae> It had to do with `sequence` and State
2021-08-12 03:22:41 <euouae> I'm not going to get into it right now before I read that section, but I have another question
2021-08-12 03:22:59 <euouae> Do you think the type for `append` is wrong? Should it be `append :: T a -> a -> T a` instead of `append :: a -> T a`
2021-08-12 03:23:10 × Matthias_ quits (~Matthias1@2603-8001-b545-4900-3152-055a-7434-14e0.res6.spectrum.com) (Remote host closed the connection)

All times are in UTC.