Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,804,462 events total
2021-08-24 23:37:10 <hpc> depend on mtl, and it depends on transformers
2021-08-24 23:38:10 <aegon> kk, thanks. Wierd, saw some stack overflow about one being a replacement for the other with monads-fd / monads-tf
2021-08-24 23:38:38 <geekosaur> mtl is more or less monads-fd
2021-08-24 23:39:08 <geekosaur> monads-tf was an old experimental alternative implementation
2021-08-24 23:39:32 <geekosaur> both were based on transformers iirc
2021-08-24 23:39:42 <hpc> yeah, monads-tf depends on transformers too
2021-08-24 23:40:21 <hpc> fd = functional dependencies, tf = type families
2021-08-24 23:41:04 chris joins (~chris@81.96.113.213)
2021-08-24 23:41:07 chris is now known as Guest4855
2021-08-24 23:44:19 <aegon> hpc: geekosaur: thanks for demystifying things
2021-08-24 23:47:27 × dextaa quits (~DV@user/dextaa) (Ping timeout: 240 seconds)
2021-08-24 23:48:16 <monochrom> There was a historical point of reorganization, before which mtl and transformers were repeating the same labour, after which they divided the labour.
2021-08-24 23:48:27 dextaa joins (~DV@user/dextaa)
2021-08-24 23:49:58 × sjb0 quits (~stephen@1.145.81.71) (Read error: Connection reset by peer)
2021-08-24 23:54:58 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 240 seconds)
2021-08-24 23:55:19 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 252 seconds)
2021-08-24 23:55:44 azeem joins (~azeem@176.201.15.223)
2021-08-25 00:00:07 × Guest4855 quits (~chris@81.96.113.213) (Ping timeout: 240 seconds)
2021-08-25 00:00:47 <hseg> 5 stages of ghc errors: denial, frustration, realization, perseverance, giving up
2021-08-25 00:02:46 <hseg> case in question: thought my type family was injective, not considering eg that (/\x. f x -> f x) a ~ (/\x. f a -> x) (f a)
2021-08-25 00:03:31 <aegon> is there any difference performance wise between let and where blocks?
2021-08-25 00:05:37 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:a8c1:f34:41fc:ef3d)
2021-08-25 00:06:17 delYsid parts (~user@84-115-55-45.cable.dynamic.surfer.at) (ERC (IRC client for Emacs 27.1.50))
2021-08-25 00:07:15 chris joins (~chris@81.96.113.213)
2021-08-25 00:07:19 chris is now known as Guest1826
2021-08-25 00:07:29 sjb0 joins (~stephen@2001:8004:5160:3989:12e9:dcb3:94a7:de9e)
2021-08-25 00:13:47 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 240 seconds)
2021-08-25 00:15:03 × ec_ quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 244 seconds)
2021-08-25 00:18:36 azeem joins (~azeem@176.201.15.223)
2021-08-25 00:20:08 <aegon> is there a way to write this 'cleaner' (remove the dangling return line) https://paste.tomsmeding.com/zlHD7XMQ
2021-08-25 00:20:44 <aegon> these two line do blocks come up now an again and I can't help feeling like i'm missing an opportunity for applicative but i also cant find the right syntax to make it work
2021-08-25 00:21:07 <aegon> i could see how if there were a lens for it
2021-08-25 00:21:39 motherfsck joins (~motherfsc@user/motherfsck)
2021-08-25 00:24:40 <glguy> aegon: looks good
2021-08-25 00:29:27 × alx741 quits (~alx741@186.178.108.43) (Ping timeout: 250 seconds)
2021-08-25 00:30:40 nate1 joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
2021-08-25 00:31:20 davincee joins (~da1dude@112.201.99.74)
2021-08-25 00:34:41 × d0ku quits (~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 248 seconds)
2021-08-25 00:34:47 × nate1 quits (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net) (Ping timeout: 240 seconds)
2021-08-25 00:36:26 Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915)
2021-08-25 00:36:27 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
2021-08-25 00:37:40 Lord_of_Life_ is now known as Lord_of_Life
2021-08-25 00:37:50 lavaman joins (~lavaman@98.38.249.169)
2021-08-25 00:41:27 × epolanski quits (uid312403@id-312403.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
2021-08-25 00:42:43 alx741 joins (~alx741@186.178.109.43)
2021-08-25 00:42:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
2021-08-25 00:48:10 <hseg> dminuoso: so otoh, managed to build my vararg type coercer. http://ix.io/3wSp otoh: a) it is unwieldy to use b) since you can't apply type synonyms, the main use case is inexpressible c) just realized it targets the wrong field anyway
2021-08-25 00:48:29 <hseg> d) it's ugly as sin
2021-08-25 00:54:06 fawful joins (~guy@c-76-104-217-93.hsd1.wa.comcast.net)
2021-08-25 00:55:08 d0ku joins (~d0ku@178.43.56.75.ipv4.supernova.orange.pl)
2021-08-25 00:57:04 <hseg> guess if I was interested in shaving this yak, might want to look into TH'ing this code, but am burnt out on this refactor
2021-08-25 00:57:17 <hseg> especially considering I have other stuff to do
2021-08-25 00:57:25 <hseg> thanks for the help, anyway!
2021-08-25 00:57:28 × hseg quits (~gesh@IGLD-84-228-238-79.inter.net.il) (Quit: WeeChat 3.2)
2021-08-25 01:08:12 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
2021-08-25 01:11:13 × charukiewicz quits (~quassel@irouteince04.i.subnet.rcn.com) (Ping timeout: 252 seconds)
2021-08-25 01:12:40 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 250 seconds)
2021-08-25 01:14:37 charukiewicz joins (~quassel@irouteince04.i.subnet.rcn.com)
2021-08-25 01:16:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
2021-08-25 01:18:47 × pbrisbin quits (~patrick@174-081-116-011.res.spectrum.com) (Ping timeout: 240 seconds)
2021-08-25 01:21:08 azeem joins (~azeem@176.201.15.223)
2021-08-25 01:31:44 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 250 seconds)
2021-08-25 01:39:11 azeem joins (~azeem@176.201.15.223)
2021-08-25 01:39:51 lavaman joins (~lavaman@98.38.249.169)
2021-08-25 01:41:23 × xff0x quits (~xff0x@2001:1a81:5333:b100:677b:385:c244:5fff) (Ping timeout: 250 seconds)
2021-08-25 01:43:29 xff0x joins (~xff0x@2001:1a81:536c:3300:eddd:cb7:2ef2:f526)
2021-08-25 01:44:25 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 250 seconds)
2021-08-25 01:46:27 × bontaq quits (~user@ool-18e47f8d.dyn.optonline.net) (Ping timeout: 240 seconds)
2021-08-25 01:49:11 × d0ku quits (~d0ku@178.43.56.75.ipv4.supernova.orange.pl) (Ping timeout: 250 seconds)
2021-08-25 01:50:41 × sjb0 quits (~stephen@2001:8004:5160:3989:12e9:dcb3:94a7:de9e) (Quit: Leaving.)
2021-08-25 01:57:07 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 240 seconds)
2021-08-25 02:03:40 keutoi joins (~keutoi@157.47.90.161)
2021-08-25 02:03:48 × venue quits (~venue@user/venue) (Ping timeout: 250 seconds)
2021-08-25 02:05:10 lavaman joins (~lavaman@98.38.249.169)
2021-08-25 02:05:50 × obs\ quits (~obscur1ty@user/obs/x-5924898) (Read error: Connection reset by peer)
2021-08-25 02:06:07 azeem joins (~azeem@176.201.15.223)
2021-08-25 02:09:31 × machinedgod quits (~machinedg@135-23-192-217.cpe.pppoe.ca) (Ping timeout: 252 seconds)
2021-08-25 02:14:45 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 250 seconds)
2021-08-25 02:19:07 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 240 seconds)
2021-08-25 02:21:19 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
2021-08-25 02:23:17 azeem joins (~azeem@176.201.15.223)
2021-08-25 02:24:11 <thornAvery> im writing my command line arguments at the moment, and i have a bunch of functions of type `foo :: IO (Either (IO ()) Bar)`, in that i have actions that will end the program (either successfully or unsuccessfully), and if it gets to the end of all the steps without ending execution, i get a validetd `Bar` at the end. im finding ive got a lot of ugly nested cases for this, and i feel like theres a much
2021-08-25 02:24:11 <thornAvery> better way of writing it, is this somethnig i can nest the Either monad inside of to get it looking nicer?
2021-08-25 02:25:26 <thornAvery> use case is im taking in my options (which may fail if the options dont parse or if theres an unknown one), then if it didnt fail i want to check if the help flag is set, and if so print help and stop execution, then only if the help flag wasnt set do i want to do a second round of validation, failing with an error or returning the validated options for the rest of my program to use
2021-08-25 02:29:55 × azeem quits (~azeem@176.201.15.223) (Ping timeout: 250 seconds)
2021-08-25 02:30:09 famubu joins (~famubu@user/famubu)
2021-08-25 02:30:21 azeem joins (~azeem@176.201.15.223)
2021-08-25 02:31:14 <thornAvery> I think I wanna use a monad transformer here?
2021-08-25 02:32:01 dajoer joins (~david@user/gvx)
2021-08-25 02:32:05 <famubu> Hi. When we do `a = 1:a`, how does haskell figure out the initial value of `a`? I guess it's got something to do with lazy evaluation but when it does get evaluated, how is value for `1:a` found out when `a` has no initial value? (I'm new to Haskell).
2021-08-25 02:32:26 <famubu> Resultant `a` would be an infinte list of `1`s.
2021-08-25 02:33:40 <Axman6> that's just a cyclic definition, the tail of the list points to the cons that is the definiton of a
2021-08-25 02:34:50 <Axman6> a = (:) 1 a is the same but uusing prefix syntax, which shows that a is a cons constructor which points to 1 and a. so this will be infinite but take up very little memory
2021-08-25 02:36:27 × td_ quits (~td@94.134.91.225) (Ping timeout: 240 seconds)
2021-08-25 02:38:35 td_ joins (~td@muedsl-82-207-238-244.citykom.de)
2021-08-25 02:41:46 <famubu> Axman6: Okay, so the 'initial value' of `a` is not really needed because it's the `cons` that's being appended to. Is it something like that?
2021-08-25 02:42:28 <famubu> Is there some place where we can read more about this? I guess this is a beginner doubt and possibly a well-asked one.
2021-08-25 02:42:45 <dsal> famubu: It's easier if you don't have a programming background. :)
2021-08-25 02:42:53 <dsal> The list a is 1 followed by the list a.
2021-08-25 02:43:04 venue joins (~venue@user/venue)

All times are in UTC.