Home liberachat/#haskell: Logs Calendar

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

00:01:12 Phantastes joins (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net)
00:01:53 × Phantastes quits (~Phantaste@c-67-173-229-120.hsd1.co.comcast.net) (Client Quit)
00:03:19 × proofofkeags_ quits (~proofofke@97-118-134-2.hlrn.qwest.net) (Quit: Leaving)
00:04:50 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
00:10:27 × funsafe quits (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) (Read error: Connection reset by peer)
00:14:13 funsafe joins (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14)
00:14:52 × cuz quits (~user@2601:182:cc02:8b0:c4d:9139:bf18:4cf7) (Ping timeout: 268 seconds)
00:19:05 <Cajun> i would imagine its more of a visionary thing, where the agda programmer is the visionary and the haskell programmer is the still-a-visionary-but-less-so
00:19:33 <Cajun> i wonder whatll happen to agda once (hopefully) DH gets completed
00:20:11 <geekosaur> I suspect Agda will still do dependent programming better
00:20:23 <Cajun> why do you say that?
00:20:34 <geekosaur> Haskell may get support for it but it'll probably never be a great fit
00:21:11 <geekosaur> unless the language changes so much in the process that it's more like Agda than Haskell anyway
00:21:42 <Cajun> it would be a hefty language extension thats for sure
00:21:59 <geekosaur> probably multiple extensions
00:22:16 <geekosaur> the first of which is scheduled to land in 9.2, I think
00:22:58 <Cajun> thats exciting! i also read in the changelog that ghc2021 is getting added as well :)
00:31:02 cuz joins (~user@2601:182:cc02:8b0:c4d:9139:bf18:4cf7)
00:38:24 vicfred joins (~vicfred@user/vicfred)
00:39:34 × lbseale quits (~lbseale@user/ep1ctetus) (Ping timeout: 252 seconds)
00:41:49 × funsafe quits (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14) (Read error: Connection reset by peer)
00:44:53 kayprish joins (~kayprish@46.240.130.158)
00:45:16 × kayprish quits (~kayprish@46.240.130.158) (Remote host closed the connection)
00:46:30 funsafe joins (~funsafe@2601:1c1:4200:e53:2875:5507:42e4:4e14)
00:56:21 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
01:06:24 sneedsfeed joins (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com)
01:08:20 <sneedsfeed> is there a built in to traverse an infinite list evaluating a condition on each element and return the element when that condition is satisfied?
01:09:08 <pavonia> > find (== 10) [1..]
01:09:10 <lambdabot> Just 10
01:10:11 <sneedsfeed> ah okay I was thinking find wouldnt work but if I just expand the test condition to include the element not existing that should stop it from hanging
01:11:54 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:13:02 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:13:48 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
01:13:56 <dsal> @src find
01:13:56 <lambdabot> find p = listToMaybe . filter p
01:14:05 × lemonsnicks quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
01:14:40 <dsal> (usual disclaimer: @src is a way to think about a thing, not necessarily the way to write a thing)
01:14:54 × xff0x quits (~xff0x@2001:1a81:52ed:4100:e126:e3d0:8698:438) (Ping timeout: 268 seconds)
01:15:04 lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
01:15:19 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
01:15:24 × mousey quits (~sky@gateway/tor-sasl/mousey) (Ping timeout: 276 seconds)
01:15:33 <geekosaur> also, haskell is not magic: it doesn't know, for example, that 10 will occur exactly once in [1..] :: Integer
01:16:07 xff0x joins (~xff0x@2001:1a81:5327:1a00:7ba6:6c4f:f759:2f72)
01:16:10 <geekosaur> or that (-1) won't occur at all
01:19:59 lavaman joins (~lavaman@98.38.249.169)
01:21:03 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
01:21:28 mousey joins (~sky@gateway/tor-sasl/mousey)
01:23:40 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 240 seconds)
01:24:27 <sneedsfeed> is there anything else similar to find but more general? So like I can return an arbitrary result instead of just the element?
01:24:53 Guest45 joins (~Guest45@pool-96-252-123-136.bstnma.fios.verizon.net)
01:24:59 × Guest45 quits (~Guest45@pool-96-252-123-136.bstnma.fios.verizon.net) (Client Quit)
01:25:19 <Cajun> sounds like a lens traversal
01:25:44 lerax joins (~user@177-104-241-177.gbsn.com.br)
01:25:50 <Cajun> though im not entirely sure what you mean specifically by "arbitrary result"
01:26:04 chris joins (~chris@81.96.113.213)
01:26:08 chris is now known as Guest6939
01:26:31 <sneedsfeed> Well I'll explain my situation precisely then. I have an infinite list of perfect powers. I need to return the perfect power if its in there, but if its not I need to return Nothing.
01:26:42 neurocyte013 joins (~neurocyte@94.46.67.47)
01:26:43 × neurocyte013 quits (~neurocyte@94.46.67.47) (Changing host)
01:26:43 neurocyte013 joins (~neurocyte@user/neurocyte)
01:26:57 paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
01:27:05 <sneedsfeed> The way I can figure that it isnt in there is if I go far enough into the list without finding it eventually it becomes obvious it isnt there.
01:27:20 <Cajun> you can do that if its ordered. exponential search may be useful here but a simple linear search would be fine
01:27:29 <awpr> `find _ . takeWhile _`
01:27:52 <sneedsfeed> its not fully ordered unfortunately
01:28:04 <sneedsfeed> allPP = [(x^k,(x,k)) | x <- [2..], k <- [2..x]]
01:29:05 × neurocyte01 quits (~neurocyte@user/neurocyte) (Ping timeout: 268 seconds)
01:29:05 neurocyte013 is now known as neurocyte01
01:29:21 <awpr> if you can tell from the present element alone whether you've passed where the one you're looking for would be, then the `takeWhile` approach would work
01:31:08 <dsal> sneedsfeed: Why don't you just not emit things you don't want?
01:31:31 <sneedsfeed> dsal probably because I'm not very smart.
01:31:38 <dsal> It's not actually any different.
01:31:57 lerax parts (~user@177-104-241-177.gbsn.com.br) (IO())
01:32:00 <dsal> sneedsfeed: You just add a `, myPredicate` in that list comprehension.
01:32:05 <dsal> But it's the same problem.
01:32:50 <sneedsfeed> Yea I had something like that before but it wasnt efficient enough, the tests on the problem were recomputing things over and over and timing out the system
01:32:51 <dsal> If it's an infinite list, your find mechanism needs to know when it's not going to find what it's looking for.
01:33:43 <sneedsfeed> I mean I do actually have a solution here. I just don't like it.
01:34:01 × cuz quits (~user@2601:182:cc02:8b0:c4d:9139:bf18:4cf7) (Ping timeout: 268 seconds)
01:34:13 <dsal> I don't even understand your problem. I'm not very mathletic.
01:35:26 <sneedsfeed> https://www.codewars.com/kata/54d4c8b08776e4ad92000835
01:35:28 <Axman6> I'm doing something dumb, how do I specify I want to enable rtsopts in a cabal file? I have ghc-options: -rtsopts=all -O2 in the executable section but it keeps using O1 and not using the rtsopts flag
01:38:50 <awpr> the algorithm you described trying to implement was to have some way of knowing when to stop looking, and return Nothing when that happens. that's what the combination of find and takeWhile gives you -- possibly adding in a `mapAccumL` if the stop condition needs information from past elements
01:40:05 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
01:41:49 × waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Ping timeout: 268 seconds)
01:45:07 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
01:45:32 × alx741 quits (~alx741@186.178.108.187) (Quit: alx741)
01:46:15 <Axman6> ANyone know what the most space efficient map from ByteString to Int would be? Both HashMap and Map seem to use a heap of RAM (no pun intended) and I'd love to have something which unpacked those values into the structure
01:46:20 <sneedsfeed> awpr I just understood what you meant by `find _ . takeWhile _` thats really smart I think its exactly what I need.
01:48:13 × mikoto-chan quits (~mikoto-ch@83.137.2.250) (Ping timeout: 265 seconds)
01:48:32 <awpr> Axman6: https://hackage.haskell.org/package/bytestring-trie might be worth a ...trie
01:48:44 <Axman6> top notch pun, thanks
01:49:00 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
01:49:05 <awpr> not sure if it'll be more space-efficient, but it's at least something different from the other two
01:50:30 <Axman6> wouldn't surprise me if it is, when I wrote ternary-trees it was quite good and being space efficient if you had lots of commmon prefixes
01:54:07 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
01:54:07 allbery_b joins (~geekosaur@xmonad/geekosaur)
01:54:10 allbery_b is now known as geekosaur
01:58:20 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
02:00:25 <Axman6> seems my program consistently uses just under 23GB of RAM no matter which map I use :(
02:00:42 <Axman6> HashMap has been the fastest though
02:05:09 × machinedgod quits (~machinedg@24.105.81.50) (Quit: Lost terminal)
02:07:54 cuz joins (~user@2601:182:cc02:8b0:c4d:9139:bf18:4cf7)
02:11:40 × juhp quits (~juhp@bb220-255-143-175.singnet.com.sg) (Ping timeout: 240 seconds)
02:12:58 × cuz quits (~user@2601:182:cc02:8b0:c4d:9139:bf18:4cf7) (Ping timeout: 260 seconds)
02:15:21 juhp joins (~juhp@bb42-60-204-249.singnet.com.sg)
02:16:40 × juhp quits (~juhp@bb42-60-204-249.singnet.com.sg) (Client Quit)
02:16:54 juhp joins (~juhp@bb42-60-204-249.singnet.com.sg)
02:18:20 × yinghua quits (~yinghua@2800:2121:1400:1db:b16d:d359:384:92aa) (Quit: Leaving)
02:19:26 × td_ quits (~td@94.134.91.211) (Ping timeout: 268 seconds)
02:21:07 td_ joins (~td@muedsl-82-207-238-223.citykom.de)
02:22:52 eruditass joins (uid248673@id-248673.uxbridge.irccloud.com)
02:23:21 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
02:27:49 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
02:27:49 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
02:27:49 wroathe joins (~wroathe@user/wroathe)
02:28:17 × shapr quits (~user@pool-100-36-247-68.washdc.fios.verizon.net) (Ping timeout: 268 seconds)
02:30:08 lavaman joins (~lavaman@98.38.249.169)
02:35:33 <awpr> apparently Stack needs to install GHC in order to answer what GHC it wants to install
02:36:18 <awpr> `stack query compiler wanted` downloads and installs GHC
02:43:47 <Axman6> lovely
02:55:53 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 265 seconds)
02:57:20 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
02:57:33 × slack1256 quits (~slack1256@191.126.227.79) (Remote host closed the connection)
03:00:09 <janus> Axman6: how do you query memory usage?
03:06:55 × vysn quits (~vysn@user/vysn) (Ping timeout: 268 seconds)
03:11:53 slack1256 joins (~slack1256@181.203.34.71)
03:13:33 slac76507 joins (~slack1256@191.126.227.79)
03:13:40 Null_A joins (~null_a@2601:645:8700:2290:f960:d5c5:94b5:c3e6)
03:16:47 × slack1256 quits (~slack1256@181.203.34.71) (Ping timeout: 268 seconds)
03:21:31 × fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
03:25:26 fresheyeball joins (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net)
03:27:56 <Axman6> I have been using /usr/bin/time -l
03:32:36 <janus> Axman6: i thought conventional tools like that could not be used because the RTS will overcommit: https://gitlab.haskell.org/ghc/ghc/-/issues/14193
03:33:38 <janus> Axman6: would that not explain why you always see the same figure? it wouldn't be the actual usage, it would just be the upper bound on how much the RTS thought it could eventually need
03:34:31 <awpr> at least in `top`, the virtual memory stat is garbage, but RSS tends to act like it's responding to actual changes in usage
03:35:18 roboguy_ joins (~roboguy_@2605:a601:afe7:9f00:b84a:ec0a:d36e:74f2)
03:37:27 <clever> https://github.com/ghc/ghc/blob/master/rts/posix/OSMem.c
03:37:40 <clever> it happens somewhere in here, but i cant find it anymore...
03:39:46 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 260 seconds)
03:40:01 meinside joins (uid24933@id-24933.helmsley.irccloud.com)
03:40:26 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
03:41:36 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
03:42:07 benin036932301 joins (~benin@183.82.205.89)
03:45:16 <janus> Axman6: looks like you can get more accurate RSS stats with this flag https://github.com/ghc/ghc/blob/master/rts/posix/OSMem.c#L670
03:45:36 <Axman6> janus: probably, but I'm mostly worried about the amount of memory the system sees it using
03:45:48 <Axman6> I am also using +RTS -s
03:46:01 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
03:46:05 <Axman6> (Productivity for this app is not very good =)
03:46:28 <Axman6> the non-moving GC seems to help runtime qute a bit though~!
03:46:29 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
03:47:10 <awpr> any chance the bytes-to-int mapping is constant throughout large chunks of the program?
03:48:38 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
03:57:30 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
04:00:19 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 252 seconds)
04:00:45 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
04:00:45 cheater joins (~Username@user/cheater)
04:01:10 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
04:05:26 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
04:16:46 Lycurgus joins (~juan@98.4.112.204)
04:19:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
04:21:02 solomon joins (~solomon@cpe-76-168-7-139.socal.res.rr.com)
04:22:55 × hammock quits (~Hammock@2600:1700:19a1:3330:a2d6:386:8cfd:4ac5) (Ping timeout: 252 seconds)
04:27:08 wei2912 joins (~wei2912@112.199.250.21)
04:27:15 lavaman joins (~lavaman@98.38.249.169)
04:41:10 × paddymahoney quits (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com) (Ping timeout: 252 seconds)
04:43:02 paddymahoney joins (~paddymaho@cpe9050ca207f83-cm9050ca207f80.cpe.net.cable.rogers.com)
04:54:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
04:57:18 × arahael quits (~arahael@118.211.178.62) (Ping timeout: 268 seconds)
04:57:58 arahael joins (~arahael@118.211.178.62)
04:59:24 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
05:00:24 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Client Quit)
05:03:25 xsarnik7 joins (xsarnik@lounge.fi.muni.cz)
05:03:25 × xsarnik quits (xsarnik@lounge.fi.muni.cz) (Read error: Connection reset by peer)
05:03:25 xsarnik7 is now known as xsarnik
05:04:40 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
05:05:14 × Guest6939 quits (~chris@81.96.113.213) (Remote host closed the connection)
05:05:51 chris joins (~chris@81.96.113.213)
05:05:55 chris is now known as Guest1406
05:05:56 × keltono quits (~kelton@x-160-94-179-178.acm.umn.edu) (Ping timeout: 268 seconds)
05:05:57 × int-e quits (~noone@int-e.eu) (Ping timeout: 245 seconds)
05:06:06 int-e joins (~noone@int-e.eu)
05:06:13 keltono joins (~kelton@x-160-94-179-178.acm.umn.edu)
05:09:03 azimut_ joins (~azimut@gateway/tor-sasl/azimut)
05:10:19 × Guest1406 quits (~chris@81.96.113.213) (Ping timeout: 252 seconds)
05:10:42 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 276 seconds)
05:13:50 syntactic_sugar joins (~amoljha@2601:644:8601:2e30::822c)
05:15:18 max22- joins (~maxime@2a01cb0883359800da5887c8e8eac50d.ipv6.abo.wanadoo.fr)
05:17:10 System123 joins (~System123@net-37-179-171-3.cust.vodafonedsl.it)
05:19:35 neo1 joins (~neo3@cpe-292712.ip.primehome.com)
05:21:05 <Boarders> What are the good default command line options with criterion to get the most robust numbers?
05:21:09 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:21:09 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
05:21:09 wroathe joins (~wroathe@user/wroathe)
05:21:30 <Boarders> can you even configure that from the command line or do you need to change the benchmark options
05:21:34 × System123 quits (~System123@net-37-179-171-3.cust.vodafonedsl.it) (Ping timeout: 268 seconds)
05:23:03 × nitrix_ quits (~nitrix@ns569831.ip-51-79-81.net) (Changing host)
05:23:03 nitrix_ joins (~nitrix@user/nitrix)
05:23:08 nitrix_ is now known as nitrix
05:25:40 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
05:29:12 <Guest372> :t withFile
05:29:13 <lambdabot> error:
05:29:13 <lambdabot> • Variable not in scope: withFile
05:29:13 <lambdabot> • Perhaps you meant one of these:
05:30:06 <Guest372> in System.IO, withFile has a type Handle, how we can use it?
05:32:03 <Guest372> https://hackage.haskell.org/package/managed-1.0.8/docs/Control-Monad-Managed.html
05:32:33 <Boarders> what do you want to do with the file?
05:32:38 × zaquest quits (~notzaques@5.128.210.178) (Quit: Leaving)
05:34:00 <Guest372> -- A hypothetical function that copies data from one handle to another copy :: Handle -> Handle -> IO ()
05:34:40 <Guest372> this `copy' is not implemented?
05:35:38 <Boarders> copy h1 h2 = do
05:35:38 <Boarders> str <- hGetContents' h1
05:35:38 <Boarders> hPutStr h2 str
05:35:42 zaquest joins (~notzaques@5.128.210.178)
05:35:46 <Boarders> maybe something like that?
05:37:26 <Boarders> also with String this might be a bit inefficient in which case use the corresponding functions from Data.ByteString (but I don't know your use case)
05:37:58 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
05:37:58 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
05:37:58 wroathe joins (~wroathe@user/wroathe)
05:39:04 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
05:39:29 <Guest372> this `copy' doing is very like C copy file, I like to know its definition
05:40:11 <Boarders> I just wrote a definition
05:40:21 <Guest372> ok i will try it
05:40:28 <Boarders> Read from the first handle and write to the second
05:40:50 <Boarders> If you want the more performance version then use Bytestrings to do it
05:42:37 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
05:49:38 × meinside quits (uid24933@id-24933.helmsley.irccloud.com) (Quit: Connection closed for inactivity)
05:51:28 qbt joins (~edun@user/edun)
05:52:42 <Guest372> https://paste.tomsmeding.com/spOOZyZs
05:53:14 × qbt quits (~edun@user/edun) (Remote host closed the connection)
05:54:04 <Guest372> this type doesnt fit, expect type ContT r IO Handle, actual ContT r IO ()
05:54:47 <Guest372> in that lift (copy inHandle outHandle), how I can change it?
05:55:44 Gurkenglas joins (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de)
05:58:56 <Boarders> Did you try changing Handle to ()?
05:59:58 <Guest372> aha, it worked, but why?
06:00:31 <Guest372> inHandle :: Handle, not ()
06:00:39 machinedgod joins (~machinedg@24.105.81.50)
06:02:14 <Guest372> copyFile :: ContT r IO (), but inHandle inside the do notation has Handle not (), that is ok?
06:06:35 <Boarders> I think you should look into how monadic notation works in Haskell and it will answer your question
06:09:43 qbt joins (~edun@user/edun)
06:12:30 × Null_A quits (~null_a@2601:645:8700:2290:f960:d5c5:94b5:c3e6) (Remote host closed the connection)
06:12:59 <Guest372> oh i see, the type is just result type,
06:13:34 × bitmapper quits (uid464869@id-464869.lymington.irccloud.com) (Quit: Connection closed for inactivity)
06:15:24 <dsal> Guest372: you don't need a `do` block for just `hPutStr dest =<< hGetContents src`
06:15:50 <dsal> Or the other way around if you prefer.
06:16:14 <Guest372> ok
06:16:17 <dsal> Or a better type. Heh. I've seen a package somewhere with helpers like that.
06:19:39 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
06:24:25 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
06:26:55 reyaboj joins (~reyaboj@103.69.150.85)
06:27:19 <reyaboj> hi guys
06:27:46 × harveypwca quits (~harveypwc@2601:246:c180:a570:2435:ba7:e573:bc26) (Quit: Leaving)
06:28:34 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:28:58 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
06:31:00 <reyaboj> If I had to summarize: foldr is right associative because it reduces to an expression of the form "<op> <value> <rest-of-fold>" and such an expression produces nesting on <rest-of-fold>, which is to the right, rather than <value>.
06:31:07 <reyaboj> Is my understanding correct there? ^
06:35:50 <hololeap> reyaboj: yeah, foldr f x [1,2,3] = x `f` (1 `f` (2 `f` 3))
06:37:11 <awpr> hmm, it occurs to me to wonder what you'd call a function that's `foldr . flip`
06:37:33 <awpr> the resulting tree of applications of the reducing function associates to the left, but it associates the list elements to the right :)
06:48:00 <reyaboj> wow lol you just broke my brain...let me try to write that down and play with it
06:50:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
06:50:35 <c_wraith> it's still foldr, the combining function just takes its args in the opposite order. There's nothing special about that ordering
06:51:16 <awpr> yeah, I'm just prodding at the idea that foldr's associativity is named after how the call tree of the reducer is associated
06:51:37 <awpr> seems like how it associates the list elements is more fundamental
06:52:25 <c_wraith> look at foldr as an example of converting a data structure to its church encoding. (have to move the arguments around a bit, but whatever)
06:52:53 <c_wraith> Then you see that the swapping the argument order in the reduction function is equivalent to changing the argument order to the (:) constructor
06:53:03 <c_wraith> doesn't actually change anything about the type behavior.
06:53:12 <c_wraith> Just how convention says to write it on paper
06:59:09 × rembo10 quits (~rembo10@wally.codeshy.com) (Quit: ZNC 1.8.2 - https://znc.in)
07:00:05 rembo10 joins (~rembo10@wally.codeshy.com)
07:01:34 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
07:03:23 × roboguy_ quits (~roboguy_@2605:a601:afe7:9f00:b84a:ec0a:d36e:74f2) ()
07:06:57 <reyaboj> Ahhhh
07:07:11 <reyaboj> Thanks guys! I think I understand why I got confused now.
07:09:15 ubert joins (~Thunderbi@91.141.68.10.wireless.dyn.drei.com)
07:11:42 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
07:14:29 ArctVaulMarsHMPJ joins (~pjetcetal@2.95.253.167)
07:14:53 × ArctVaulMarsHMPJ quits (~pjetcetal@2.95.253.167) (Remote host closed the connection)
07:24:54 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 268 seconds)
07:26:31 Topsi joins (~Tobias@dyndsl-095-033-025-122.ewe-ip-backbone.de)
07:31:38 chomwitt joins (~chomwitt@2a02:587:dc15:500:12c3:7bff:fe6d:d374)
07:32:34 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
07:34:05 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
07:36:26 acidjnk joins (~acidjnk@p200300d0c703cb63dd8ae578d0e30132.dip0.t-ipconnect.de)
07:40:31 mc47 joins (~mc47@xmonad/TheMC47)
07:47:02 × euandreh quits (~euandreh@2804:14c:33:9fe5:44da:bf98:4cf1:2d8d) (Remote host closed the connection)
07:47:26 euandreh joins (~euandreh@2804:14c:33:9fe5:3ad2:6f9d:50ec:2663)
07:55:48 pfurla_ joins (~pfurla@53.15.195.173.client.static.strong-in52.as13926.net)
07:58:12 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
07:58:28 × pfurla quits (~pfurla@ool-182ed2e2.dyn.optonline.net) (Ping timeout: 252 seconds)
07:58:47 <ixlun> Hi all, quick question. I've got this code https://pastebin.com/GjYZ6QcT and It's annoying me that I'm having to write the same boilerplate over and over. Is there a way I can abstract out the error handling here for each oepration?
07:59:42 <ixlun> the only way I can think is to create a new typeclass `CurrencyOp`, say and then a function `runCurrencyOp` that does the checking there. However, it seems a little cumbersome for the users as they will have to use `runCurrencyOp` every time they want to perform an operation.
08:01:06 oxide joins (~lambda@user/oxide)
08:02:47 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:04:08 vysn joins (~vysn@user/vysn)
08:04:32 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:49c6:f846:9a95:6c22) (Remote host closed the connection)
08:05:59 hendursa1 joins (~weechat@user/hendursaga)
08:07:05 sheddow joins (~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6)
08:07:12 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
08:07:34 <mc47> ixlun you might find it interesting to let the type-system worry about that if you're ready to play around with some dependent types
08:08:04 <mc47> Maybe check the safe-money package
08:09:08 <mc47> I have a question: I want to lift (&&) to act on predicates that take three arguments, but I was curious if there's an elegant way to write it
08:09:24 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
08:09:27 <opqdonut> ixlun: you could use phantom types: `data Currency cur = Currency Int; add :: Currency a -> Currency a -> Currency a`
08:09:27 × hendursaga quits (~weechat@user/hendursaga) (Ping timeout: 276 seconds)
08:09:39 <mc47> i.e. something more compact than andPQ p q a b c = p a b c && q a b c
08:09:49 <opqdonut> ixlun: of course then all your errors would be at compile-time, which might not be what you want
08:10:43 dsrt^ joins (~dsrt@68.101.54.227)
08:12:10 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 268 seconds)
08:13:16 <mc47> nvm my question, chaining liftM2 is good enough
08:14:00 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
08:14:24 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
08:17:30 geekosaur joins (~geekosaur@xmonad/geekosaur)
08:20:00 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
08:21:37 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
08:26:18 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
08:26:30 Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr)
08:27:36 <ixlun> opqdonut: Yeah, it would have to be runtime checking since I'm reading from various data sources at runtime
08:28:43 <ixlun> mc47: Would going down the dependent types route restrict errors being caught at compile-time?
08:30:49 <tomsmeding> ixlun: do you parse currency values from data first, then get them into some uniform kind (usb/gbp/...), then operate on them?
08:31:16 <ixlun> Yep, that' pretty much exactly what I'm doing
08:31:19 <tomsmeding> i.e. does it make sense to first do a validation pass that your currency kinds are consistent, and then afterwards be able to compute with them without checking kinds?
08:31:34 <mc47> ixlun you'd have a computation block that is protected by the type system and you'd only need to check before going into it
08:32:02 <tomsmeding> data CurrencyType a where GBP :: CurrencyType "GBP" ; USD :: CurrencyType "USD" ; EUR :: CurrencyType "EUR"
08:32:16 <tomsmeding> data Currency a = Currency (CurrencyType a) Int
08:32:39 <tomsmeding> data Some f = forall a. Some (f a) -- from the 'some' package if you don't want to define it yourself
08:33:19 <tomsmeding> then you can have: check :: CurrencyType a -> Some Currency -> Maybe (Currency a)
08:33:44 <tomsmeding> and add :: Currency a -> Currency a -> Currency a which doesn't have to care about unequal currencies
08:34:46 lavaman joins (~lavaman@98.38.249.169)
08:34:59 <tomsmeding> perhaps also: data CurrencyList a = CurrencyList [Currency a] ; checkUniform :: [SomeCurrency] -> Maybe (Some CurrencyList)
08:35:23 <tomsmeding> if you want a list of equal currency kinds but don't care what they actually are
08:35:25 <hololeap> tomsmeding: couldn't you just have `newtype Currency a = Currency Int` and then derive Num, etc with GNTD?
08:35:58 <tomsmeding> hololeap: you could write a Num instance for my type too :p
08:36:19 <tomsmeding> in my experience having a value-level witness of the phantom type is useful
08:36:34 <tomsmeding> but if you don't need it, then yes that's a more light-weight alternative :p
08:36:46 <Cajun> wouldnt a Num instance give you a whole bunch of functions that you dont really want/need? :P
08:37:04 <Cajun> its nice for the (+) and (*) but the other ones are weird for many types
08:37:23 <ixlun> There's defiantly some stuff to digest there, I'll take a look. I've also been looking at the `money` package too which looks pretty nice so I'll see what I can do. Thanks all!
08:37:24 <tomsmeding> I suspect that if you go with the witness-less approach, you'd end up sprinkling 'class KnownCurrency a where knownCurrency :: CurrencyType a' everywhere
08:37:51 <tomsmeding> ixlun: hope I didn't scare you away :p
08:38:22 <hololeap> @where singletons
08:38:22 <lambdabot> I know nothing about singletons.
08:38:33 <mc47> I play around with a wtiness-less approach and it gets very cumbersome very fast, which was really intimidating while just learning about these type trickeries
08:38:42 <mc47> s/play/played/
08:38:56 <tomsmeding> yeah you can define my CurrencyType GADT from your plain ADT using singletons, but I find a direct GADT clearer -- if only for the lack of TH :p
08:39:29 <hololeap> tomsmeding: I agree, I was just thinking of plugging that intro to singletons blog because it's a helpful tutorial
08:39:32 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
08:39:41 <tomsmeding> mc47: if you core happens to not need the witnesses anywhere, the code can get very clean and neat
08:39:48 <tomsmeding> until the moment you want a witness :p
08:40:06 <hololeap> https://blog.jle.im/entry/introduction-to-singletons-1.html
08:40:10 × acidjnk quits (~acidjnk@p200300d0c703cb63dd8ae578d0e30132.dip0.t-ipconnect.de) (Ping timeout: 240 seconds)
08:40:18 <tomsmeding> (never read that, actually never worked with the actual singletons library before tbh)
08:40:47 <hololeap> it basically builds up a strong motivation for the libarary, but shows you how to do it all by hand as well
08:41:27 <mc47> tomsmeding that's probably true, I really just skimmed the surface
08:46:55 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Ping timeout: 252 seconds)
08:52:37 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
09:00:07 × deuslambda[m] quits (~deuslambd@2001:470:69fc:105::c749) (Quit: You have been kicked for being idle)
09:00:07 × Cesionaut[m] quits (~cesionaut@2001:470:69fc:105::dd3b) (Quit: You have been kicked for being idle)
09:01:42 × syntactic_sugar quits (~amoljha@2601:644:8601:2e30::822c) (Quit: WeeChat 3.1)
09:04:34 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 260 seconds)
09:05:02 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
09:14:40 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
09:14:50 <tomsmeding> s/you core/your code/ how did that typo even happen
09:16:34 TranquilEcho joins (~grom@user/tranquilecho)
09:18:22 × ubert quits (~Thunderbi@91.141.68.10.wireless.dyn.drei.com) (Ping timeout: 252 seconds)
09:22:04 azeem joins (~azeem@2a00:801:3c5:e7ed:96db:1881:5af8:10cd)
09:23:45 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
09:24:01 lavaman joins (~lavaman@98.38.249.169)
09:28:16 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
09:30:42 × hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
09:32:05 Null_A joins (~null_a@2601:645:8700:2290:f960:d5c5:94b5:c3e6)
09:41:36 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
09:41:51 × Null_A quits (~null_a@2601:645:8700:2290:f960:d5c5:94b5:c3e6) (Remote host closed the connection)
09:42:42 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
09:43:24 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
09:44:19 geekosaur joins (~geekosaur@xmonad/geekosaur)
09:46:06 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
09:47:20 Null_A joins (~null_a@2601:645:8700:2290:f960:d5c5:94b5:c3e6)
09:48:04 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
09:48:26 × Null_A quits (~null_a@2601:645:8700:2290:f960:d5c5:94b5:c3e6) (Client Quit)
09:54:56 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
10:00:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
10:10:01 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
10:10:52 pfurla joins (~pfurla@ool-182ed2e2.dyn.optonline.net)
10:11:50 hexfive joins (~eric@50.35.83.177)
10:13:38 × pfurla_ quits (~pfurla@53.15.195.173.client.static.strong-in52.as13926.net) (Ping timeout: 260 seconds)
10:13:43 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
10:14:02 Vajb joins (~Vajb@nbptnppvs5wp2vjps-2.v6.elisa-mobile.fi)
10:14:34 × hexfive quits (~eric@50.35.83.177) (Client Quit)
10:14:35 × Vajb quits (~Vajb@nbptnppvs5wp2vjps-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
10:15:10 Vajb joins (~Vajb@85-76-8-105-nat.elisa-mobile.fi)
10:19:50 × Vajb quits (~Vajb@85-76-8-105-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
10:20:33 × benin036932301 quits (~benin@183.82.205.89) (Ping timeout: 265 seconds)
10:20:43 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
10:20:49 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
10:20:56 benin036932301 joins (~benin@183.82.205.89)
10:23:14 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
10:25:58 × kimjetwav quits (~user@2607:fea8:235f:9730:162d:fa69:3f15:a6a5) (Quit: logout)
10:26:26 kimjetwav joins (~user@2607:fea8:235f:9730:eed:cf2e:848e:62b5)
10:27:19 spruit11 joins (~quassel@2a02:a467:ccd6:1:6:b8f5:e5f3:4cce)
10:27:50 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
10:31:08 × spruit11_ quits (~quassel@2a02:a467:ccd6:1:563:f225:f6bf:7d85) (Ping timeout: 268 seconds)
10:39:53 × oxide quits (~lambda@user/oxide) (Ping timeout: 265 seconds)
10:40:21 oxide joins (~lambda@user/oxide)
10:44:05 × Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Ping timeout: 268 seconds)
10:49:00 × max22- quits (~maxime@2a01cb0883359800da5887c8e8eac50d.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
10:49:05 Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr)
10:50:02 jumper149 joins (~jumper149@80.240.31.34)
10:51:39 gehmehgeh joins (~user@user/gehmehgeh)
10:51:41 max22- joins (~maxime@2a01cb08833598008de6b9bad07273d0.ipv6.abo.wanadoo.fr)
11:00:19 × kimjetwav quits (~user@2607:fea8:235f:9730:eed:cf2e:848e:62b5) (Remote host closed the connection)
11:00:45 alx741 joins (~alx741@186.178.108.187)
11:05:10 × hpc quits (~juzz@ip98-169-35-13.dc.dc.cox.net) (Ping timeout: 240 seconds)
11:07:00 hpc joins (~juzz@ip98-169-35-13.dc.dc.cox.net)
11:09:25 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
11:13:40 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 240 seconds)
11:15:25 × sm2n_ quits (~sm2n@user/sm2n) (Ping timeout: 252 seconds)
11:15:48 sm2n joins (~sm2n@user/sm2n)
11:26:20 × max22- quits (~maxime@2a01cb08833598008de6b9bad07273d0.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
11:27:16 x28girl joins (~x28girl@181.46.32.25)
11:28:21 Sose joins (~Sose@mobile-access-6df047-213.dhcp.inet.fi)
11:30:49 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
11:34:13 <Sose> I haven't used Haskell or GHC in a while and I'm a bit confused what version I should use. If I type `ghcup list` (https://gist.github.com/Sose/434044f83f51a091939277dc39c7a20d), I see that 8.10.7 doesn't have the "hls powered" note, but here (https://discourse.haskell.org/t/haskell-language-server-1-4-0-release/3237) it says that for example
11:34:13 <Sose> 8.10.4 is not supported by the newest hls anymore
11:34:48 <maerwald> Sose: 8.10.7 is supported by HLS 1.4.0
11:34:54 <maerwald> you probably have 1.3.0 installed
11:35:16 <Sose> oh okay, so I should just go for ghc 8.10.7 and hls 1.4.0
11:35:35 <Sose> wanted to make sure because on my potato it takes forever to update
11:36:52 × Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Ping timeout: 252 seconds)
11:37:13 <maerwald> "hls-powered" is only wrt the currently installed and *set* version
11:37:16 × haykam2 quits (~haykam@static.100.2.21.65.clients.your-server.de) (Remote host closed the connection)
11:37:25 <Sose> I see, that makes sense. Thanks
11:37:29 haykam1 joins (~haykam@static.100.2.21.65.clients.your-server.de)
11:41:36 jtomas_ joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
11:44:40 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
11:45:21 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
11:46:22 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
11:47:05 Vajb joins (~Vajb@nbptnppvs5wp2vjps-2.v6.elisa-mobile.fi)
11:48:23 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Remote host closed the connection)
11:49:43 × jtomas_ quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Remote host closed the connection)
11:50:06 jtomas_ joins (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net)
11:53:56 × Vajb quits (~Vajb@nbptnppvs5wp2vjps-2.v6.elisa-mobile.fi) (Read error: Connection reset by peer)
11:54:59 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
12:00:13 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
12:01:26 lavaman joins (~lavaman@98.38.249.169)
12:06:53 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
12:07:56 <sshine> I learned something.
12:14:08 × neo1 quits (~neo3@cpe-292712.ip.primehome.com) (Ping timeout: 265 seconds)
12:18:48 × x28girl quits (~x28girl@181.46.32.25) (Quit: Leaving)
12:19:49 x28girl joins (~x28girl@181.46.32.25)
12:19:55 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
12:21:04 × x28girl quits (~x28girl@181.46.32.25) (Changing host)
12:21:04 x28girl joins (~x28girl@user/x28girl)
12:21:37 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
12:21:58 Vajb joins (~Vajb@nbptnppvs5wp2vjps-2.v6.elisa-mobile.fi)
12:23:45 x28_girl joins (~x28girl@user/x28girl)
12:24:10 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 240 seconds)
12:24:51 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
12:25:24 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
12:26:17 × Vajb quits (~Vajb@nbptnppvs5wp2vjps-2.v6.elisa-mobile.fi) (Ping timeout: 245 seconds)
12:27:10 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
12:27:14 geekosaur joins (~geekosaur@xmonad/geekosaur)
12:29:10 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 240 seconds)
12:34:59 Lycurgus joins (~juan@98.4.112.204)
12:36:37 cheater joins (~Username@user/cheater)
12:49:36 max22- joins (~maxime@2a01cb08833598004251d0191641dba9.ipv6.abo.wanadoo.fr)
12:53:03 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
12:53:45 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
12:56:36 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:56:51 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: Connection reset by peer)
12:57:18 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
12:57:40 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
13:00:27 × spruit11 quits (~quassel@2a02:a467:ccd6:1:6:b8f5:e5f3:4cce) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
13:03:41 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
13:05:33 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
13:10:53 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
13:11:46 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2)
13:15:24 Brumaire joins (~quassel@81-64-14-121.rev.numericable.fr)
13:15:38 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 260 seconds)
13:16:18 amahl joins (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi)
13:19:34 yinghua joins (~yinghua@2800:2121:1400:1db:8865:3e5b:fd2e:180)
13:20:47 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: Connection reset by peer)
13:21:15 × max22- quits (~maxime@2a01cb08833598004251d0191641dba9.ipv6.abo.wanadoo.fr) (Ping timeout: 260 seconds)
13:21:28 × _xor quits (~xor@74.215.232.67) (Quit: WeeChat 3.2)
13:25:36 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
13:26:27 _xor joins (~xor@74.215.232.67)
13:26:36 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
13:27:39 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:30:30 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 265 seconds)
13:31:27 fendor joins (~fendor@178.165.185.65.wireless.dyn.drei.com)
13:33:38 max22- joins (~maxime@2a01cb08833598007f19dd049ca78c46.ipv6.abo.wanadoo.fr)
13:45:44 jumper149 joins (~jumper149@80.240.31.34)
13:47:01 × hendursa1 quits (~weechat@user/hendursaga) (Quit: hendursa1)
13:47:27 hendursaga joins (~weechat@user/hendursaga)
13:47:32 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
13:48:01 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
13:49:05 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
13:49:35 Vajb joins (~Vajb@85-76-32-93-nat.elisa-mobile.fi)
13:50:42 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
13:54:11 × Vajb quits (~Vajb@85-76-32-93-nat.elisa-mobile.fi) (Read error: Connection reset by peer)
13:54:38 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
13:56:18 machinedgod joins (~machinedg@24.105.81.50)
13:57:56 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
13:58:12 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
13:59:21 × slac76507 quits (~slack1256@191.126.227.79) (Ping timeout: 268 seconds)
14:00:31 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
14:03:18 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
14:03:54 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
14:05:03 geekosaur joins (~geekosaur@xmonad/geekosaur)
14:05:55 × alx741 quits (~alx741@186.178.108.187) (Ping timeout: 252 seconds)
14:08:50 × cheater quits (~Username@user/cheater) (Ping timeout: 260 seconds)
14:08:53 cheater1__ joins (~Username@user/cheater)
14:08:56 cheater1__ is now known as cheater
14:17:09 × cawfee quits (~root@2406:3003:2077:2758::babe) (Quit: macos update)
14:18:47 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
14:20:14 alx741 joins (~alx741@186.178.109.159)
14:26:35 × chomwitt quits (~chomwitt@2a02:587:dc15:500:12c3:7bff:fe6d:d374) (Ping timeout: 260 seconds)
14:28:51 × sheddow quits (~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6) (Ping timeout: 256 seconds)
14:30:03 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
14:30:59 × x28_girl quits (~x28girl@user/x28girl) (Quit: Leaving)
14:40:38 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
14:48:13 Guest|51 joins (~Guest|51@177.221.250.155)
14:52:50 cawfee joins (~root@2406:3003:2077:2758::babe)
14:53:18 Brumaire_ joins (~quassel@81-64-14-121.rev.numericable.fr)
14:54:14 × Brumaire quits (~quassel@81-64-14-121.rev.numericable.fr) (Ping timeout: 268 seconds)
14:54:35 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds)
14:55:17 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:55:17 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
14:55:17 wroathe joins (~wroathe@user/wroathe)
14:55:52 × rond_ quits (~rond_@2a02:a31a:a23c:f480:2fd7:e087:5546:a438) (Quit: Client closed)
14:58:14 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
14:58:33 Heffalump joins (~ganesh@urchin.earth.li)
14:58:42 × Guest|51 quits (~Guest|51@177.221.250.155) (Quit: Connection closed)
14:59:20 lavaman joins (~lavaman@98.38.249.169)
14:59:30 Vajb joins (~Vajb@2001:999:63:cb56:7735:f6b9:cd89:d4c7)
15:01:39 <Heffalump> Is there a current state of the art when it comes to dynamically loading Haskell? I've looked around a bit, there's plugins (quite old but appears to still build with recent GHCs), ghc-hotswap (doesn't support GHC > 8.4 out of the box) and hint (perhaps the most plausible but appears to have some significant gotchas?)
15:03:18 chris joins (~chris@81.96.113.213)
15:03:21 chris is now known as Guest6996
15:03:36 zer0bitz joins (~zer0bitz@dsl-hkibng31-54fafc-123.dhcp.inet.fi)
15:04:19 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 268 seconds)
15:04:20 × Vajb quits (~Vajb@2001:999:63:cb56:7735:f6b9:cd89:d4c7) (Read error: Connection reset by peer)
15:05:22 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
15:05:44 sheddow joins (~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6)
15:06:12 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
15:12:39 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
15:16:53 haask joins (~harry@92.234.0.237)
15:17:20 × haask quits (~harry@92.234.0.237) (Remote host closed the connection)
15:17:40 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 268 seconds)
15:17:54 <geekosaur> I think all dynamic loading with Haskell has significant gotchas
15:19:19 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
15:23:38 haask joins (~harry@92.234.0.237)
15:23:57 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
15:25:10 × haritz quits (~hrtz@user/haritz) (Ping timeout: 240 seconds)
15:26:40 × Raito_Bezarius quits (~Raito@2a01:e0a:5f9:9681:58c:8b9f:30df:bb6b) (Ping timeout: 260 seconds)
15:27:21 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
15:31:43 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 252 seconds)
15:32:23 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
15:37:59 × wei2912 quits (~wei2912@112.199.250.21) (Quit: Lost terminal)
15:38:54 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
15:39:28 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Remote host closed the connection)
15:46:30 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Ping timeout: 260 seconds)
15:48:40 zebrag joins (~chris@user/zebrag)
15:53:30 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
15:54:42 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
15:54:53 × xff0x quits (~xff0x@2001:1a81:5327:1a00:7ba6:6c4f:f759:2f72) (Ping timeout: 268 seconds)
15:56:44 × cheater quits (~Username@user/cheater) (Ping timeout: 268 seconds)
16:02:40 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
16:08:14 × haask quits (~harry@92.234.0.237) (Remote host closed the connection)
16:10:05 × fresheyeball quits (~fresheyeb@c-71-237-105-37.hsd1.co.comcast.net) (Ping timeout: 268 seconds)
16:10:37 brettgilio joins (~brettgili@x-node.gq)
16:13:00 fresheyeball joins (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net)
16:13:31 __monty__ joins (~toonn@user/toonn)
16:16:39 xff0x joins (~xff0x@2001:1a81:5327:1a00:7ba6:6c4f:f759:2f72)
16:17:22 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 252 seconds)
16:20:23 jakalx parts (~jakalx@base.jakalx.net) ()
16:21:41 Null_A joins (~null_a@2601:645:8700:2290:6daa:6a79:97ab:557)
16:22:48 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
16:23:42 × fresheyeball quits (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
16:23:53 × reyaboj quits (~reyaboj@103.69.150.85) (Ping timeout: 256 seconds)
16:24:30 Guest70 joins (~Guest70@2603-7081-2d42-d2dd-9c58-6b19-d92a-1e33.res6.spectrum.com)
16:26:14 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Remote host closed the connection)
16:26:38 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
16:26:42 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
16:27:08 slowButPresent joins (~slowButPr@user/slowbutpresent)
16:27:46 hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com)
16:28:46 × jespada quits (~jespada@2803:9800:9842:7a62:e945:15a6:5467:94f6) (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:29:39 jakalx joins (~jakalx@base.jakalx.net)
16:40:47 × Guest6996 quits (~chris@81.96.113.213) (Remote host closed the connection)
16:43:02 econo joins (uid147250@user/econo)
16:48:35 alzgh joins (~alzgh@user/alzgh)
16:49:13 × psilospore quits (uid517704@id-517704.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
16:49:19 <alzgh> hello, which channel is more suited if one has question about making PRs to the GHC repo?
16:49:59 <monochrom> Perhaps #ghc
16:50:19 <alzgh> OK, thanks monochrom
16:52:18 jonatan_ joins (~nate@h85-8-60-194.cust.a3fiber.se)
16:52:18 × jonatan_ quits (~nate@h85-8-60-194.cust.a3fiber.se) (Client Quit)
17:01:02 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Ping timeout: 260 seconds)
17:05:42 <sm> Heffalump: clckwrks uses https://hackage.haskell.org/package/web-plugins
17:05:48 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
17:09:10 × qbt quits (~edun@user/edun) (Ping timeout: 252 seconds)
17:10:31 × OscarZ quits (~oscarz@95.175.104.70) (Quit: Leaving)
17:12:07 kimjetwav joins (~user@2607:fea8:235f:9730:7169:b08e:8733:ef08)
17:16:30 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
17:21:24 Lewky joins (~Lewky@146.70.50.74)
17:29:37 × sneedsfeed quits (~sneedsfee@rrcs-173-95-122-169.midsouth.biz.rr.com) (Ping timeout: 256 seconds)
17:32:32 qbt joins (~edun@user/edun)
17:37:12 × Guest70 quits (~Guest70@2603-7081-2d42-d2dd-9c58-6b19-d92a-1e33.res6.spectrum.com) (Quit: Client closed)
17:39:48 jespada joins (~jespada@2803:9800:9842:7a62:edd5:5e74:3ec2:1b19)
17:43:32 Izem joins (~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
17:44:07 <Izem> In haskell, you don't need the notion of a pipe because you can curry functions right?
17:44:36 <Rembane> Izem: assume that that is true, why is it true?
17:47:17 <Izem> I dunno, sorry
17:47:40 <Rembane> Okay, what's a pipe in this context?
17:47:58 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
17:50:00 euandreh_ joins (~euandreh@2804:14c:33:9fe5:b7ad:e92:1630:34c7)
17:50:20 <Izem> similar to a unix pipe, so you can compose functions like so [1 2 3 4 5] | odd | sum would result in 1 + 3 + 5 = 9
17:50:21 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:51:54 × euandreh quits (~euandreh@2804:14c:33:9fe5:3ad2:6f9d:50ec:2663) (Ping timeout: 260 seconds)
17:54:42 <Sose> I think in Haskell people tend to use function composition more rather than piping. So they'd write something like `(sum . filter odd) [1,2,3,4,5]` instead of `[1,2,3,4,5] & filter odd & sum`
17:55:37 <Sose> but there is a pipe operator like that (&) in Data.Function
17:56:08 <Izem> oh ok, that's cool
17:56:47 <Izem> I suspected that was the case but I wasn't sure
17:56:59 justsomeguy joins (~justsomeg@user/justsomeguy)
17:57:21 × justsomeguy quits (~justsomeg@user/justsomeguy) (Client Quit)
17:58:37 <awpr> note it's not specific to lists or sequences, though: it's just applying each function in order. the streaming behavior comes from the list type along with the particular functions being used
17:58:55 <awpr> > 5 & subtract 2 & show
17:58:56 <lambdabot> "3"
18:00:30 lavaman joins (~lavaman@98.38.249.169)
18:02:22 <Sose> to be honest the idea of piping and going in order from left-to-right or top-to-bottom feels a bit more natural to me. I also write Clojure sometimes and there the threading macros (->, ->>) are used a lot
18:04:00 <awpr> Haskell needs backwards lambda syntax to go with the reverse bind operator: `Just (x + 1) <- x/ =<< Nothing`
18:05:20 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
18:05:39 <hpc> just start your file with the unicode RTL override character
18:05:49 × neurocyte01 quits (~neurocyte@user/neurocyte) (Ping timeout: 252 seconds)
18:06:07 <awpr> ... now I'm curious to see what that would do
18:06:53 <awpr> lol, it corrupts the page describing it https://unicode-table.com/en/202E/
18:09:10 <Sose> that's funny :D
18:09:17 <awpr> https://paste.tomsmeding.com/Rif2xq25
18:09:57 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
18:11:41 × Null_A quits (~null_a@2601:645:8700:2290:6daa:6a79:97ab:557) (Remote host closed the connection)
18:12:14 Null_A joins (~null_a@2601:645:8700:2290:6daa:6a79:97ab:557)
18:13:01 <awpr> https://paste.tomsmeding.com/wpEt1pg6 even better
18:18:28 lavaman joins (~lavaman@98.38.249.169)
18:21:05 cheater joins (~Username@user/cheater)
18:22:45 <Cajun> piping gets great when you start using conduits for data processing, which is constant space and quite fast (it also fuses very well iirc)
18:24:12 × max22- quits (~maxime@2a01cb08833598007f19dd049ca78c46.ipv6.abo.wanadoo.fr) (Ping timeout: 245 seconds)
18:24:31 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
18:25:59 Guest1 joins (~Guest1@2603-7081-2d42-d2dd-9c58-6b19-d92a-1e33.res6.spectrum.com)
18:29:18 Everything joins (~Everythin@37.115.210.35)
18:31:57 × solomon quits (~solomon@cpe-76-168-7-139.socal.res.rr.com) (Ping timeout: 256 seconds)
18:32:51 × kimjetwav quits (~user@2607:fea8:235f:9730:7169:b08e:8733:ef08) (Remote host closed the connection)
18:33:08 kimjetwav joins (~user@2607:fea8:235f:9730:b7cd:5acf:16a8:ebad)
18:33:18 × Null_A quits (~null_a@2601:645:8700:2290:6daa:6a79:97ab:557) (Remote host closed the connection)
18:35:37 × kimjetwav quits (~user@2607:fea8:235f:9730:b7cd:5acf:16a8:ebad) (Remote host closed the connection)
18:35:54 kimjetwav joins (~user@2607:fea8:235f:9730:8e90:f10c:b724:9a0a)
18:40:36 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Remote host closed the connection)
18:40:41 × Sose quits (~Sose@mobile-access-6df047-213.dhcp.inet.fi) (Quit: Client closed)
18:41:26 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
18:42:24 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
18:44:23 × Brumaire_ quits (~quassel@81-64-14-121.rev.numericable.fr) (Quit: ran away)
18:50:53 × kimjetwav quits (~user@2607:fea8:235f:9730:8e90:f10c:b724:9a0a) (Remote host closed the connection)
18:51:10 kimjetwav joins (~user@2607:fea8:235f:9730:89c:c105:9071:1b0f)
18:53:31 adamse parts (sid72084@user/adamse) ()
18:55:38 × Guest1 quits (~Guest1@2603-7081-2d42-d2dd-9c58-6b19-d92a-1e33.res6.spectrum.com) (Quit: Client closed)
18:55:58 × x28girl quits (~x28girl@user/x28girl) (Ping timeout: 268 seconds)
18:57:14 × jumper149 quits (~jumper149@80.240.31.34) (Ping timeout: 260 seconds)
18:58:34 max22- joins (~maxime@2a01cb088335980099348db52b55749a.ipv6.abo.wanadoo.fr)
19:00:17 jumper149 joins (~jumper149@80.240.31.34)
19:00:40 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 252 seconds)
19:03:10 tommd joins (~tommd@75-164-130-101.ptld.qwest.net)
19:03:38 tfeb joins (~tfb@88.98.95.237)
19:04:14 __monty__ joins (~toonn@user/toonn)
19:05:53 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
19:06:03 x28girl joins (~x28girl@user/x28girl)
19:08:29 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Read error: Connection reset by peer)
19:08:35 mikoto-c1 joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
19:09:45 <maerwald> how do you parse the version of a cabal file?
19:09:46 kuribas joins (~user@ptr-25vy0i7z6miqkyi8626.18120a2.ip6.access.telenet.be)
19:11:33 <sclv> maerwald: here's a script that as of a few years ago worked fine, as a simple example
19:11:33 <sclv> https://github.com/haskell/cabal/issues/2460#issuecomment-373895722
19:11:53 <sclv> anyway the main point is parsePackageDescrition is the entry point iirc
19:11:56 <maerwald> excellent
19:16:17 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
19:16:27 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
19:18:58 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
19:19:09 × mikoto-c1 quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Quit: mikoto-c1)
19:19:21 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
19:20:37 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
19:22:54 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
19:23:11 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Client Quit)
19:27:53 × dsrt^ quits (~dsrt@68.101.54.227) (Remote host closed the connection)
19:31:04 × fendor quits (~fendor@178.165.185.65.wireless.dyn.drei.com) (Remote host closed the connection)
19:31:54 × tfeb quits (~tfb@88.98.95.237) (Remote host closed the connection)
19:32:20 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
19:33:42 × Everything quits (~Everythin@37.115.210.35) (Quit: leaving)
19:36:35 gioyik joins (~gioyik@gateway/tor-sasl/gioyik)
19:38:14 Pickchea joins (~private@user/pickchea)
19:41:29 solomon joins (~solomon@cpe-76-168-7-139.socal.res.rr.com)
19:41:55 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 252 seconds)
19:42:35 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Remote host closed the connection)
19:42:58 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
19:48:35 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Ping timeout: 260 seconds)
19:49:56 jstolarek joins (~jstolarek@ers4.neoplus.adsl.tpnet.pl)
19:51:48 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
19:51:59 × _xor quits (~xor@74.215.232.67) (Quit: brb)
19:52:57 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
19:56:50 Guest29 joins (~Guest29@93-172-101-61.bb.netvision.net.il)
19:56:58 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Ping timeout: 260 seconds)
20:00:40 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Ping timeout: 252 seconds)
20:02:38 mikoto-chan joins (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be)
20:03:00 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Quit: FinnElija)
20:05:16 × mikoto-chan quits (~mikoto-ch@ip-83-134-2-136.dsl.scarlet.be) (Client Quit)
20:07:56 burnsidesLlama joins (~burnsides@dhcp168-013.wadham.ox.ac.uk)
20:09:07 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
20:09:59 mikoto-chan joins (~mikoto-ch@83.137.2.246)
20:10:34 × Izem quits (~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Ping timeout: 252 seconds)
20:12:16 × Topsi quits (~Tobias@dyndsl-095-033-025-122.ewe-ip-backbone.de) (Read error: Connection reset by peer)
20:12:19 × burnsidesLlama quits (~burnsides@dhcp168-013.wadham.ox.ac.uk) (Ping timeout: 252 seconds)
20:12:52 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
20:13:01 × mikoto-chan quits (~mikoto-ch@83.137.2.246) (Client Quit)
20:13:42 Izem joins (~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
20:13:57 × Guest29 quits (~Guest29@93-172-101-61.bb.netvision.net.il) (Ping timeout: 256 seconds)
20:17:11 chomwitt joins (~chomwitt@ppp-94-67-1-143.home.otenet.gr)
20:17:32 machinedgod joins (~machinedg@24.105.81.50)
20:20:31 × oxide quits (~lambda@user/oxide) (Quit: oxide)
20:20:34 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:23:07 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
20:25:12 Guest1 joins (~Guest1@2603-7081-2d42-d2dd-9c58-6b19-d92a-1e33.res6.spectrum.com)
20:25:59 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
20:28:42 × qbt quits (~edun@user/edun) (Ping timeout: 260 seconds)
20:32:25 × zer0bitz quits (~zer0bitz@dsl-hkibng31-54fafc-123.dhcp.inet.fi) (Read error: Connection reset by peer)
20:34:16 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Remote host closed the connection)
20:34:36 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
20:36:38 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
20:37:16 × x28girl quits (~x28girl@user/x28girl) (Remote host closed the connection)
20:37:53 x28girl joins (~x28girl@user/x28girl)
20:39:14 <Heffalump> sm: thanks
20:40:53 pavonia joins (~user@user/siracusa)
20:41:32 MQ-17J joins (~MQ-17J@d192-24-122-179.try.wideopenwest.com)
20:43:07 × solomon quits (~solomon@cpe-76-168-7-139.socal.res.rr.com) (Quit: Client closed)
20:43:34 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
20:44:59 <Heffalump> sm: hmm, I don't see anything to dynamically load the actual Haskell code though
20:45:35 mikoto-chan joins (~mikoto-ch@83.137.2.246)
20:49:53 × mikoto-chan quits (~mikoto-ch@83.137.2.246) (Client Quit)
20:50:54 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
20:54:40 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
20:56:38 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:00:11 wroathe joins (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net)
21:00:11 × wroathe quits (~wroathe@96-88-30-181-static.hfc.comcastbusiness.net) (Changing host)
21:00:11 wroathe joins (~wroathe@user/wroathe)
21:01:16 × Guest1 quits (~Guest1@2603-7081-2d42-d2dd-9c58-6b19-d92a-1e33.res6.spectrum.com) (Quit: Client closed)
21:01:47 × jumper149 quits (~jumper149@80.240.31.34) (Quit: WeeChat 3.2.1)
21:02:06 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Remote host closed the connection)
21:02:25 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
21:02:40 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:03:55 <Izem> It seems like a data constructor can only appear on the rhs of an equation, is that true?
21:04:41 <geekosaur> > let Just x = Just 5 in x
21:04:42 <lambdabot> 5
21:06:17 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 265 seconds)
21:06:48 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
21:07:09 <Cajun> thats just a lhs pattern match though right?
21:07:30 <Cajun> > let Just x = (Nothing :: Maybe Int) in x
21:07:32 <lambdabot> *Exception: <interactive>:3:5-35: Non-exhaustive patterns in Just x
21:07:41 <geekosaur> yes. I'm not exactly sure what Izem is asking about though
21:07:50 <geekosaur> perhaps an example of what you mean?
21:08:48 <Izem> I don't know, I'm just reading the introduction to haskell
21:09:25 <hpc> Izem: there are patterns and there are expressions
21:09:27 <geekosaur> wonder which introduction. also wonder if perhaps you're misunderstanding how data declarations work
21:09:38 <hpc> in geekosaur's example, "Just x" is a pattern and "Just 5" is an expression
21:09:43 <geekosaur> the type constructor is to the left of the =, the data constructors to the right
21:09:52 <Izem> gentle introduction to haskell 98
21:19:39 × Izem quits (~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Ping timeout: 268 seconds)
21:22:09 × chomwitt quits (~chomwitt@ppp-94-67-1-143.home.otenet.gr) (Remote host closed the connection)
21:22:24 <geekosaur> ok, I think whatyou have misunderstood here is the difference between patterns and expressions
21:22:54 <geekosaur> although if you can point to a specific part of the Gentle Introduction (which admittedly isn't as gentle as it might be), that would help
21:23:22 <geekosaur> I found the Gentle Introduction much easier to understand with some SML/NJ knowledge under mybelt
21:23:28 <Cajun> (how different is hs98 from hs2010?)
21:23:35 <geekosaur> not very
21:24:01 <geekosaur> datatype contexts went away, a few small things (pattern guards, I think?) were added
21:24:31 <tabemann> strictly speaking hs98 proper didn't have nested modules
21:25:01 <geekosaur> ghc's dialect is noticeably different but it can't really implement proper haskell98 any more as a result (differences in Num and Monad come to mind)
21:25:31 <tabemann> few people use "real" HS98 though in practice
21:25:48 <Cajun> i know the (n+k) patterns vanished, but arent those in a language extension?
21:26:09 <geekosaur> yes
21:26:25 <geekosaur> oh right, that too. with all the problems that made them go away
21:26:35 <geekosaur> (they're partial)
21:27:08 <awpr> partial as in attempting to match them sometimes errors? or partial as in they don't match all values?
21:27:37 <geekosaur> they don't match all values and it's painful to write a pattern using n+k that does, iirc
21:28:02 × tommd quits (~tommd@75-164-130-101.ptld.qwest.net) (Ping timeout: 265 seconds)
21:28:59 <awpr> ..
21:29:24 <awpr> oops, my tiny brain can't handle having a VM with focus-follows-mouse and a host OS with click-to-focus :/
21:30:12 fawful joins (~guy@c-76-104-217-93.hsd1.wa.comcast.net)
21:31:05 _xor joins (~xor@74.215.232.67)
21:31:46 michalz joins (~michalz@185.246.204.57)
21:32:02 <Cajun> focus follows mouse sounds very annoying
21:32:26 <ldlework> have any of you seen the js debate around pipeline operator proposal
21:32:40 <Cajun> js drama? sounds entertaining
21:32:52 × michalz quits (~michalz@185.246.204.57) (Remote host closed the connection)
21:33:02 <geekosaur> focus follows mouse is kinda traditional unix
21:33:13 <geekosaur> although I admit I've never liked it
21:33:25 <ldlework> they are debating between an F# style algebraic operator, and a "Hack" style where the lhs is bound to ^ in a rhs expression
21:33:43 <ldlework> it looks like the "Hack" style version will win, and fp programmers are lamenting
21:33:50 <geekosaur> urgh
21:34:01 <geekosaur> yet another reason to avoid JS
21:34:30 × max22- quits (~maxime@2a01cb088335980099348db52b55749a.ipv6.abo.wanadoo.fr) (Quit: Leaving)
21:34:41 <Cajun> focus follows mouse sounds especially infuriating if a primary monitor is at non-native res and youre trying to scroll through a document on the second monitor without having the primary switch back to native res (this happens to me a lot)
21:35:02 <ldlework> focus follows mouse is most frustrating when there is a popup floating window in the middle of the screen
21:35:10 michalz joins (~michalz@185.246.204.57)
21:35:18 <ldlework> but you can't interact with it, because it gets sent to the back as the tiled windows behind it take focus as you move the mouse
21:35:19 <geekosaur> Izem, are you still there?
21:35:26 <ldlework> Amethyst on OSX has this problem
21:35:41 <awpr> focus doesn't have to mean raise
21:35:54 × jstolarek quits (~jstolarek@ers4.neoplus.adsl.tpnet.pl) (Ping timeout: 268 seconds)
21:35:54 <ldlework> yeah but on OSX that's what it means
21:36:02 <awpr> that does sound pretty broken
21:36:06 <ldlework> it is lol
21:36:30 <geekosaur> yeh, traditional unix style does not raise
21:36:40 <ldlework> maybe there's an OSX option somewhere but i didn't bother to look
21:37:24 × Chai-T-Rex quits (~ChaiTRex@user/chaitrex) (Ping timeout: 276 seconds)
21:38:18 <ldlework> i kinda wonder if you haskell folk looked at the hack style operator and could give an analysis that was optimistic
21:38:37 <ldlework> like maybe "in a way" the hack operator will still allow all the things a normal pipeline operator would, etc
21:38:40 <ldlework> in some grander technical sense
21:38:58 Chai-T-Rex joins (~ChaiTRex@user/chaitrex)
21:40:03 <awpr> only looked at it for a minute or so just now, but it kinda just looks like a single-use concise lambda syntax?
21:40:37 <awpr> except with its application baked into it, so more like a weird let-in syntax
21:40:51 <ldlework> lhs is bound to ^ in rhs expression
21:40:55 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
21:41:17 <awpr> the proposal I'm reading says $, but otherwise that sounds like what I read
21:41:27 <ldlework> yeah there were debates over the token
21:42:02 <awpr> ah, okay, I see a bunch of variations. I guess they don't want to shadow jQuery.
21:42:15 <ldlework> XD
21:42:34 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
21:42:36 <awpr> people occasionally want something like that in Haskell so that e.g. `(x + _ + y) :: Num a => a -> a`
21:43:54 <awpr> in general it's harder to figure out what the boundaries of such a lambda-ish thing would be, but maybe the JS case being fused into pipeline syntax would make it easy: "the whole expression between two pipeline operators or the start/end of statement"
21:44:15 <Cajun> jquery is what i hated most about JS, its basically a must have if you want to do anything real with the language
21:44:25 natechan joins (~nate@108-233-125-227.lightspeed.sntcca.sbcglobal.net)
21:45:20 cjb joins (~cjbayliss@user/cjb)
21:45:45 <ldlework> Cajun: not anymore, we have the ability to do `const t = (msg, handle) => <button onClick={handle}>{msg}</button>` and stuff now
21:46:06 <Cajun> oh sweet, thats really nice
21:50:38 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
21:52:23 seydar joins (~seydar@154-27-113-252.starry-inc.net)
21:52:35 × michalz quits (~michalz@185.246.204.57) (Remote host closed the connection)
21:53:09 <seydar> in the definition of System.IO's readFile, the handle is opened but never seems to be closed. am i missing something?
21:54:03 <geekosaur> readFile uses lazy I/O. the Handle is created in the background, as it were, and will eventually be garbage collected
21:54:07 <awpr> probably relies on a GC finalizer to close it
21:54:14 <geekosaur> if you need more control than that, use openFile
21:54:25 <seydar> awesome, thank you both
21:54:45 michalz joins (~michalz@185.246.204.61)
21:55:10 <awpr> GHC runtime has support for associating callbacks with an object that will be run when it's collected. it's okay for extra protection against leaking resources, but usually explicit closes + `bracket` (or a `withX` function) are preferred
21:55:11 × michalz quits (~michalz@185.246.204.61) (Remote host closed the connection)
21:57:04 Izem joins (~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
21:57:16 × seydar quits (~seydar@154-27-113-252.starry-inc.net) (Client Quit)
21:57:29 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Ping timeout: 268 seconds)
22:00:31 × __monty__ quits (~toonn@user/toonn) (Ping timeout: 252 seconds)
22:02:05 <Izem> How do I read mappings with three arrows?
22:03:04 <Izem> a->[a]->[a] is (a->[a])->[a] or a->([a]->[a]) ?
22:03:30 <geekosaur> the latter
22:06:22 Guest85 joins (~Guest85@dynamic-78-30-180-145.adsl.eunet.rs)
22:07:33 × _xor quits (~xor@74.215.232.67) (Quit: bbiab)
22:07:38 <Cajun> arrows are right associative
22:07:40 × jtomas_ quits (~jtomas@95.red-88-11-64.dynamicip.rima-tde.net) (Ping timeout: 240 seconds)
22:07:55 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:09:14 × Tuplanolla quits (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi) (Quit: Leaving.)
22:12:41 × Gurkenglas quits (~Gurkengla@dslb-002-207-014-195.002.207.pools.vodafone-ip.de) (Ping timeout: 268 seconds)
22:14:25 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
22:20:35 <Franciman> lol haskell is making fun of me
22:20:47 <Cajun> how so?
22:21:57 <Franciman> I have these two pieces of code
22:21:59 <Franciman> https://bpa.st/TY5Q
22:22:01 <Franciman> as you can see
22:22:10 <Franciman> in both I define a self-referential term
22:22:12 <Franciman> res
22:22:15 <Franciman> but I can't understand why
22:22:20 <Franciman> in the first case the program loops forever
22:22:29 <Franciman> while in the second case it works as I expect
22:22:37 <Franciman> is there less laziness in the first eval?
22:23:11 <Franciman> or is it related to something else?
22:26:11 <Franciman> maybe it is because I have a tuple?
22:26:25 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Remote host closed the connection)
22:26:43 <geekosaur> does putting ~ in front of the tuple help?
22:26:56 NoirCode joins (~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
22:27:18 <Franciman> lemme try
22:28:19 __monty__ joins (~toonn@user/toonn)
22:28:34 × CannabisIndica quits (~herb@user/mesaboogie) (Ping timeout: 252 seconds)
22:29:21 × __monty__ quits (~toonn@user/toonn) (Client Quit)
22:29:54 × Izem quits (~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Ping timeout: 265 seconds)
22:29:58 <Franciman> geekosaur: you are a genious
22:30:12 <Franciman> can i ask you what is happening?
22:30:25 <geekosaur> ~ in front of a pattern makes it lazy
22:30:42 <geekosaur> otherwise it was strictly matching the tuple and that may have caused the looping
22:30:43 <Franciman> oh nice!
22:30:54 <Franciman> thanks senseii
22:32:34 yauhsien joins (~yauhsien@118-167-47-202.dynamic-ip.hinet.net)
22:37:24 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
22:37:30 × yauhsien quits (~yauhsien@118-167-47-202.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
22:37:58 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
22:38:11 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 268 seconds)
22:38:37 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
22:39:12 × jespada quits (~jespada@2803:9800:9842:7a62:edd5:5e74:3ec2:1b19) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:39:14 geekosaur joins (~geekosaur@xmonad/geekosaur)
22:41:46 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.2.1)
22:44:01 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Ping timeout: 252 seconds)
22:44:58 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 260 seconds)
22:45:23 waleee joins (~waleee@h-98-128-228-119.na.cust.bahnhof.se)
22:45:28 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:48:10 dsrt^ joins (~dsrt@12.203.127.82)
22:49:43 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds)
22:51:13 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:51:43 ulvarrefr joins (~user@185.24.53.152)
22:58:10 tromp joins (~textual@dhcp-077-249-230-040.chello.nl)
22:59:18 × gioyik quits (~gioyik@gateway/tor-sasl/gioyik) (Ping timeout: 276 seconds)
22:59:32 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Read error: Connection reset by peer)
22:59:48 deejaytee joins (~deejaytee@vpn-fn-228.net.ed.ac.uk)
22:59:55 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
23:00:11 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:00:12 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
23:00:12 wroathe joins (~wroathe@user/wroathe)
23:00:35 × deejaytee quits (~deejaytee@vpn-fn-228.net.ed.ac.uk) (Client Quit)
23:00:41 <Franciman> geekosaur: sorry, I have another similar problem now
23:00:48 <Franciman> I am in the ST monad, and I have
23:01:05 <Franciman> res <- runProgram s e (E.bind res bEnv') prog
23:01:13 <Franciman> is there a way to make this lazy too?
23:01:18 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 260 seconds)
23:01:22 <Franciman> I tried with mdo
23:01:26 <Franciman> and RecursiveDo
23:01:28 <Franciman> but it loops :<
23:02:06 × TranquilEcho quits (~grom@user/tranquilecho) (Quit: WeeChat 2.8)
23:02:06 <geekosaur> hm. that I don't know but suspect laziness will depend on ST's bind and there may be no way around it
23:02:54 <Franciman> this is unfortunate
23:02:55 <Franciman> damn
23:02:58 <Franciman> thanks
23:03:31 <geekosaur> res itself shjould already be lazy since it's irrefutable
23:04:05 × NoirCode quits (~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca) (Ping timeout: 268 seconds)
23:05:11 × dsrt^ quits (~dsrt@12.203.127.82) (Remote host closed the connection)
23:05:34 <Franciman> uhm, in fact the computation terminates at first
23:05:39 <Franciman> but then it says it loops
23:05:41 <Franciman> i.e. haskell says
23:05:44 <Franciman> ellipse: <<loop>>
23:05:54 <Franciman> so ST is doing its perverted magic
23:05:56 <Franciman> lol
23:06:19 <geekosaur> hm, that implies the loop is somewhere else
23:06:39 <geekosaur> <<loop>> means a thunk was reentered while evaluating it to WHNF
23:06:53 <geekosaur> i.e. something like x = x
23:08:20 <Franciman> is there a way to know what caused the <<loop>> ?
23:08:36 <geekosaur> possibly +RTS -xc
23:08:54 <geekosaur> may require building with profiling enabled
23:10:09 <Franciman> awesome
23:10:12 <Franciman> thanks
23:10:14 <Franciman> again
23:13:41 roboguy_ joins (~roboguy_@cpe-98-156-4-161.kc.res.rr.com)
23:16:28 × tromp quits (~textual@dhcp-077-249-230-040.chello.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
23:16:39 lavaman joins (~lavaman@98.38.249.169)
23:16:40 caef^ joins (~caef@12.203.127.82)
23:17:26 × hnOsmium0001 quits (uid453710@id-453710.hampstead.irccloud.com) (Quit: Connection closed for inactivity)
23:17:27 × MQ-17J quits (~MQ-17J@d192-24-122-179.try.wideopenwest.com) (Read error: Connection reset by peer)
23:17:42 MQ-17J joins (~MQ-17J@8.21.10.6)
23:21:22 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 252 seconds)
23:24:42 NoirCode joins (~Izem@bras-base-london1483w-grc-31-74-12-158-179.dsl.bell.ca)
23:25:13 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 252 seconds)
23:26:50 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c)
23:27:55 × amahl quits (~amahl@dsl-jklbng12-54fbca-64.dhcp.inet.fi) (Ping timeout: 260 seconds)
23:31:16 _xor joins (~xor@74.215.232.67)
23:31:38 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:283f:384b:ba74:f15c) (Ping timeout: 260 seconds)
23:32:13 solomon joins (~solomon@cpe-76-168-7-139.socal.res.rr.com)
23:34:27 hnOsmium0001 joins (uid453710@id-453710.hampstead.irccloud.com)
23:34:37 × Guest85 quits (~Guest85@dynamic-78-30-180-145.adsl.eunet.rs) (Quit: Client closed)
23:39:05 × sheddow quits (~sheddow@2001:4652:3064:0:855:8e28:191f:6ce6) (Ping timeout: 256 seconds)
23:43:16 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
23:51:24 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
23:51:44 geekosaur joins (~geekosaur@xmonad/geekosaur)
23:53:42 nfd joins (~nfd@user/nfd)
23:54:19 × solomon quits (~solomon@cpe-76-168-7-139.socal.res.rr.com) (Quit: Client closed)
23:54:48 solomon joins (~quassel@cpe-76-168-7-139.socal.res.rr.com)

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