Home liberachat/#haskell: Logs Calendar

Logs on 2021-11-15 (liberachat/#haskell)

00:00:30 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 260 seconds)
00:02:03 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
00:04:32 × gawen quits (~gawen@user/gawen) (Quit: cya)
00:08:50 gawen joins (~gawen@user/gawen)
00:11:41 × olibiera quits (~olibiera@a85-138-214-194.cpe.netcabo.pt) (Quit: Client closed)
00:13:31 × slice quits (~slice@user/slice) (Quit: zzz)
00:16:15 × Vajb quits (~Vajb@2001:999:85:46d7:d6a4:d6c1:950b:ce99) (Read error: Connection reset by peer)
00:16:47 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
00:18:16 Henson joins (~kvirc@107-179-133-201.cpe.teksavvy.com)
00:19:28 <dibblego> the book Programming in Haskell, Graham Hutton — has an example of a parser
00:19:49 alx741 joins (~alx741@181.196.68.69)
00:22:58 × acidjnk_new quits (~acidjnk@p200300d0c74373762d98dd33bce98ac3.dip0.t-ipconnect.de) (Ping timeout: 265 seconds)
00:26:40 <Axman6> who runs yahb again? I was looking for the custom sandbox thing it runs in
00:27:16 <Axman6> nevermind, I found both answers in my browser history
00:27:21 × chomwitt quits (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
00:29:54 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 260 seconds)
00:30:02 <geekosaur> haskell is a compiled language, like c and c++ are compiled languages. none of them gives you a simple "here's an expression in a string, compute it and give me the result" function; that's something interpreters do
00:30:05 <monochrom> I think mniip runs yahb.
00:30:09 <geekosaur> yeh
00:30:15 <geekosaur> but they got the answer already
00:30:34 <monochrom> I didn't read completely, oops, heh.
00:31:21 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:32:13 <geekosaur> anyway there is a way to get that functionality with ghc, but (a) it's somewhat painful (b) it involves linking the whole compiler into your program just to evaluate the expression
00:32:27 <geekosaur> this is not usually what you're looking for
00:32:48 machinedgod joins (~machinedg@24.105.81.50)
00:36:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
00:37:13 slice joins (~slice@user/slice)
00:37:16 × mmhat quits (~mmh@55d47fa1.access.ecotel.net) (Quit: WeeChat 3.3)
00:37:35 × zava quits (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Quit: WeeChat 3.3)
00:39:05 <c_wraith> It's way worse than just linking in the compiler - you also need the .hi files for every library you want.
00:42:44 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
00:46:51 × Codaraxis quits (~Codaraxis@user/codaraxis) (Quit: Leaving)
00:47:11 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 264 seconds)
00:48:38 <Henson> is there some way for a person to find a Haskell project that needs volunteer coders? I don't program in Haskell for my job and don't want my Haskell skills to get too rusty, so I'd like to have excuses to code. I've tried doing Advent Of Code challenges for fun, but the headache-to-coding ratio is too high for it to be enjoyable.
00:49:40 × burnsidesLlama quits (~burnsides@dhcp168-014.wadham.ox.ac.uk) (Remote host closed the connection)
00:51:44 <geekosaur> look for Haskell projects on github?
00:52:25 × anna_user2_ quits (~anna_user@207.181.251.46) (Quit: Leaving)
00:52:36 <geekosaur> mostly the ones that show recent activity
00:53:02 <geekosaur> (or gitlab, darcsden, etc.)
00:53:19 hololeap_ joins (~hololeap@user/hololeap)
00:53:21 × hololeap quits (~hololeap@user/hololeap) (Ping timeout: 276 seconds)
00:59:04 <energizer> does recursion get rewritten to foldr under the hood? (or vice versa)
00:59:17 <Henson> geekosaur: thanks!
00:59:48 <geekosaur> "recursion" is a broad brush
01:00:12 <energizer> https://hackage.haskell.org/package/base-4.16.0.0/docs/src/GHC.List.html#takeWhile vs `takeWhile f = foldr (\x acc -> if f x then x : acc else []) []`
01:00:47 <sm> Henson: people ask this periodically on /r/haskell, not sure how to find those threads
01:01:38 <geekosaur> there are simple maps, there are folds, there are traversals, there are _un_folds, etc.
01:01:52 <sm> those of us who see it sometimes reply. Most FOSS projects welcome coders, hledger is one
01:02:24 <Henson> sm: cool, thanks for the suggestion!
01:03:35 <energizer> does one of those two functions get converted into the other under the hood?
01:07:26 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 265 seconds)
01:09:14 × alx741 quits (~alx741@181.196.68.69) (Ping timeout: 256 seconds)
01:10:17 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20) (Remote host closed the connection)
01:11:39 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20)
01:12:18 mimmy joins (~mimmy@45.14.195.121)
01:17:21 × Henson quits (~kvirc@107-179-133-201.cpe.teksavvy.com) (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/)
01:18:35 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
01:20:25 <geekosaur> energizer, no
01:20:56 <geekosaur> there are, iirc, 16 fundamental "recursion schemes". in practice only a handful are useful, so they are the predefined ones
01:21:16 <geekosaur> but you don't use a fold when you want a map, and you don't use a map when you want a fold
01:21:40 <geekosaur> moreover, there's two different folds, depending on how you want your function to associate
01:23:11 × renzhi quits (~xp@2607:fa49:6500:b100::6e7f) (Ping timeout: 264 seconds)
01:23:57 alx741 joins (~alx741@181.196.68.87)
01:28:45 <energizer> those two implementations are different ways of writing the same thing, but i guess ghc doesnt care about that
01:29:16 <geekosaur> hm?
01:29:32 <geekosaur> > foldl f z [a,b,c]
01:29:33 <lambdabot> f (f (f z a) b) c
01:29:43 <geekosaur> > foldr f z [a,b,c]
01:29:45 <lambdabot> f a (f b (f c z))
01:29:51 <energizer> https://hackage.haskell.org/package/base-4.16.0.0/docs/src/GHC.List.html#takeWhile vs `takeWhile f = foldr (\x acc -> if f x then x : acc else []) []`
01:31:22 <energizer> i see, you were responding to a different question than i thought you were
01:31:24 hololeap_ is now known as hololeap
01:31:38 <energizer> by "those two functions" i meant those two `takeWhile`s
01:33:34 <EvanR> you can view the core output for any two versions of some function to see what ghc may think
01:33:51 <geekosaur> also keep in mind that in Haskell, you get different laziness behavior from different ways of doing things. the foldr definition is lazier than the one actually used
01:35:15 <geekosaur> strictness vs. laziness has consequences in terms of memory usage and performance, among other things
01:38:05 dsamperi joins (~dsamperi@2603-7000-3b42-5400-c006-e1aa-bb8d-1172.res6.spectrum.com)
01:38:15 <unit73e> I never bothered profiling in haskell
01:38:20 <unit73e> but maybe I should
01:38:48 <geekosaur> depends on what you're doing. I've never found it necessary but I'm not e.g. building high volume webservers
01:39:17 <unit73e> i'm builign a game engine so it could be useful
01:39:23 <unit73e> building*
01:39:41 <unit73e> seems ghc already has decent tools for it
01:40:07 <unit73e> for web servers it's not necessary on any framework. just add more metal
01:40:36 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.3)
01:41:23 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Quit: Leaving)
01:42:47 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
01:44:06 <energizer> ...that is a recipe for spending a lot of money unnecessarily
01:44:46 <energizer> and getting poor latency no matter how much you spend
01:45:35 <unit73e> there are some optimizations that can be done with web servers but it's mostly in databases or making it more scalable
01:45:39 <unit73e> and that's rare
01:45:48 <unit73e> only giant companies do that
01:46:46 <geekosaur> trust me, getting your laziness/strictness wrong can cost you a *lot*
01:46:47 <energizer> that's really not right
01:47:11 <energizer> lots of people care about performance without being giant companies
01:47:19 <unit73e> laziness/stricness wrong does cost a lot
01:47:24 <geekosaur> and throwing money or hardware at the problem is not a fix, it's a bandage
01:47:37 <unit73e> yes and yet that's what medium companies do
01:47:44 <unit73e> because they don't understand the problem
01:47:54 <unit73e> I've seen it time and time again
01:48:14 <geekosaur> yes, I know. :( (I'm an ex-sysadmin, I've seen too much of this)
01:49:53 × ski quits (~ski@remote12.chalmers.se) (Ping timeout: 264 seconds)
01:50:37 <unit73e> from my experience the biggest problem in webservers is bottlenecks and that's because of a mix of imutable design that popular languages are only picking up right now and mutable code that isn't really good for distributed systems ending up being the bottleneck
01:51:22 <unit73e> it's as if you'r seeing everyone slowly moving in the same micro-services without understanding why it matters
01:51:38 <unit73e> and failing at it btw
01:51:49 <unit73e> fun times
01:51:54 <geekosaur> yep
01:53:37 davean hides his 100kqps/core Haskell webservice
01:56:28 × brainfreeze quits (~brainfree@2a03:1b20:4:f011::20d) (Quit: Leaving)
02:04:26 × zebrag quits (~chris@user/zebrag) (Quit: Konversation terminated!)
02:11:16 a6a45081-2b83 joins (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507)
02:12:30 <a6a45081-2b83> @hoogle (a -> m b) -> Map k a -> m (Map k b)
02:12:31 <lambdabot> No results found
02:14:33 <dsal> @hoogle traverseWithKey
02:14:33 <lambdabot> Data.IntMap.Internal traverseWithKey :: Applicative t => (Key -> a -> t b) -> IntMap a -> t (IntMap b)
02:14:33 <lambdabot> Data.IntMap.Lazy traverseWithKey :: Applicative t => (Key -> a -> t b) -> IntMap a -> t (IntMap b)
02:14:33 <lambdabot> Data.IntMap.Strict traverseWithKey :: Applicative t => (Key -> a -> t b) -> IntMap a -> t (IntMap b)
02:15:09 × hiruji quits (~hiruji@user/hiruji) (Read error: Connection reset by peer)
02:20:06 pop3 joins (~pop3@user/pop3)
02:20:17 mud joins (~mud@user/kadoban)
02:22:40 lavaman joins (~lavaman@98.38.249.169)
02:26:55 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 268 seconds)
02:27:25 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
02:32:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
02:33:25 chizil[m] joins (~chizilmat@2001:470:69fc:105::1:34ab)
02:35:39 × waleee quits (~waleee@h-98-128-228-119.NA.cust.bahnhof.se) (Quit: WeeChat 3.3)
02:36:01 jkaye joins (~jkaye@2601:281:8300:7530:a5dd:80a5:c74b:fea5)
02:37:38 slaydr joins (~seriley@97-120-85-233.ptld.qwest.net)
02:37:59 × gg quits (~gg@2a01:e0a:819:1510:9018:293a:5d7d:4597) (Remote host closed the connection)
02:39:56 justsomeguy joins (~justsomeg@user/justsomeguy)
02:45:06 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 245 seconds)
02:51:35 × xff0x quits (~xff0x@2001:1a81:52ad:7900:8288:e51a:352c:7fbc) (Ping timeout: 268 seconds)
02:53:02 xff0x joins (~xff0x@2001:1a81:52ee:6600:5c66:cf47:7ae9:a061)
02:53:25 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
02:53:29 <perrierjouet> hi all
02:53:42 <perrierjouet> is it normal few packages install take 4 GB ?
02:54:27 <perrierjouet> stack setup, stack install hakyll, already 4 gb install size
02:55:17 <sm> perrierjouet: 4 seems more than one GHC version and package set would normally take, but yes it's normal
02:55:19 <geekosaur> hakyll has a lot of dependencies, and the transitive dependency list is even larger
02:55:25 <sm> one package depends on a hundred others
02:55:41 <sm> stack-clean-old is a good tool for cleaning up
02:56:04 <geekosaur> and if you're using stack it may have installed a new ghc for you at the same time
02:56:55 <perrierjouet> I am on archlinux so I removed ghc from system installer before
02:58:12 <perrierjouet> will it be slow if I move my home direcotry to another pc ? and have .stack => /mnt/second-pc/homeX/.stack ? is it ok or haskell will be slow ?
02:59:20 <geekosaur> that may be worse than slow, it might break. stack and cabal are both pretty sensitive about their stores
02:59:47 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
03:00:07 <geekosaur> and especially if that's a remote mount, yes, things are likely to be slow
03:02:01 <perrierjouet> ok
03:02:14 evan joins (~evan@2600:1700:ba69:10:41e7:efbb:d2c9:20f)
03:02:20 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
03:02:23 evan is now known as Guest8716
03:03:22 mbuf joins (~Shakthi@223.184.58.239)
03:04:32 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
03:04:44 × lemonsni- quits (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net) (Quit: ZNC 1.8.2 - https://znc.in)
03:07:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
03:09:59 × jkaye quits (~jkaye@2601:281:8300:7530:a5dd:80a5:c74b:fea5) (Ping timeout: 264 seconds)
03:11:11 Cajun joins (~Cajun@user/cajun)
03:13:49 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:13:49 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:13:49 finn_elija is now known as FinnElija
03:15:23 × ubert quits (~Thunderbi@p548c9652.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
03:15:39 lemonsnicks joins (~lemonsnic@cpc159519-perr18-2-0-cust114.19-1.cable.virginm.net)
03:16:57 × dsamperi quits (~dsamperi@2603-7000-3b42-5400-c006-e1aa-bb8d-1172.res6.spectrum.com) (Quit: Konversation terminated!)
03:17:47 × mimmy quits (~mimmy@45.14.195.121) (Ping timeout: 264 seconds)
03:19:22 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
03:19:22 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
03:19:22 wroathe joins (~wroathe@user/wroathe)
03:19:51 fuzzypixelz_ joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
03:20:58 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
03:23:39 × fuzzypixelz quits (~fuzzypixe@tchebychev.ensimag.fr) (Ping timeout: 268 seconds)
03:23:49 mimmy joins (~mimmy@45.14.195.121)
03:24:16 × mvk quits (~mvk@2607:fea8:5cc3:e900::df92) (Ping timeout: 245 seconds)
03:34:13 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
03:34:45 hiruji joins (~hiruji@user/hiruji)
03:36:06 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 260 seconds)
03:37:49 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
03:42:35 × Guest8716 quits (~evan@2600:1700:ba69:10:41e7:efbb:d2c9:20f) (Ping timeout: 265 seconds)
03:43:21 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
03:45:25 × slaydr quits (~seriley@97-120-85-233.ptld.qwest.net) (Remote host closed the connection)
03:45:37 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
03:45:49 × bontaq quits (~user@ool-45779fe5.dyn.optonline.net) (Remote host closed the connection)
03:48:09 cjb35394 joins (~cjbayliss@user/cjb)
03:48:19 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
03:50:20 × cjb quits (~cjbayliss@user/cjb) (Ping timeout: 260 seconds)
03:53:23 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
03:53:43 cjb35394 is now known as cjb
03:58:35 × td_ quits (~td@muedsl-82-207-238-006.citykom.de) (Ping timeout: 264 seconds)
03:59:57 td_ joins (~td@muedsl-82-207-238-041.citykom.de)
04:00:48 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Quit: Leaving)
04:06:16 × cjb quits (~cjbayliss@user/cjb) ()
04:11:36 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
04:13:03 × vicfred quits (~vicfred@user/vicfred) (Quit: Leaving)
04:15:55 blackcap joins (~blackcap@144.89-10-135.nextgentel.com)
04:17:40 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
04:19:11 × akspecs__ quits (~akspecs@user/akspecs) (Ping timeout: 246 seconds)
04:19:35 akspecs__ joins (~akspecs@136-24-214-166.cab.webpass.net)
04:19:35 × akspecs__ quits (~akspecs@136-24-214-166.cab.webpass.net) (Changing host)
04:19:35 akspecs__ joins (~akspecs@user/akspecs)
04:21:23 × ralu quits (~ralu@static.211.245.203.116.clients.your-server.de) (Ping timeout: 264 seconds)
04:21:49 × glguy quits (x@libera/staff/glguy) (Quit: Quit)
04:22:01 glguy joins (x@libera/staff/glguy)
04:22:14 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 268 seconds)
04:23:08 <blackcap> This sucks: http://termbin.com/dwhh
04:23:23 <blackcap> There are 65 instructions with more than 1 arity
04:31:26 <blackcap> .. and roughly 4k instructions total
04:32:11 × jbox quits (~jbox@user/jbox) (Ping timeout: 264 seconds)
04:36:13 × a6a45081-2b83 quits (~aditya@2601:249:4300:1296:88ec:cc73:84d4:1507) (Quit: Konversation terminated!)
04:38:06 dajoer joins (~david@user/gvx)
04:44:05 Guest8716 joins (~evan@2600:1700:ba69:10:41e7:efbb:d2c9:20f)
04:48:59 × Guest8716 quits (~evan@2600:1700:ba69:10:41e7:efbb:d2c9:20f) (Ping timeout: 264 seconds)
04:54:46 × mimmy quits (~mimmy@45.14.195.121) (Ping timeout: 256 seconds)
05:02:47 <Axman6> what's the problem?
05:03:23 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
05:04:28 ec joins (~ec@gateway/tor-sasl/ec)
05:04:47 <Axman6> is there not a way to abstract over the argument types? like adc :: (RegOrMem a, RegOrMem b) => a -> b -> ASM ()
05:05:11 <Axman6> , maybe not
05:05:11 <blackcap> yes
05:06:01 <Axman6> at feels like some of this could be stored in a table
05:06:14 <Axman6> but... this is x86 right? x86 is gross :P
05:06:18 <blackcap> I'm sure I could use typeclasses in many cases, but there are exceptions to everything
05:07:12 <blackcap> yeah it's x86
05:07:37 sagax joins (~sagax_nb@user/sagax)
05:07:50 <blackcap> and this gunk is generated from a table, I just want a nice dsl
05:07:55 <Axman6> it sort of looks like there's 10 things that need to be encoded for each instruction, which makes me feel like you could represent each instruction as a 10-tuple, and at least then it would be more compact
05:09:29 × Vajb quits (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi) (Ping timeout: 256 seconds)
05:09:41 <Axman6> data Needed a = N | Val a; adc_al_imm8 = (N,N,N,N,N, Val (opcode 0x14), N, Val (\a b -> disp_imm arg1 a), N)
05:09:56 <Axman6> I guess opcode is needed for all instructions
05:10:14 <Axman6> omg, this file is enormous
05:10:19 Vajb joins (~Vajb@2001:999:85:46d7:d6a4:d6c1:950b:ce99)
05:11:00 <blackcap> It's only like 1/3rd of it- it got cut off
05:11:23 <Axman6> like, those comments are nice, but they don't tell the compiler anything useful - you should attempt to make the compiler work for you
05:12:17 × slice quits (~slice@user/slice) (Quit: zzz)
05:12:27 <blackcap> I guess I could have a 10-tuple and use template haskell to generate the code
05:13:40 <blackcap> but I still need to generate the functions, preferably with comments, and it doesn't solve the argument problem
05:16:06 <aegon> when sending strings over the network (ascii only so no unicode to worry about, non user generated) is it normal to append the null byte at the end cstyle or leave that up to the consumer to figure out
05:17:22 × xkuru quits (~xkuru@user/xkuru) (Read error: Connection reset by peer)
05:17:28 <aegon> i'm thinking non-null terminated over the wire
05:17:48 <Axman6> your choises are something like netstrings, which send their length and then content or null terminated. I would usually prefer the former
05:18:12 <Axman6> choices*
05:19:15 <aegon> yeah, i can rely on zeromq's frames to deal with lenght. i just need to double check that the way i'm serializing from ByteString.Char8 is not appending a null, digging into docs
05:19:43 <aegon> wanted to make sure i wasn't commiting sacrilige by not appending a null
05:21:43 <Axman6> nah
05:24:31 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 268 seconds)
05:26:07 lavaman joins (~lavaman@98.38.249.169)
05:27:21 <aegon> it doesn't look like ByteString.Char8 pack appends a null but it might depend on whether String is null terminated or not im having trouble finding packChars definition
05:28:54 deadmarshal joins (~deadmarsh@95.38.116.242)
05:30:26 <aegon> aand, doesn't look like it is nor are Strings null terminated, i can't find the docs on it but from playing around in ghci it looks like a string has no special null things implicit
05:30:26 × Vajb quits (~Vajb@2001:999:85:46d7:d6a4:d6c1:950b:ce99) (Read error: Connection reset by peer)
05:30:54 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 260 seconds)
05:32:02 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
05:32:41 <aegon> i should have just read ByteStrings docs instead of deep diving, its pretty clear on all this :X
05:33:16 <aegon> heh, its also late, that could hardly be called a 'deep dive' oy. Thanks for the sanity check Axman6
05:33:30 Vajb joins (~Vajb@hag-jnsbng11-58c3a8-176.dhcp.inet.fi)
05:33:44 slice joins (~slice@user/slice)
05:33:46 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 268 seconds)
05:34:28 img joins (~img@user/img)
05:36:15 × slice quits (~slice@user/slice) (Client Quit)
05:37:36 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 245 seconds)
05:49:18 <Axman6> blackcap: I don't suppose there is a machine readable definition of x86 instructions you could generate this Haskell from is there?
05:51:24 <blackcap> It's generated from a csv file: https://github.com/StanfordPL/x64asm
05:51:27 <blackcap> Axman6:
05:53:55 <Axman6> all good then! what's to worry about? :P
05:56:21 <blackcap> well, I just hate that I have to write `adc_al_imm8 foo bar`
05:57:46 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
05:57:56 ralu joins (~ralu@static.211.245.203.116.clients.your-server.de)
05:58:11 × yaroot quits (~yaroot@47.70.30.125.dy.iij4u.or.jp) (Quit: The Lounge - https://thelounge.chat)
05:58:57 yaroot joins (~yaroot@47.70.30.125.dy.iij4u.or.jp)
06:01:07 Guest80 joins (~Guest80@pd9ed7c28.dip0.t-ipconnect.de)
06:01:12 slice joins (~slice@user/slice)
06:02:38 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
06:03:00 <blackcap> it's not always the case that an instruction supports every kind of, say, register
06:03:12 <blackcap> nor that every variant has the same arity
06:04:35 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 264 seconds)
06:07:55 <opqdonut> could you just have every instruction be a type class, with instances for tuples of arguments it supports?
06:07:58 <Axman6> you could have class Add a b where add :: a -> b -> ASM (), and then make instances for all the legal ones which use those definitions - at least then you can write add Al (Imm8 0x7)
06:08:27 <opqdonut> `class Add args where add :: args -> ASM ()` to support variable arities
06:08:48 <opqdonut> and then `add (Al,Imm8 0x7)` or so
06:09:07 wei2912 joins (~wei2912@138.75.71.147)
06:13:27 <blackcap> also I could do `class Add arg r where add :: arg -> r` and write instances where `r` is `(->)` similar to printf
06:14:09 <blackcap> I'm worried about type inference and speed though
06:14:22 <blackcap> there are roughly 4k instructions
06:16:42 × tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz)
06:18:04 <opqdonut> you could group the instructions into classes by similar signatures
06:18:38 <opqdonut> the only way to know if there's a performance issue is to measure, I wouldn't be worried since each class is so small (in terms of methods & number of instances)
06:19:00 × ec quits (~ec@gateway/tor-sasl/ec) (Ping timeout: 276 seconds)
06:26:47 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
06:27:43 × mtjm quits (~mutantmel@2604:a880:2:d0::208b:d001) (Remote host closed the connection)
06:28:02 mtjm joins (~mutantmel@2604:a880:2:d0::208b:d001)
06:30:30 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 268 seconds)
06:34:09 × slowButPresent quits (~slowButPr@user/slowbutpresent) (Quit: leaving)
06:34:20 × aegon quits (~mike@174.127.249.180) (Remote host closed the connection)
06:35:07 img joins (~img@user/img)
06:43:37 <Axman6> depends on what sort of performance you care about too - compile time or runtime. I would guess in this case probably compile time might actually matter more
06:46:21 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:47:30 deadmarshal joins (~deadmarsh@95.38.116.242)
06:48:32 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
06:49:13 img joins (~img@user/img)
06:50:14 × motherfsck quits (~motherfsc@user/motherfsck) (Ping timeout: 268 seconds)
06:54:36 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
06:55:24 × img quits (~img@user/img) (Quit: ZNC 1.8.2 - https://znc.in)
06:55:59 <blackcap> I hope compile-time gets better once it's a compiled library
06:58:39 × eL_Bart0 quits (eL_Bart0@dietunichtguten.org) (*.net *.split)
06:58:39 × Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (*.net *.split)
06:58:39 × oxytocat quits (~alloca@user/suppi) (*.net *.split)
06:58:39 × Trattue quits (~Trattue@152.70.182.158) (*.net *.split)
06:58:39 × Ferdirand quits (~somebody@2001:4c78:2012:5000::2) (*.net *.split)
06:58:39 × HurdyGurdyBurdy quits (~HurdyGurd@user/hurdygurdyburdy) (*.net *.split)
06:58:39 × ringo__ quits (~ringo@157.230.117.128) (*.net *.split)
06:58:39 × AWizzArd quits (~code@gehrels.uberspace.de) (*.net *.split)
06:58:39 × ouroboros quits (~ouroboros@user/ouroboros) (*.net *.split)
06:58:39 × liskin quits (~liskin@xmonad/liskin) (*.net *.split)
06:58:39 × asm quits (~alexander@user/asm) (*.net *.split)
06:58:39 × samebchase quits (~thelounge@51.15.68.182) (*.net *.split)
06:58:39 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (*.net *.split)
06:58:39 × dtman34 quits (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net) (*.net *.split)
06:58:45 AWizzArd joins (~code@gehrels.uberspace.de)
06:58:47 Ferdirand joins (~somebody@2001:4c78:2012:5000::2)
06:58:52 lambdabot joins (~lambdabot@silicon.int-e.eu)
06:58:56 samebchase joins (~thelounge@51.15.68.182)
06:59:01 HurdyGurdyBurdy joins (~HurdyGurd@user/hurdygurdyburdy)
06:59:02 asm joins (~alexander@burner.asm89.io)
06:59:06 × lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host)
06:59:06 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
06:59:08 eL_Bart0 joins (eL_Bart0@dietunichtguten.org)
06:59:11 oxytocat joins (~alloca@2a03:4000:f:7ca:7407:d1ff:fe34:8cd0)
06:59:12 liskin joins (~liskin@ackle.nomi.cz)
06:59:16 × oxytocat quits (~alloca@2a03:4000:f:7ca:7407:d1ff:fe34:8cd0) (Signing in (oxytocat))
06:59:16 oxytocat joins (~alloca@user/suppi)
06:59:23 <blackcap> run-time doesn't matter terribly much, `ASM` here is just `Accum (Endo [Byte])`
06:59:24 × liskin quits (~liskin@ackle.nomi.cz) (Signing in (liskin))
06:59:24 liskin joins (~liskin@xmonad/liskin)
06:59:33 Raito_Bezarius joins (~Raito@2a01:e0a:5f9:9681:1c66:fc75:c47c:31bc)
06:59:41 ringo__ joins (~ringo@157.230.117.128)
06:59:43 dtman34 joins (~dtman34@c-73-62-246-247.hsd1.mn.comcast.net)
06:59:55 img joins (~img@user/img)
07:00:41 ouroboros joins (~ouroboros@user/ouroboros)
07:02:16 × pavonia quits (~user@user/siracusa) (Read error: Connection reset by peer)
07:02:41 pavonia joins (~user@user/siracusa)
07:02:41 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 265 seconds)
07:02:52 <Axman6> have you considered using Accum Builder?
07:03:46 <Axman6> Endo [Byte] is, like, super wasteful
07:04:14 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
07:04:22 × martin02 quits (~silas@2001:4ca0:0:fe00:0:5efe:a96:1bc1) (*.net *.split)
07:04:22 × mjacob quits (~mjacob@adrastea.uberspace.de) (*.net *.split)
07:04:22 × Ranhir quits (~Ranhir@157.97.53.139) (*.net *.split)
07:04:22 × cawfee quits (~root@2406:3003:2077:2758::babe) (*.net *.split)
07:04:22 × vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (*.net *.split)
07:04:22 × Hafydd quits (~Hafydd@user/hafydd) (*.net *.split)
07:04:22 × sajith quits (~sajith@user/sajith) (*.net *.split)
07:04:22 × derelict quits (derelict@user/derelict) (*.net *.split)
07:04:22 × earthy quits (~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0) (*.net *.split)
07:04:22 × averell quits (~averell@user/averell) (*.net *.split)
07:04:22 × hays quits (rootvegeta@fsf/member/hays) (*.net *.split)
07:04:22 × landonf quits (landonf@mac68k.info) (*.net *.split)
07:04:22 × catern quits (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407) (*.net *.split)
07:04:22 × Flow quits (~none@gentoo/developer/flow) (*.net *.split)
07:04:22 × welterde quits (welterde@thinkbase.srv.welterde.de) (*.net *.split)
07:04:34 mjacob joins (~mjacob@adrastea.uberspace.de)
07:04:34 hays joins (rootvegeta@fsf/member/hays)
07:04:37 landonf joins (landonf@mac68k.info)
07:04:38 averell joins (~averell@user/averell)
07:04:41 cawfee joins (~root@2406:3003:2077:2758::babe)
07:04:41 <Axman6> like, each Byte would take up...like 5 words in memory, at least
07:04:42 vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae)
07:04:50 Ranhir joins (~Ranhir@157.97.53.139)
07:04:54 sajith_ joins (~sajith@user/sajith)
07:04:54 earthy joins (~arthurvl@2001:984:275b:1:ba27:ebff:fea0:40b0)
07:04:54 Hafydd joins (~Hafydd@user/hafydd)
07:04:57 derelict joins (~derelict@user/derelict)
07:05:01 martin02 joins (~silas@141.84.69.76)
07:05:03 Flow joins (~none@gentoo/developer/flow)
07:05:03 welterde joins (welterde@thinkbase.srv.welterde.de)
07:05:04 <blackcap> yeah, I'm defenitly doing that eventually
07:05:07 catern joins (~sbaugh@2604:2000:8fc0:b:a9c7:866a:bf36:3407)
07:07:57 michalz joins (~michalz@185.246.204.57)
07:11:06 <Axman6> though I'm also not sure how efficient Builder is when building one byte at a time, which it looks like this probably does.
07:16:46 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
07:17:32 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
07:18:26 × sagax quits (~sagax_nb@user/sagax) (Read error: Connection reset by peer)
07:20:19 Guest8716 joins (~evan@2600:1700:ba69:10:41e7:efbb:d2c9:20f)
07:21:24 <blackcap> probably better than a linked list
07:25:14 × Guest8716 quits (~evan@2600:1700:ba69:10:41e7:efbb:d2c9:20f) (Ping timeout: 265 seconds)
07:33:54 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
07:34:13 <blackcap> typeclasses hardly affected compile-time at all!
07:34:43 sagax joins (~sagax_nb@user/sagax)
07:35:28 <blackcap> I have had bad experiences with typeclasses in the past: https://github.com/BlackCapCoder/oeis/blob/master/src/OEIS/Part2.hs
07:35:47 <blackcap> but I guess they're fine it there aren't too many instances?
07:36:21 chomwitt joins (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
07:47:32 lavaman joins (~lavaman@98.38.249.169)
07:48:36 <tomsmeding> that feels like an uncommon amount of typeclass instances in one module :p
07:48:49 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 268 seconds)
07:48:52 × shriekingnoise quits (~shrieking@186.137.144.80) (Quit: Quit)
07:50:34 chele joins (~chele@user/chele)
07:50:52 × dsrt^ quits (~dsrt@h50.174.139.63.static.ip.windstream.net) (Remote host closed the connection)
07:52:01 deadmarshal joins (~deadmarsh@95.38.116.242)
07:53:05 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
07:53:06 <blackcap> That's only "Part2"; I had to arbitrarily divide them into separate files to keep compilation time down during development
07:58:29 <tomsmeding> blackcap: yeah my point was that the fact that your OEIS code compiled slowly doesn't mean that type classes in general are slow; the more likely culprit is the sheer number of instances in that module :)
07:58:59 <tomsmeding> hence, what you said
07:59:05 lortabac joins (~lortabac@2a01:e0a:541:b8f0:4f7e:a333:a04f:8257)
08:01:00 <ozzloy_> https://paste.tomsmeding.com/owRGSS8q lines 26 through 48 are painful. i think there's a better way to do this, but it's not occurring to me
08:01:21 <blackcap> I have 4k instances in one file for this assembler, though, and it compiles in about a second
08:01:25 acidjnk_new joins (~acidjnk@p200300d0c7437376bc7d0da008ce8c42.dip0.t-ipconnect.de)
08:03:08 Guest8716 joins (~evan@2600:1700:ba69:10:41e7:efbb:d2c9:20f)
08:04:31 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
08:04:35 <blackcap> ozzloy_: how about `foldMap \a -> (Min a, Max a)`
08:05:17 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 250 seconds)
08:06:12 <ozzloy_> blackcap, thanks!
08:06:19 × slice quits (~slice@user/slice) (Quit: cya)
08:08:15 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
08:09:48 deadmarshal joins (~deadmarsh@95.38.116.242)
08:10:27 <ozzloy_> i'm not sure how foldMap works
08:11:28 dhouthoo joins (~dhouthoo@178-117-36-167.access.telenet.be)
08:11:50 jonathanx joins (~jonathan@dyn-8-sc.cdg.chalmers.se)
08:12:24 <ozzloy_> this notation is confusing. could you tell me what i'm missing here? that looks like foldMap takes a function that takes one argument and returns a tuple that consists of the minimum of that argument and the maximum of that argument
08:12:35 <ozzloy_> i'm confused by it, anyways
08:13:32 <ozzloy_> what is "Min"? i'm finding results for "min" but not "Min"
08:13:37 <blackcap> Min and Max are from Data.Semigroup
08:14:04 <ozzloy_> thanks
08:14:21 <blackcap> foldMap is folding the list using (<>)
08:14:57 <ozzloy_> i read that. i'm not sure how to search for that
08:15:12 <ozzloy_> thanks
08:15:19 <blackcap> which is going to be `(<>) = min` and `(<>) = max` for Min and Max
08:16:08 <ozzloy_> i ... see?
08:16:59 <blackcap> .. and the tuple is because the Semigroup instance for (,) is `instance (Semigroup a, Semigroup b) => Semigroup (a,b)`
08:17:37 <blackcap> so fold once, but do both min and max in one go
08:18:02 <c_wraith> That's not going to have great performance characteristics, sadly
08:18:19 <ozzloy_> blackcap, thanks for help
08:18:49 <blackcap> why not, because of the tuple?
08:19:13 <blackcap> Min and Max are newtypes, so those should be free
08:19:25 <c_wraith> you need to be using foldMap' at the very least
08:19:43 max22- joins (~maxime@2a01cb08833598003ad2294d5328f338.ipv6.abo.wanadoo.fr)
08:19:43 <ozzloy_> i'll keep that in mind for later. at the moment, i'm just learning how to express ideas in haskell
08:19:55 <ozzloy_> and what ideas haskell has to express
08:20:00 <c_wraith> looks like your function is going to need to force evaluation of its arguments before generating its (,) constructor, too
08:21:38 <c_wraith> which is why things like this typically use a strict pair - it's ridiculously painful to get evaluation of the components of a tuple with even foldMap'
08:21:40 gehmehgeh joins (~user@user/gehmehgeh)
08:22:55 <ozzloy_> so ... i have ideas that i already know and would like to express in haskell, but don't know how. and that feels nearer to me than learning these new-to-me ideas.
08:23:49 <c_wraith> :t foldMap' (\a -> a `seq` (Min a, Max a)) -- I guess this is strict enough to not leak, at least with types that must be fully evaluated to determine the min and max
08:23:50 <lambdabot> (Foldable t, Ord a, Bounded a) => t a -> (Min a, Max a)
08:24:19 <c_wraith> Oh, nope. It's not.
08:24:24 <c_wraith> You really do need a strict pair.
08:24:38 <ozzloy_> i would like to do something like https://paste.tomsmeding.com/N2Eu0Pur
08:25:41 <ozzloy_> i know that's incorrect. but the idea i'd like to express is to give a name to the smaller of a and b, and to the larger of a and b, and only compare a and b once to do that
08:25:43 <c_wraith> You're not really following the spirit of the directions you've got there.
08:25:50 <ozzloy_> i'm not?
08:26:10 <ozzloy_> oh, you mean line 31?
08:26:15 <ozzloy_> foldr?
08:26:30 <c_wraith> They strongly suggest you should be using compare (or < and >) explicitly, so you can control exactly how many times it's called
08:26:37 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 265 seconds)
08:27:15 <c_wraith> instead of calling sort, min, and max
08:27:16 <ozzloy_> yeah, i get that. sorry, i wrote an implementation that gives the correct answer, and now i'm trying to write code that does it in the right way
08:27:35 <c_wraith> eh. the right way is to forget the problem spec. :)
08:27:41 <ozzloy_> heh
08:27:56 <c_wraith> this is best expressed as a foldl', actually
08:29:35 <ozzloy_> how do i name the smaller of 2 variables "smaller" and the larger "larger" using only one comparison?
08:30:02 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
08:30:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
08:30:30 <c_wraith> let (smaller, larger) = if (x < y) then (x, y) else (y, x)
08:30:38 <ozzloy_> ah, thanks
08:32:48 <ozzloy_> does that seem like the way someone who was new to haskell would follow these instructions?
08:33:22 <c_wraith> maybe, if they were comfortable with pattern matching
08:33:34 <blackcap> http://termbin.com/ucbo
08:33:36 <ozzloy_> i'm thinking that lines up pretty closely with "process the list of numbers in pairs first with each other"
08:34:00 <ozzloy_> c_wraith, well initially i had a giant nested if-else
08:34:25 <ozzloy_> c_wraith, is that beginner-y enough for you?
08:34:27 <c_wraith> You don't need that, if you take advantage of a let or where to name values
08:35:26 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
08:36:47 <ozzloy_> blackcap, lol, thanks. i will turn that in and claim that i wrote it
08:37:08 <blackcap> if you use explicit recursion you can avoid the `Tup` wrapper
08:38:27 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
08:38:58 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:185c:f2cc:27d3:da20) (Remote host closed the connection)
08:39:57 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
08:40:19 × Guest80 quits (~Guest80@pd9ed7c28.dip0.t-ipconnect.de) (Ping timeout: 256 seconds)
08:41:34 <blackcap> if you have a list of native types like Int, import GHC.Exts, get rid of the `I#` wrapper and use `geInt#`
08:42:07 <ozzloy_> ok, so now i have this https://paste.tomsmeding.com/p5FHTbJV which i think does 3 comparisons for 2 numbers
08:42:25 zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
08:42:35 <ozzloy_> now i need to consume the initial list 2 elements at a time
08:42:54 × zava quits (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Client Quit)
08:43:10 zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
08:43:41 neurocyte0132889 joins (~neurocyte@94.16.67.223)
08:43:42 × neurocyte0132889 quits (~neurocyte@94.16.67.223) (Changing host)
08:43:42 neurocyte0132889 joins (~neurocyte@user/neurocyte)
08:47:34 × fuzzypixelz_ quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 265 seconds)
08:50:33 <ozzloy_> thanks again blackcap and c_wraith. i'm off to bed. will return to this later
08:56:07 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
08:56:47 neurocyte0132889 joins (~neurocyte@94.16.67.223)
08:56:47 × neurocyte0132889 quits (~neurocyte@94.16.67.223) (Changing host)
08:56:47 neurocyte0132889 joins (~neurocyte@user/neurocyte)
09:00:09 × conphiz[m] quits (~conphizma@2001:470:69fc:105::c052) (Quit: You have been kicked for being idle)
09:04:39 × acidjnk_new quits (~acidjnk@p200300d0c7437376bc7d0da008ce8c42.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
09:07:36 × bitmapper quits (uid464869@lymington.irccloud.com) (Quit: Connection closed for inactivity)
09:10:01 <blackcap> If the number of elements is known in advance, you can find the answer probabilistically by checking at most half: http://termbin.com/7ssg
09:10:32 <blackcap> If the number of elements is infinite, use brents algorithm to find a cycle first: http://termbin.com/1hil
09:11:36 deadmarshal joins (~deadmarsh@95.38.116.242)
09:13:10 × Guest8716 quits (~evan@2600:1700:ba69:10:41e7:efbb:d2c9:20f) (Quit: WeeChat 3.3)
09:17:33 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
09:17:33 allbery_b joins (~geekosaur@xmonad/geekosaur)
09:17:36 allbery_b is now known as geekosaur
09:18:19 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
09:18:51 cosimone joins (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3)
09:19:39 Pickchea joins (~private@user/pickchea)
09:19:42 × chomwitt quits (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Read error: Connection reset by peer)
09:20:01 chomwitt joins (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
09:20:56 mastarija joins (~mastarija@2a05:4f46:e06:ff00:dd0f:baa7:ff4f:4d80)
09:29:54 ubert joins (~Thunderbi@p200300ecdf0ba27448631365ce659eb5.dip0.t-ipconnect.de)
09:39:45 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7483:71c5:e9d:14d3)
09:40:41 Gurkenglas joins (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de)
09:44:05 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7483:71c5:e9d:14d3) (Ping timeout: 250 seconds)
09:46:55 ub joins (~Thunderbi@p548c9fcb.dip0.t-ipconnect.de)
09:47:33 × ubert quits (~Thunderbi@p200300ecdf0ba27448631365ce659eb5.dip0.t-ipconnect.de) (Ping timeout: 250 seconds)
09:47:33 ub is now known as ubert
09:54:41 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 245 seconds)
09:54:49 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
09:55:06 mcgroin joins (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr)
09:59:41 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
10:04:17 Square is now known as Sqaure
10:10:29 olibiera joins (~olibiera@a79-169-181-190.cpe.netcabo.pt)
10:12:20 <olibiera> hi guys i have this piece of code and im trying to call it recursively for every element of ys and zs and not just for y and z... can any1 explain how to?
10:12:24 <olibiera> replace' :: [String] -> [String] -> [Int] -> [String]
10:12:25 <olibiera>     replace' xs [] [] = xs
10:12:25 <olibiera>     replace' xs (y:ys) (z:zs) = replace'' y z xs
10:12:25 <olibiera>                             where replace'' y z xs = map (\x -> if (y == x) then show z else x) xs
10:12:52 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
10:14:26 <[exa]> olibiera: what is it supposed to do? (also, can you paste it on pastebin so we can view it better, preferably along an error message so that we know what to fix?)
10:15:55 <[exa]> anyway, in general, to recurse to the rest of the lists, you'll need to call something like: replace' _ ys zs
10:16:44 olibiera52 joins (~olibiera@a79-169-181-190.cpe.netcabo.pt)
10:17:13 × olibiera quits (~olibiera@a79-169-181-190.cpe.netcabo.pt) (Ping timeout: 256 seconds)
10:17:22 × olibiera52 quits (~olibiera@a79-169-181-190.cpe.netcabo.pt) (Client Quit)
10:17:28 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
10:17:37 olibiera joins (~olibiera@a79-169-181-190.cpe.netcabo.pt)
10:18:12 dfip^ joins (~dfip@h50.174.139.63.static.ip.windstream.net)
10:19:27 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
10:21:38 cfricke joins (~cfricke@user/cfricke)
10:22:13 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 250 seconds)
10:23:12 <olibiera> guys i sent my code to https://paste.tomsmeding.com/ , where will the answer be?
10:26:10 <[exa]> ah you need to send us the precise link (not just to the pastebin frontpage)
10:26:26 <[exa]> anyway, what's the expected function of the code?
10:28:27 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
10:34:10 <olibiera> https://paste.tomsmeding.com/eiutK5Xl
10:34:16 <olibiera> okok ty
10:34:22 <olibiera> here it is
10:41:37 Sinbad joins (~Sinbad@user/sinbad)
10:45:43 × mastarija quits (~mastarija@2a05:4f46:e06:ff00:dd0f:baa7:ff4f:4d80) (Quit: Leaving)
10:46:25 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
10:50:19 neurocyte0132889 joins (~neurocyte@94.16.67.223)
10:50:19 × neurocyte0132889 quits (~neurocyte@94.16.67.223) (Changing host)
10:50:19 neurocyte0132889 joins (~neurocyte@user/neurocyte)
10:53:11 <[exa]> olibiera: so you have a list of strings to find and replace, what does the [Int] mean there?
10:55:03 <[exa]> olibiera: anyway, I guess you want something like
10:55:04 Trattue joins (~Trattue@152.70.182.158)
10:55:07 <olibiera> the int are the values i want to replace in xs if  the words are equal
10:55:24 <[exa]> replace' xs (y:ys) (z:zs) = replace' (replace'' y z xs) ys zs
10:55:28 <olibiera> the words in xs and ys
10:55:38 <[exa]> there you process one replacement, and continue with replacing the other replacements on the result
10:57:16 <[exa]> anyway yeah it makes sense now, I got confused by the ordering of the arguments (normally we tend to put the "data" as the last parameter, as you have in replace'')
10:57:37 <olibiera> ty so much, this is to confusing to me, i ll look slowly in the code
10:58:52 <olibiera> oh k got it, makes sense
11:02:31 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 250 seconds)
11:05:05 deadmarshal joins (~deadmarsh@95.38.116.242)
11:05:08 timCF joins (~timCF@200-149-20-81.sta.estpak.ee)
11:06:10 <timCF> Hello! Is there the way to unlift type-level bool to term-level bool, similar to what `symbolVal` is doing with type-level strings?
11:07:12 <lortabac> @singleton-bool
11:07:13 <lambdabot> Unknown command, try @list
11:07:18 <lortabac> @hackage singleton-bool
11:07:18 <lambdabot> https://hackage.haskell.org/package/singleton-bool
11:07:25 <lortabac> timCF: ^
11:09:11 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
11:09:42 <timCF> lortabac: thanks!
11:12:02 neurocyte0132889 joins (~neurocyte@94.16.67.223)
11:12:02 × neurocyte0132889 quits (~neurocyte@94.16.67.223) (Changing host)
11:12:02 neurocyte0132889 joins (~neurocyte@user/neurocyte)
11:14:39 <timCF> Any ideas why this is not in GHC.TypeLits? Bool is pretty basic type I think
11:15:25 × olibiera quits (~olibiera@a79-169-181-190.cpe.netcabo.pt) (Quit: Client closed)
11:20:27 × wei2912 quits (~wei2912@138.75.71.147) (Quit: Lost terminal)
11:21:27 <arahael> how easy is it for me to cross compile a cabal project to an rpi target? the target is aarm64 running linux. the host is also aarm64, but running macos.
11:22:05 <kuribas> it'd be nice to be able to unlift "any" DataKind
11:23:53 <maerwald> arahael: does docker/qemu work on mac?
11:24:40 <maerwald> there's https://github.com/multiarch/qemu-user-static
11:24:48 <timCF> arahael: 64-bit arm should be fine I think. With armv6 you might have some issues
11:26:25 × vjoki quits (~vjoki@2a00:d880:3:1::fea1:9ae) (Ping timeout: 265 seconds)
11:26:30 × orcus quits (~orcus@user/brprice) (Ping timeout: 260 seconds)
11:27:05 × dispater- quits (~dispater@user/brprice) (Ping timeout: 264 seconds)
11:27:28 × lambdabot quits (~lambdabot@haskell/bot/lambdabot) (Ping timeout: 256 seconds)
11:28:10 × chomwitt quits (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Remote host closed the connection)
11:29:20 vjoki joins (~vjoki@2a00:d880:3:1::fea1:9ae)
11:29:21 orcus joins (~orcus@user/brprice)
11:29:47 dispater joins (~dispater@user/brprice)
11:30:51 lambdabot joins (~lambdabot@silicon.int-e.eu)
11:30:51 × lambdabot quits (~lambdabot@silicon.int-e.eu) (Changing host)
11:30:51 lambdabot joins (~lambdabot@haskell/bot/lambdabot)
11:35:29 <arahael> maerwald: Yeah, that's an option, actually I do have linux on an x86, but the mac is already aarm64.
11:35:50 <arahael> timCF: I don't even know where to start, though.
11:36:18 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
11:37:21 <timCF> arahael: :)
11:37:32 <Sinbad> Using the net-mqtt package I'd like to connect to an mqtt server which has a self signed certificate. I can't see how to configure the client with passing the file path to the certificate. Neither @bar(input):button1
11:38:54 <arahael> timCF: So, I mean, is there like, an environment variable I have to set before calling 'cabal build'? :)
11:39:24 <Sinbad> TLSSettings does not seem to have such field.
11:39:44 __monty__ joins (~toonn@user/toonn)
11:39:46 × jmorris quits (uid433911@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
11:41:10 <timCF> arahael: I actually don't know much about how to do it with cabal, but it should be relatively easy to do with nix https://input-output-hk.github.io/haskell.nix/tutorials/cross-compilation/
11:41:41 <timCF> arahael: But of course it requires at least some nix knowledge
11:42:02 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7483:71c5:e9d:14d3)
11:42:32 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 260 seconds)
11:42:45 <arahael> timCF: I have _some_ nix knowledge, but wow, that looks like a project on it's own.
11:43:12 <arahael> I think my best bet is to probably just run an aarch64 VM, and then do the regular haskell build in that.
11:44:39 <maerwald> "easy to do with nix" ...haha
11:45:33 <maerwald> ghcup supports building GHC cross toolchains, but 1. it requires you to have the C libs for the correct architecture and 2. I don't know what the state of TH cross-compilation is
11:46:17 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7483:71c5:e9d:14d3) (Ping timeout: 250 seconds)
11:47:19 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
11:51:29 × Sinbad quits (~Sinbad@user/sinbad) (Ping timeout: 250 seconds)
12:03:44 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
12:03:51 notzmv joins (~zmv@user/notzmv)
12:05:12 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:07:21 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
12:10:40 Midjak joins (~Midjak@82-65-111-221.subs.proxad.net)
12:10:53 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
12:11:10 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:15:24 kupi joins (uid212005@hampstead.irccloud.com)
12:15:45 × cfricke quits (~cfricke@user/cfricke) (Ping timeout: 250 seconds)
12:16:41 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
12:16:48 jollygood2 joins (~bc8165b6@217.29.117.252)
12:17:07 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:18:31 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
12:20:13 jakalx joins (~jakalx@base.jakalx.net)
12:21:25 AlexNoo_ is now known as AlexNoo
12:22:29 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
12:22:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:28:06 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 256 seconds)
12:28:55 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:29:41 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
12:30:05 deadmarshal joins (~deadmarsh@95.38.116.242)
12:30:53 lavaman joins (~lavaman@98.38.249.169)
12:34:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
12:35:20 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:36:56 machinedgod joins (~machinedg@24.105.81.50)
12:40:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
12:40:41 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:40:42 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
12:40:56 lavaman joins (~lavaman@98.38.249.169)
12:41:03 × lavaman quits (~lavaman@98.38.249.169) (Remote host closed the connection)
12:42:32 × juhp quits (~juhp@128.106.188.220) (Quit: juhp)
12:43:16 × max22- quits (~maxime@2a01cb08833598003ad2294d5328f338.ipv6.abo.wanadoo.fr) (Ping timeout: 265 seconds)
12:46:18 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
12:46:43 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
12:47:05 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
12:47:36 × Cajun quits (~Cajun@user/cajun) (Quit: Client closed)
12:48:14 puke joins (~puke@user/puke)
12:49:17 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Quit: The Lounge - https://thelounge.chat)
12:50:04 neurocyte0132889 joins (~neurocyte@94.16.67.223)
12:50:04 × neurocyte0132889 quits (~neurocyte@94.16.67.223) (Changing host)
12:50:04 neurocyte0132889 joins (~neurocyte@user/neurocyte)
12:50:25 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
12:56:50 juhp joins (~juhp@128.106.188.220)
12:57:17 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
12:57:47 × Pickchea quits (~private@user/pickchea) (Ping timeout: 250 seconds)
12:58:10 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:03:34 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
13:03:46 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:05:25 boxscape_ joins (~boxscape_@134.171.69.87)
13:06:51 × Kaipi quits (~Kaiepi@156.34.44.192) (Quit: Leaving)
13:07:07 Kaiepi joins (~Kaiepi@156.34.44.192)
13:09:22 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
13:09:31 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:11:21 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
13:11:43 stiell joins (~stiell@gateway/tor-sasl/stiell)
13:11:44 × jlamothe quits (~jlamothe@198.251.61.229) (Ping timeout: 256 seconds)
13:12:06 alzgh joins (~alzgh@user/alzgh)
13:12:18 wei2912 joins (~wei2912@138.75.71.147)
13:15:08 fuzzypixelz_ joins (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
13:16:10 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 260 seconds)
13:16:21 × son0p quits (~ff@181.136.122.143) (Remote host closed the connection)
13:19:31 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
13:20:28 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:21:23 epolanski joins (uid312403@helmsley.irccloud.com)
13:24:01 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
13:25:26 son0p joins (~ff@181.136.122.143)
13:25:48 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
13:25:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:28:15 ystael joins (~ystael@user/ystael)
13:28:44 × alx741 quits (~alx741@181.196.68.87) (Ping timeout: 256 seconds)
13:31:37 bitmapper joins (uid464869@lymington.irccloud.com)
13:34:58 slowButPresent joins (~slowButPr@user/slowbutpresent)
13:35:57 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
13:36:58 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:36:59 Pickchea joins (~private@user/pickchea)
13:38:21 deadmarshal joins (~deadmarsh@95.38.116.242)
13:39:02 max22- joins (~maxime@2a01cb0883359800387721e60f64db31.ipv6.abo.wanadoo.fr)
13:42:14 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
13:42:37 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:43:11 Farzad joins (~FarzadBek@178.131.26.179)
13:43:40 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7483:71c5:e9d:14d3)
13:48:18 × pop3 quits (~pop3@user/pop3) (Remote host closed the connection)
13:48:20 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7483:71c5:e9d:14d3) (Ping timeout: 268 seconds)
13:48:42 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Quit: Reconnecting)
13:48:48 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
13:48:57 pop3 joins (~pop3@user/pop3)
13:50:05 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
13:55:17 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 265 seconds)
13:55:50 deadmarshal joins (~deadmarsh@95.38.116.242)
13:59:46 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Quit: = "")
14:11:58 gehmehgeh_ joins (~user@user/gehmehgeh)
14:12:12 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 276 seconds)
14:13:19 alx741 joins (~alx741@181.196.68.87)
14:14:09 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 276 seconds)
14:14:49 jpds joins (~jpds@gateway/tor-sasl/jpds)
14:15:18 motherfsck joins (~motherfsc@user/motherfsck)
14:17:57 × fuzzypixelz_ quits (~fuzzypixe@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Ping timeout: 250 seconds)
14:20:03 Sinbad joins (~Sinbad@user/sinbad)
14:21:40 × mcgroin quits (~mcgroin@roc37-h01-176-170-197-243.dsl.sta.abo.bbox.fr) (Quit: WeeChat 3.3)
14:22:48 Sgeo joins (~Sgeo@user/sgeo)
14:23:31 × timCF quits (~timCF@200-149-20-81.sta.estpak.ee) (Quit: leaving)
14:24:55 shriekingnoise joins (~shrieking@186.137.144.80)
14:29:05 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
14:29:26 jpds joins (~jpds@gateway/tor-sasl/jpds)
14:32:58 × jollygood2 quits (~bc8165b6@217.29.117.252) (Quit: http://www.okay.uz/ (Ping timeout))
14:35:32 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
14:35:54 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3))
14:36:57 mimmy joins (~mimmy@72.142.88.18)
14:37:22 kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be)
14:41:13 dschrempf joins (~dominik@070-207.dynamic.dsl.fonira.net)
14:41:19 gehmehgeh_ is now known as gehmehgeh
14:41:21 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
14:42:12 <boxscape_> I don't suppose there exists a library that lets you parse a Haskell code string into a template haskell Exp?
14:42:27 <dminuoso> There is
14:42:29 <merijn> boxscape_: eh...
14:42:30 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 260 seconds)
14:42:34 <merijn> "template-haskell"? :p
14:42:47 <boxscape_> Hm I didn't know template-haskell included a parser
14:42:47 <merijn> That's what all the quasi quoters do :p
14:42:47 <dminuoso> ^-
14:42:53 <boxscape_> oh I se
14:42:54 <boxscape_> e
14:42:59 <merijn> boxscape_: Because it's hidden as a quasi-quoter
14:43:02 <boxscape_> right, ok
14:43:12 <boxscape_> thanks
14:43:14 <merijn> % [e|2 + 5|]
14:43:15 <yahb> merijn: InfixE (Just (LitE (IntegerL 2))) (VarE GHC.Num.+) (Just (LitE (IntegerL 5)))
14:44:47 jespada joins (~jespada@252-155-231-201.fibertel.com.ar)
14:44:51 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
14:45:46 × Farzad quits (~FarzadBek@178.131.26.179) (Quit: Leaving)
14:47:16 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Remote host closed the connection)
14:53:00 Guest46 joins (~Guest46@catv-80-98-84-78.catv.broadband.hu)
14:53:16 <fcortesi> Hello
14:53:17 <fcortesi> Offtopic question: It's better to keep bug reports short and "dry", without much presentation and such? I try to valorate the time of the devs by doing so but I have this feeling of (maybe) being interpreted as rude, specially when nobody knows me in the comunity. On the other hand it feels a bit stupid when trying to make messages a bit more personal an "friendlier"..
14:54:54 <maerwald> I follow this template, adapted from lkml "Your software is utter sh*t. It's broken. Seriously. Anyway, here's why: <insert bug report>."
14:56:11 × mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 265 seconds)
14:56:15 <janus> today is Haskell eXchange Novice track : https://skillsmatter.com/conferences/13580-haskell-exchange-2021-novice
14:56:22 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
14:56:22 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
14:56:22 wroathe joins (~wroathe@user/wroathe)
14:57:03 <kuribas> fcortesi: keep them to the point, but adding information is always a good thing.
14:57:36 <fcortesi> Ok. Thanks.
14:58:12 × dajoer quits (~david@user/gvx) (Quit: leaving)
14:58:32 <kuribas> elaborating a bit on the error may make it easier for them to find the bug.
14:59:10 mimmy joins (~mimmy@72.142.88.18)
14:59:12 <kritzefitz> fcortesi: If you feel like adding niceties, maybe do so by including a nice sentence like „thanks for your consideration“ or similar at the end. Keeping it separate from the actual problem description helps to not detract from the actual content. But I'd still say it's optional and personally I usually avoid it.
14:59:17 Guest46 parts (~Guest46@catv-80-98-84-78.catv.broadband.hu) ()
14:59:24 <fcortesi> Yes, but often the best way of explaining is just to copy a few lines of code...
14:59:47 <fcortesi> (answer to kuribas)
15:01:16 <kritzefitz> fcortesi: if your report consists mostly of a snippet of code (that can be compiled an run standalone) that is often a good thing and usually it doesn't need much more than an explanation of what behavior you are observing and what behavior you would expect instead.
15:02:22 <fcortesi> kritzefitz: Thanks. I was afraid of that being interpreted negatively.
15:02:59 <tomsmeding> yeah, saying "I have this small snippet of code, which I expect to do X because of reason R but instead it does Y" is usually a great bug report -- reproducers are very valuable when debugging an issue, so valuable in fact that sometimes that's sufficient nicety for a maintainer to become happy with your report :)
15:03:58 <fcortesi> Excelent, thanks!
15:04:34 × Sinbad quits (~Sinbad@user/sinbad) (Quit: WeeChat 3.3)
15:05:21 <merijn> reliable reproducer >>>>> anything else
15:05:37 <merijn> Well, a *minimal* reliable reproducer is even better
15:07:20 × alzgh quits (~alzgh@user/alzgh) (Remote host closed the connection)
15:07:24 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
15:07:29 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
15:07:30 shapr joins (~user@pool-100-36-247-68.washdc.fios.verizon.net)
15:07:41 <fcortesi> Yes from a technical perspective I agree, and it's more or less what I see. But I dont know wether everybody here knows each other before declaring something to be wrong with an issue.
15:08:09 <fcortesi> But I think I got it, thanks.
15:09:04 sinbad joins (~sinbad@user/sinbad)
15:09:22 jkaye joins (~jkaye@2601:281:8300:7530:e618:9306:a767:ab2)
15:12:02 × jespada quits (~jespada@252-155-231-201.fibertel.com.ar) (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:12:28 × fryguybo1 quits (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com) (Quit: leaving)
15:12:53 fryguybob joins (~fryguybob@cpe-74-67-169-145.rochester.res.rr.com)
15:13:11 <lortabac> a user called fcortesi asks whether they should be polite, how beautiful :P
15:13:58 <dminuoso> fcortesi: It's a complicated question and depends on how well you can communicate, how much time the other person has to look into your gory details, and whether they have the skill to quickly get a picture of your code and mentally filter.
15:14:16 <dminuoso> Generally short test cases are the best, but in some cases they can be difficult to produce
15:14:23 <lortabac> (cortesi means polite in Italian)
15:15:27 <fcortesi> Seriously?
15:15:48 <fcortesi> lortabac: I just don't want to get banned :P.
15:16:16 <lortabac> :D
15:17:20 <maerwald> merijn: right, so a good bug report needs: 1. insult, 2. reproducer
15:17:21 <maerwald> :D
15:19:09 <fcortesi> I'll try :P.
15:19:55 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
15:20:08 <kritzefitz> If you want to be creative about it, your reproducer insults the developer if buggy, but doesn't when the bug is fixed.
15:21:03 <maerwald> tbf... angry people on my bug trackers tend to motivate me more. I guess that's PTSD from industry.
15:21:29 <merijn> It's the opposite for me
15:21:33 tomsmeding is not sure that holds for the majority of maintainers
15:21:44 <maerwald> tomsmeding: yeah, that's what my therapist said
15:21:47 <merijn> Angers just triggers me "get fucked" response
15:21:48 <tomsmeding> lol
15:26:14 justsomeguy joins (~justsomeg@user/justsomeguy)
15:26:25 <davean> maerwald: there was an angry person a bug tracker last year for a project so I just put it out of my rotation for a bit and I still haven't gotten back to it :-p
15:28:24 chomwitt joins (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
15:30:01 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 265 seconds)
15:32:03 × kupi quits (uid212005@hampstead.irccloud.com) (Quit: Connection closed for inactivity)
15:32:42 jakalx parts (~jakalx@base.jakalx.net) (Error from remote client)
15:36:31 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
15:36:31 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
15:36:31 wroathe joins (~wroathe@user/wroathe)
15:37:15 tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net)
15:37:41 jakalx joins (~jakalx@base.jakalx.net)
15:38:33 × dfip^ quits (~dfip@h50.174.139.63.static.ip.windstream.net) (Remote host closed the connection)
15:38:42 jlamothe joins (~jlamothe@198.251.61.229)
15:41:37 × mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 265 seconds)
15:41:42 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
15:41:51 xkuru joins (~xkuru@user/xkuru)
15:45:06 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:7483:71c5:e9d:14d3)
15:48:01 × ubert quits (~Thunderbi@p548c9fcb.dip0.t-ipconnect.de) (Quit: ubert)
15:48:18 lavaman joins (~lavaman@98.38.249.169)
15:49:49 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:7483:71c5:e9d:14d3) (Ping timeout: 268 seconds)
15:52:25 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds)
15:52:44 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
15:54:46 ouro_boros joins (~ouroboros@2804:14c:65e4:93f6::1001)
15:55:49 ec joins (~ec@gateway/tor-sasl/ec)
15:56:38 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
15:56:41 mimmy joins (~mimmy@72.142.88.18)
15:57:25 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
16:05:23 waleee joins (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd)
16:06:49 × wei2912 quits (~wei2912@138.75.71.147) (Quit: Lost terminal)
16:07:12 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
16:08:10 hippoid joins (~hippoid@d60-65-25-145.col.wideopenwest.com)
16:09:19 fef joins (~thedawn@user/thedawn)
16:09:34 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
16:09:34 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
16:09:34 wroathe joins (~wroathe@user/wroathe)
16:10:48 × boxscape_ quits (~boxscape_@134.171.69.87) (Ping timeout: 256 seconds)
16:10:53 × acidsys quits (~LSD@2.lsd.systems) (Excess Flood)
16:11:28 acidsys joins (~LSD@2.lsd.systems)
16:13:39 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
16:14:14 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 246 seconds)
16:14:25 <pop3> is there any introduction about algebraic effects(like fused-effects) design pattern?
16:17:20 × pop3 quits (~pop3@user/pop3) (Quit: Leaving.)
16:17:36 pop3 joins (~pop3@user/pop3)
16:18:54 × hippoid quits (~hippoid@d60-65-25-145.col.wideopenwest.com) (Quit: leaving)
16:24:41 × chele quits (~chele@user/chele) (Remote host closed the connection)
16:24:51 chele joins (~chele@user/chele)
16:24:52 × lortabac quits (~lortabac@2a01:e0a:541:b8f0:4f7e:a333:a04f:8257) (Quit: WeeChat 2.8)
16:27:26 × motherfsck quits (~motherfsc@user/motherfsck) (Quit: quit)
16:28:02 eggplantade joins (~Eggplanta@2600:1700:bef1:5e10:2d58:181a:7f09:e906)
16:33:20 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Ping timeout: 265 seconds)
16:39:24 vpan joins (~0@212.117.1.172)
16:51:33 Farzad joins (~FarzadBek@151.238.206.168)
16:57:40 <tomsmeding> pop3: not an answer to your question, but potentially relevant: https://reasonablypolymorphic.com/blog/porting-to-polysemy/index.html
16:57:44 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:00:05 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer)
17:01:35 × son0p quits (~ff@181.136.122.143) (Ping timeout: 264 seconds)
17:02:58 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 260 seconds)
17:05:03 _ht joins (~quassel@82-169-194-8.biz.kpn.net)
17:08:17 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
17:11:22 × mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 260 seconds)
17:12:53 mimmy joins (~mimmy@72.142.88.18)
17:15:32 × xff0x quits (~xff0x@2001:1a81:52ee:6600:5c66:cf47:7ae9:a061) (Ping timeout: 268 seconds)
17:15:37 × waleee quits (~waleee@2001:9b0:216:8200:d457:9189:7843:1dbd) (Ping timeout: 250 seconds)
17:16:18 xff0x joins (~xff0x@2001:1a81:52ee:6600:9858:fc63:c087:3f3e)
17:17:50 waleee joins (~waleee@h-98-128-228-119.NA.cust.bahnhof.se)
17:18:06 <perrierjouet> hi all
17:18:33 <geekosaur> œ
17:21:33 <tomsmeding> geekosaur: is that supposed to represent an IPA vowel?
17:21:52 <geekosaur> "oe", old style
17:22:06 <geekosaur> roughly the same as ö but from old english
17:22:56 <geekosaur> there's also æ
17:23:02 <tomsmeding> yeah I've seen those :p
17:23:34 <tomsmeding> just trying to interpret the usage of œ as a response to a greeting :p
17:23:46 <geekosaur> "oh (hi)"
17:24:03 × kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 26.3))
17:24:10 <tomsmeding> different sound though :P
17:24:16 <geekosaur> also drawing just a little bit on SCA :)
17:24:48 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
17:25:06 tomsmeding is not sure again https://en.wikipedia.org/wiki/SCA
17:25:32 <davean> https://en.wikipedia.org/wiki/Oi_(interjection)
17:25:34 <tomsmeding> "Supercheap Auto" -- sounds like a very reputable car manufacturer
17:25:43 <geekosaur> https://en.wikipedia.org/wiki/Society_for_Creative_Anachronism
17:26:13 <tomsmeding> davean: "intensely cockney"
17:26:18 <geekosaur> where I'm reaching for "Oyez" and admittedly missing a little bit :)
17:27:15 <tomsmeding> heh neat
17:29:46 <tomsmeding> https://www.theonion.com/society-for-creative-anachronism-seizes-control-of-russ-1819565189 , though this is -offtopic at this point
17:30:21 × dschrempf quits (~dominik@070-207.dynamic.dsl.fonira.net) (Ping timeout: 250 seconds)
17:30:57 <EvanR> I'm offended for the ancients by this cultural appropriation
17:32:31 <geekosaur> tomsmeding, that joke has been around for, er, ages
17:32:56 × ChaiTRex quits (~ChaiTRex@user/chaitrex) (Quit: ChaiTRex)
17:33:47 ChaiTRex joins (~ChaiTRex@user/chaitrex)
17:34:14 × mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 265 seconds)
17:38:55 neurocyte0132889 joins (~neurocyte@94.46.69.238)
17:38:55 × neurocyte0132889 quits (~neurocyte@94.46.69.238) (Changing host)
17:38:55 neurocyte0132889 joins (~neurocyte@user/neurocyte)
17:39:00 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
17:40:00 MoC joins (~moc@user/moc)
17:43:22 × neurocyte0132889 quits (~neurocyte@user/neurocyte) (Read error: Connection reset by peer)
17:43:59 neurocyte0132889 joins (~neurocyte@94.46.69.238)
17:43:59 × neurocyte0132889 quits (~neurocyte@94.46.69.238) (Changing host)
17:43:59 neurocyte0132889 joins (~neurocyte@user/neurocyte)
17:44:25 × chele quits (~chele@user/chele) (Remote host closed the connection)
17:45:11 × the_proffesor quits (~theproffe@user/theproffesor) (Remote host closed the connection)
17:46:49 × jkaye quits (~jkaye@2601:281:8300:7530:e618:9306:a767:ab2) (Ping timeout: 250 seconds)
17:47:02 lavaman joins (~lavaman@98.38.249.169)
17:50:38 deadmarshal joins (~deadmarsh@95.38.116.242)
17:51:05 fef joins (~thedawn@user/thedawn)
17:51:07 × rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Remote host closed the connection)
17:53:16 rekahsoft joins (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com)
17:54:17 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
17:55:07 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
17:57:10 justsomeguy joins (~justsomeg@user/justsomeguy)
17:57:18 × vpan quits (~0@212.117.1.172) (Quit: Leaving.)
17:57:58 mimmy joins (~mimmy@72.142.88.18)
17:59:02 <tomsmeding> ;)
18:01:25 <monochrom> old style pig says: œnk >:)
18:01:41 <sshine> hehe
18:02:45 × rekahsoft quits (~rekahsoft@cpe0008a20f982f-cm64777d666260.cpe.net.cable.rogers.com) (Ping timeout: 265 seconds)
18:03:14 emf joins (~emf@162.218.217.186)
18:03:17 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 250 seconds)
18:05:54 <tomsmeding> 'Henry Ford polymorphism ("any type a as long as it's Int")' -- SPJ
18:06:46 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
18:06:55 <monochrom> heh
18:07:49 emf_ joins (~emf@2620:10d:c090:400::5:91bf)
18:08:11 × emf quits (~emf@162.218.217.186) (Ping timeout: 264 seconds)
18:08:34 × zava quits (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de) (Ping timeout: 268 seconds)
18:11:30 × mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 256 seconds)
18:11:34 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 260 seconds)
18:18:24 × mbuf quits (~Shakthi@223.184.58.239) (Quit: Leaving)
18:25:17 <geekosaur> heh
18:25:23 <geekosaur> (having found the context)
18:26:11 × sinbad quits (~sinbad@user/sinbad) (Quit: Client closed)
18:26:30 wonko joins (~wjc@user/wonko)
18:27:38 tom_ joins (~tom@2a00:23c8:970c:4801:5b6a:e81b:79dc:f684)
18:28:24 <tom_> davean: How do you decide with machines library whether to use Mealy or write a plan from scratch?
18:28:25 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
18:29:05 <davean> tom_: what do you want to say about what you're doing? How do you want to use it? What do you want to represent with your code?
18:29:11 <davean> code is like poetry, form is meaning
18:29:37 <tom_> So I have a player in a card game
18:29:58 <tom_> I want to encode the card game rules as some kind of machines
18:29:59 econo joins (uid147250@user/econo)
18:30:08 <tom_> I am thinking the players are also machines
18:30:16 aliosablack joins (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374)
18:30:51 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
18:31:15 <tom_> So I was planning on making a player a Mealy machine but I am not sure if using Mealy is correct as changes to the game state such as next turn will trigger changes to players
18:31:24 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
18:31:24 × chomwitt quits (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Ping timeout: 268 seconds)
18:32:04 <davean> It depends on your model of a game - turn change is a symbol in the language of a card game
18:32:11 <davean> as if recieving a card
18:32:16 <davean> and you emit your actions
18:32:28 <davean> it makes sense as a mealy if you want to think about it that way
18:33:07 <davean> This is very much like SAX parsing
18:33:20 <davean> if you don't like language analogies
18:33:27 <davean> (though its ... idential)
18:33:50 <tom_> The card game turns are represented by a moore machine
18:34:08 <tom_> So I guess this would emit actions which are read by the player mealys
18:34:27 <davean> right
18:34:29 <davean> mealy transforms
18:34:45 <davean> it transforms a series of card game events into actions specificly
18:34:55 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Ping timeout: 250 seconds)
18:35:09 <tom_> How would I do that with the library?
18:35:22 <tom_> Connect a Moore and multiple Mealys
18:35:39 × eggplantade quits (~Eggplanta@2600:1700:bef1:5e10:2d58:181a:7f09:e906) (Remote host closed the connection)
18:35:41 × mcglk quits (~mcglk@131.191.49.120) (Quit: (seeya))
18:35:52 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
18:36:09 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
18:36:52 <davean> so a Moore still has inputs
18:37:07 <davean> what you really want at the top is probably a Source
18:37:14 <davean> or something
18:37:29 <davean> you could just use that as a clock source though
18:38:03 <tom_> Are "actions" the parameters to transition functions?
18:38:05 mimmy joins (~mimmy@72.142.88.18)
18:38:27 × justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.2)
18:43:41 mark__ joins (~a@p200300ef973db1d9502293e1a26d2ca1.dip0.t-ipconnect.de)
18:43:45 <davean> actions in my above usage was the outputs of a player - what they choose to do
18:44:41 <mark__> Can someone explain or reproduce this: "x :: Maybe Int; x = Nothing"; seq x ()", ":sprint x" -> "x = _" Why?
18:44:44 <mark__> x is not polymorph. It's a value constructor and seq should force it but doesn't. But print does: "print x", ":sprint x" -> "x = Nothing"
18:45:29 jkaye joins (~jkaye@2601:281:8300:7530:7289:19f7:f3fa:e188)
18:45:46 <mark__> core dump of x: x = GHC.Maybe.Nothing @ Int
18:46:07 × eggplantade quits (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net) (Remote host closed the connection)
18:46:28 <EvanR> Prints a value without forcing its evaluation. :sprint is similar to :print, with the difference that unevaluated subterms are not bound to new variables, they are simply denoted by _.
18:46:33 <EvanR> (docs for :sprint)
18:47:11 <mark__> Yes but note the "seq x ()"
18:47:41 eggplantade joins (~Eggplanta@108-201-191-115.lightspeed.sntcca.sbcglobal.net)
18:48:26 <EvanR> I'm not sure the real reason, but the semantics of seq technically don't say that the first arg will be evaluated
18:48:38 <tom_> davean: If a player has lots of state such as current chips,cards etc would you be inclined to use a MealyT (State PlayerInfo) and put common state there?
18:48:45 <tom_> placeBet :: Chips -> (Player, Mealy Action Player)
18:48:54 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 256 seconds)
18:49:35 <tom_> I guess that the second type constructor for Mealy is for current state perhaps
18:49:49 <davean> I have a meeting,will reply later
18:49:54 <tom_> no worries
18:50:17 <EvanR> try x::Maybe Int; x = error "BOOM"
18:50:32 <mark__> EvanR: The docs say "it evaluates the first argument a to weak head normal form (WHNF)."
18:50:41 <EvanR> which docs
18:50:58 <mark__> https://hackage.haskell.org/package/ghc-prim-0.8.0/docs/GHC-Prim.html#v:seq
18:51:41 <EvanR> interesting, well everything else in that documentation is what I thought I knew
18:52:00 <EvanR> for example, if x is definitely not bottom (somehow we know this), seq is not required to evalauted it
18:52:42 <EvanR> seq only ensures that if x would explode, seq x foo explodes
18:52:57 <EvanR> hence my suggested follow up
18:53:11 × xff0x quits (~xff0x@2001:1a81:52ee:6600:9858:fc63:c087:3f3e) (Ping timeout: 264 seconds)
18:53:30 xff0x joins (~xff0x@2001:1a81:52ee:6600:288d:876:4868:af07)
19:00:00 juhp_ joins (~juhp@128.106.188.82)
19:00:45 <mark__> "x :: Maybe Int; x = error "boom"; seq x ()" throws an error. But this is expected because seq is trying to evaluate error "boom" to WHNF.
19:01:34 <EvanR> it does in this case
19:01:43 <EvanR> which is good
19:02:13 × juhp quits (~juhp@128.106.188.220) (Ping timeout: 268 seconds)
19:02:14 juhp_ is now known as juhp
19:02:22 <EvanR> I put x=Just undefined, then seq x () leaves x=_. But y <- evaluate x results in x=Just _
19:02:43 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
19:03:43 <EvanR> otoh x=undefined, y <- evaluate x crashes. Which is good. otoh x=Just undefined, y <- evaluate (seq x ()) results in x=_
19:04:20 <c_wraith> EvanR: cannot repro. https://paste.tomsmeding.com/xdLmAFHS
19:04:39 sprout_ joins (~quassel@2a02:a467:ccd6:1:e14a:d90e:46d2:87c4)
19:04:43 <EvanR> You may want to try putting a non trivial computation in x which is not bottom and see if it's looking at the constant header to avoid evaluating
19:05:02 <c_wraith> EvanR: that might be your problem, if you've introduced something typeclass-polymorphic
19:05:28 <c_wraith> You might be hitting the lack of monomorphism restriction
19:06:13 <EvanR> I reproduced what you got
19:06:27 <EvanR> and what I got (by adding the type sign on the same line)
19:06:33 × max22- quits (~maxime@2a01cb0883359800387721e60f64db31.ipv6.abo.wanadoo.fr) (Ping timeout: 268 seconds)
19:06:33 <EvanR> *interesting*
19:06:46 <c_wraith> and when you allow typeclass polymorphism, https://paste.tomsmeding.com/cFWIjwXR
19:07:20 <c_wraith> That's why ghci used to have the monomorphism restriction
19:07:27 <c_wraith> (it no longer does)
19:07:30 <EvanR> I don't really understand
19:07:42 <EvanR> more polymorphism results in evaluation
19:08:01 × sprout quits (~quassel@2a02:a467:ccd6:1:19a8:3d0f:213:c260) (Ping timeout: 245 seconds)
19:08:10 <c_wraith> bounded (type class) polymorphism makes it a function internally
19:08:20 <c_wraith> That ghc provides the first function to, automatically
19:08:24 <EvanR> what type class are we even talking about
19:08:29 <c_wraith> in my example, Num
19:08:43 <EvanR> in the original example (let x = Just undefined) ?
19:09:28 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
19:10:15 <EvanR> anyway it seems that in some circumstance seq (legally) won't evaluate the x, like it knows something sprint doesn't
19:10:17 <c_wraith> I must not understand what your example is doing, because everything I try works the way I expect.... https://paste.tomsmeding.com/UmfQYs9a
19:10:34 × pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-48-67-70-102-17.dsl.bell.ca) (Quit: ZNC 1.8.2 - https://znc.in)
19:10:50 <EvanR> just to be clear, you can reproduce the original thing just chose not to? xD
19:11:00 <c_wraith> No, I don't understand it.
19:11:08 × bliminse quits (~bliminse@host86-185-253-43.range86-185.btcentralplus.com) (Quit: leaving)
19:11:13 <c_wraith> I do what I think you said and get the result I expect.
19:11:19 <c_wraith> So I must not understand what you did
19:11:25 pieguy128 joins (~pieguy128@bas1-quebec14-67-70-102-17.dsl.bell.ca)
19:12:07 <EvanR> (btw this wasn't my question it's marks) x::Maybe Int; x = Just undefined; seq x (); :sprint x results in x=_
19:12:13 <mark__> c_wraith: Is the behavior I posted also what you expect? Do you expect that seq x () does not eval x to WHNF if x is a monomorphic value con like Nothing :: Maybe Int?
19:12:34 <EvanR> it also happens with Just
19:13:39 <c_wraith> oh. You're bamboozling yourself
19:13:59 <c_wraith> they should never have removed the requirement to use let in ghci
19:14:38 <EvanR> ah, using let (and the mono type sig) does change it
19:14:42 <EvanR> what the hell is the difference
19:14:51 bliminse joins (~bliminse@host86-185-253-43.range86-185.btcentralplus.com)
19:14:53 <c_wraith> it's one statement instead of two
19:15:30 × Profpatsch quits (~Profpatsc@static.88-198-193-255.clients.your-server.de) (Ping timeout: 260 seconds)
19:15:51 <EvanR> um, my question stands xD
19:15:53 Profpatsch joins (~Profpatsc@static.88-198-193-255.clients.your-server.de)
19:15:58 <EvanR> oh it becomes polymorphic?
19:16:17 <EvanR> nope
19:16:19 <mark__> how would I write it with let?
19:16:22 unit73e joins (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291)
19:16:33 <EvanR> let x::Maybe Int; x=Just undefined
19:16:55 <EvanR> which doesn't result in a different type for x
19:17:03 × fef quits (~thedawn@user/thedawn) (Remote host closed the connection)
19:17:04 <EvanR> but seq treats it differently
19:17:14 <mark__> I tried this but if i do this ghci waits for more input.
19:17:17 <c_wraith> My version of ghci doesn't even let me enter what you're doing.
19:17:32 <c_wraith> If I want to put a type signature there, I need the let
19:17:40 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 265 seconds)
19:17:45 <EvanR> so we have three different acting versions of ghci? xD
19:17:47 desantra joins (~skykanin@user/skykanin)
19:17:56 <EvanR> I don't wait for more input and I don't need let
19:18:13 <c_wraith> This is why I keep pastebinning my examples - it makes it a lot more clear exactly what I'm entering
19:18:27 × aliosablack quits (~chomwitt@2a02:587:dc12:3f00:12c3:7bff:fe6d:d374) (Quit: Leaving)
19:18:34 <EvanR> i'll pastebin something
19:19:00 <tomsmeding> c_wraith: https://paste.tomsmeding.com/4ir9lLhI
19:19:26 <unit73e> I find it hard to believe that simple code doesn't work in a past version of ghci lol
19:19:33 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 250 seconds)
19:19:42 <EvanR> https://paste.tomsmeding.com/EPxbDEmP
19:19:48 <mark__> Can reproduce! Disabled multiline commands. Now if I do "let x = Nothing :: Maybe Int" I get :sprint = x = Nothing.
19:20:24 <c_wraith> unit73e: ghci used to be very clear and make perfect sense, and people hated it. So they kept making it more and more ad-hoc
19:20:45 <mark__> So what exactly is the difference between "x = Nothing" and "let x = Nothing"?
19:20:52 <mark__> in ghci
19:21:11 <EvanR> supposedly no let means it was two commands
19:21:20 <EvanR> not sure how that matters here
19:21:40 <c_wraith> I think this is just a ghci bug
19:21:49 <mark__> Learners should know this because it's the difference between expected and weird behavior.
19:22:05 mastarija joins (~mastarija@2a05:4f46:e06:ff00:dd0f:baa7:ff4f:4d80)
19:22:24 <c_wraith> My fix would be to remove the ability to revert ghci to sane behavior.
19:22:38 <EvanR> mandatory insanity
19:22:41 <c_wraith> err. haha. that's a confused sentence.
19:22:54 <c_wraith> Revert ghci to sanity.
19:23:07 <c_wraith> remove the ability to enter top-level declarations
19:23:34 <EvanR> so it might be a special treatment of top level objects
19:23:42 <c_wraith> yeah, and it's buggy
19:23:49 <c_wraith> that isn't correct behavior
19:24:10 <EvanR> since it technically doesn't violate seq, maybe no one noticed
19:24:24 <unit73e> I don't think it matters
19:24:29 <c_wraith> I mean, it's not a spec violation at all
19:24:37 <c_wraith> lazy evaluation is *not* a requirement of the Haskell spec
19:24:46 <c_wraith> it only requires non-strict evaluation
19:24:59 <tomsmeding> i.e. call by name is also allowed?
19:25:02 <c_wraith> yes
19:25:05 <EvanR> it's not a lazy evaluation it's a no evaluation at all
19:25:11 <c_wraith> and that's the observed behavior in that case
19:25:16 <EvanR> like a no-call in football
19:25:23 <c_wraith> No, it's call-by-name evaluation
19:25:42 <EvanR> oh god... the call-bys
19:25:42 <c_wraith> ie, it doesn't memoize the result
19:25:50 <tomsmeding> (in case you don't know that term: re-evaluate at each usage site, instead of only at the first usage and then memoise)
19:25:50 <mark__> is there a short example to show the differnce between lazy and non-strict evalutation? I always thought it's the same thing.
19:26:03 <EvanR> so you think it actually evaluates
19:26:15 <c_wraith> yes. I think it evaluates it, and then throws it out.
19:26:37 <mark__> one of them memoizes the other doesn't?
19:26:42 <c_wraith> yes
19:27:20 <c_wraith> more specifically: non-strict means... any strategy that isn't strict.
19:27:22 <unit73e> just so you know ghci 9.0.1 crashes if you do that
19:27:35 <c_wraith> ghc 9.0 was really buggy in a lot of ways
19:27:43 <unit73e> I mean this: x::Maybe Int; x=Just undefined
19:27:47 <unit73e> throws an exception
19:27:58 <mark__> so it's eager?
19:28:00 <EvanR> weird
19:28:02 <c_wraith> an exception? or just a compilation error
19:28:08 johnny_sitar joins (~artur@078088015209.bialystok.vectranet.pl)
19:28:19 <unit73e> exception
19:28:42 <unit73e> https://paste.tomsmeding.com/4UBU57g1
19:28:56 <EvanR> ah well you asked for x
19:28:57 <c_wraith> oh, that's expected. you tried to print it
19:28:59 <EvanR> which prints it out
19:29:12 <c_wraith> that's why we were using :sprint
19:29:20 <c_wraith> which only prints as much as has been evaluated
19:29:36 <tomsmeding> the call by name evaluation is inconsistent though: https://paste.tomsmeding.com/tS1PgVlB
19:29:43 <unit73e> alright lets try again
19:30:03 <EvanR> *only prints as much as has been evaluated... and then saved
19:30:07 <c_wraith> tomsmeding: well yes. I'm certain it's a bug, from GHC's point of view. It's just not a spec violation
19:30:34 chianuo joins (chianuo@gateway/vpn/protonvpn/chianuo)
19:30:42 tomsmeding has apparently run into this bug half a million times already
19:30:46 <mark__> c_wraith: If non-strict means no memoization does this there is no sharing? So square x evalautes to x * x and if x is complicated term it has to compute it every time?
19:30:49 <tomsmeding> I was certain I had no idea how :sprint worked
19:30:56 <tomsmeding> because I'd tried this always without 'let'
19:30:57 <mark__> *mean
19:31:03 <unit73e> https://paste.tomsmeding.com/cIUqPUcn
19:31:06 <c_wraith> mark__: non-strict just means "not strict". It could memoize, or not.
19:31:07 <unit73e> so.. _
19:31:11 <EvanR> lazy evaluation (save the result) is a specialized strategy for non-strict
19:31:14 <unit73e> it does make sense
19:31:29 <unit73e> not seq nonsense
19:31:44 × Raito_Bezarius quits (~Raito@2a01:e0a:5f9:9681:1c66:fc75:c47c:31bc) (Changing host)
19:31:44 Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius)
19:31:52 <unit73e> same result I guess
19:31:56 <EvanR> so morally, you expect seq to evaluate the argument
19:32:20 <tomsmeding> consider the program 'let x = ... ; y = ... in x + x'. Suppose you evaluate this program. Strict (call-by-value) evaluation would compute x and y ; lazy (call-by-need) would compute x once ; call-by-name would compute x _twice_
19:32:25 <c_wraith> not morally. I expect it to obey its (very precise) specification
19:32:31 <EvanR> well, it does here
19:32:55 <EvanR> even if it didn't evaluate due to non-bottom
19:33:13 <mark__> I learned two things for ghci: 1) Check MMR 2) use "let"
19:33:17 × bitmapper quits (uid464869@lymington.irccloud.com) (Quit: Connection closed for inactivity)
19:33:24 <tomsmeding> that (1) is a classic in #haskell
19:33:59 × elvishjerricco quits (sid237756@helmsley.irccloud.com) (Ping timeout: 264 seconds)
19:34:14 <ozzloy_> c_wraith, i hope you got sleep or will get sleep soon
19:34:16 <c_wraith> typeclass polymorphism often prevents sharing, in ghci
19:34:29 <c_wraith> ozzloy_: hasn't it been like 10 hours? I slept. :)
19:34:40 <ozzloy_> it has!
19:34:55 <mark__> tomsmeding: I thought I did not understand :sprint. But truth is, i did not understand ghci :)
19:35:02 elvishjerricco joins (sid237756@helmsley.irccloud.com)
19:35:08 × mastarija quits (~mastarija@2a05:4f46:e06:ff00:dd0f:baa7:ff4f:4d80) (Quit: Leaving)
19:35:36 <tomsmeding> amen
19:35:50 <c_wraith> I do think you found a ghci bug
19:35:51 × desantra quits (~skykanin@user/skykanin) (Quit: WeeChat 3.3)
19:36:11 <c_wraith> that behavior shouldn't change based on that syntactic difference
19:36:36 <c_wraith> But I'm pretty sure it's only a ghci bug, and not one that breaks any specified behavior.
19:41:17 <tomsmeding> is someone going to report this bug? Otherwise I will :p
19:42:13 × Midjak quits (~Midjak@82-65-111-221.subs.proxad.net) (Quit: This computer has gone to sleep)
19:49:29 Guest5126 joins (~Guest51@180.230.60.84)
19:50:56 × mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 268 seconds)
19:52:24 × chianuo quits (chianuo@gateway/vpn/protonvpn/chianuo) (Quit: WeeChat 3.4-dev)
19:54:41 <mark__> tomsmeding: yes please. To reproduce 1) bad case:
19:54:44 <mark__> "x :: Maybe Int; x = Nothing", ":sprint x" -> "x = _", "seq x ()", ":sprint x" -> "x = _" (This is not in WHNF!)
19:54:47 <mark__> good case:
19:54:56 <mark__> with let: "let y :: Maybe Int; y = Nothing"; ":sprint y" -> "y = Nothing"
19:55:32 <tomsmeding> right, including the comparison with my product example, which is inconsistent with "it's just call-by-name"
19:55:47 tomsmeding is building a ghc from HEAD to ensure it's not fixed there
19:57:11 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Remote host closed the connection)
19:57:44 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
19:57:55 mimmy joins (~mimmy@72.142.88.18)
19:58:12 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Remote host closed the connection)
19:58:55 geekosaur joins (~geekosaur@xmonad/geekosaur)
20:02:00 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 256 seconds)
20:05:31 × juhp quits (~juhp@128.106.188.82) (Ping timeout: 265 seconds)
20:06:46 juhp joins (~juhp@128.106.188.82)
20:08:04 <Guest5126> Is this the Tom and Jerry market? Send me a private message
20:10:02 <tomsmeding> mark__: the issue is confused by the essentially orthogonal, but nevertheless related, https://gitlab.haskell.org/ghc/ghc/-/issues/10160
20:10:24 <tomsmeding> (which is still valid, by my limited testing)
20:11:11 cjb joins (~cjbayliss@user/cjb)
20:12:31 × eruditass quits (uid248673@uxbridge.irccloud.com) (Ping timeout: 268 seconds)
20:13:11 × pop3 quits (~pop3@user/pop3) (Remote host closed the connection)
20:13:33 eruditass joins (uid248673@uxbridge.irccloud.com)
20:14:03 pop3 joins (~pop3@user/pop3)
20:15:11 <mark__> Is the fact that y = Nothing is not a thunk but immediately known even though seq/print wasn't used expected behavior or is an instance of 10160?
20:15:23 <mark__> with respect the good case (2)
20:15:27 <mark__> *to
20:16:02 <tomsmeding> "y = Nothing" not yielding a thunk is naively unexpected, but nevertheless correct, behaviour
20:16:07 <tomsmeding> done for performance reasons
20:16:20 Guest42 joins (~Guest42@eth-west-pareq2-46-193-4-100.wb.wifirst.net)
20:16:58 <tomsmeding> ah but this #10160 is producing redd herrings
20:17:15 <tomsmeding> mark__: https://paste.tomsmeding.com/Vw5Rz83h
20:17:31 <EvanR> there's only ever 1 Nothing, [], (), floating around at any given time xD
20:17:35 <tomsmeding> the fact that Nothing is a plain data constructor changes things
20:17:35 × wonko quits (~wjc@user/wonko) (Remote host closed the connection)
20:19:34 <mark__> the first one looks fine but the second should be _ : _, shouldn't it?
20:22:14 <tomsmeding> mark__: sorry, the essential comparison missing: https://paste.tomsmeding.com/2e92s4gm
20:23:09 × Guest42 quits (~Guest42@eth-west-pareq2-46-193-4-100.wb.wifirst.net) (Quit: Client closed)
20:23:25 max22- joins (~maxime@2a01cb08833598005714d2986a3eb6d2.ipv6.abo.wanadoo.fr)
20:24:05 Lycurgus joins (~juan@98.4.112.204)
20:24:16 dfip^ joins (~dfip@h50.174.139.63.static.ip.windstream.net)
20:24:38 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
20:24:40 × alx741 quits (~alx741@181.196.68.87) (Ping timeout: 256 seconds)
20:25:15 aegon joins (~mike@174.127.249.180)
20:26:05 <tomsmeding> conjecture: 'seq x ()' leaves a ghci top-level definition 'x' unevaluated precisely if 1. x is defined without 'let', and 2. x is defined as a plain data constructor, not a thunk
20:26:12 <mark__> c (no let) is simply wrong. That's no WHNF. d (with let) did not stop at the first value con (somehow "overevaluated") but is not wrong.
20:26:24 deadmarshal joins (~deadmarsh@95.38.116.242)
20:26:43 <tomsmeding> (d) is because of #10160 Ithink
20:28:19 <mark__> i think technically it's ok because every normal form is also whnf
20:28:23 <tomsmeding> (ghc HEAD does the same thing in for my last paste)
20:28:27 <tomsmeding> yeah
20:30:04 <tomsmeding> Prelude> let z :: [Int] ; z = [1,2,undefined,3] | Prelude> :sprint z | z = [1,2,_,3]
20:30:49 <tomsmeding> this is more than #10160 says, because one of those (:) applications doesn't have only NF arguments!
20:30:54 × deadmarshal quits (~deadmarsh@95.38.116.242) (Ping timeout: 256 seconds)
20:31:59 yauhsien joins (~yauhsien@61-231-43-127.dynamic-ip.hinet.net)
20:33:31 <EvanR> tomsmeding, I was thinking that, and originally though I could test it with a less trivial top level definition
20:33:49 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
20:34:02 <EvanR> but... it's kind of like tree falling in the woods with no one there
20:35:16 <EvanR> z's top node is :, but if it was an actual computation that would need to run, would sprint see it then
20:35:25 <EvanR> without let
20:35:54 mcglk joins (~mcglk@131.191.49.120)
20:36:34 × yauhsien quits (~yauhsien@61-231-43-127.dynamic-ip.hinet.net) (Ping timeout: 256 seconds)
20:36:53 <tomsmeding> EvanR: see https://paste.tomsmeding.com/tS1PgVlB
20:37:44 zincy_ joins (~zincy@2a00:23c8:970c:4801:350f:7ee:191a:6f65)
20:37:50 <tomsmeding> EvanR: or more to the point to your exact question: https://paste.tomsmeding.com/De664kvY
20:38:24 <tomsmeding> this is consistent with the first case in https://paste.tomsmeding.com/2e92s4gm
20:38:55 <tomsmeding> the only case that is not explained by #10160 is the third case in https://paste.tomsmeding.com/2e92s4gm , I think
20:39:17 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
20:39:21 × burnsidesLlama quits (~burnsides@dhcp168-015.wadham.ox.ac.uk) (Ping timeout: 265 seconds)
20:40:00 slack1256 joins (~slack1256@186.11.99.34)
20:40:24 Codaraxis joins (~Codaraxis@user/codaraxis)
20:40:31 <EvanR> it does indeed evaluate a and remember it without let if it would have to do a computation
20:40:43 <EvanR> i knew it! xD
20:41:08 <slack1256> Is there anyway to specify different cost centers break down on the same executable? Currently I am running the same program with `-hc` or `-hm` to the the whole picture.
20:41:11 <tomsmeding> yeah, but if evaluates (possibly nested) direct constructor applications in one go
20:41:15 <tomsmeding> s/if/it/
20:41:25 <slack1256> Probably I could get the same view of the RTS from the eventlog interface. Has somebody done that?
20:42:08 desantra joins (~skykanin@user/skykanin)
20:42:39 <tomsmeding> EvanR: um wat? 'a :: Int ; a = id [1,2,3]' gives _ and _:_ -- now it suddenly breaks up the NF chunk
20:45:31 <tomsmeding> lol
20:45:40 <EvanR> that tracks
20:45:49 <tomsmeding> EvanR: https://paste.tomsmeding.com/7ONg80mp
20:45:52 lavaman joins (~lavaman@98.38.249.169)
20:45:56 <tomsmeding> madness
20:45:58 <EvanR> assuming id counts as requiring computation
20:46:11 <tomsmeding> well it has different behaviour than everything :p
20:46:22 <EvanR> c and e shows
20:47:32 <EvanR> just the fact that we are investigating this for the sake of it, when if it wasn't like this, we wouldn't be, is annoying xD
20:48:02 <tomsmeding> EvanR: in my latest paste, the non-let version is actually _more_ consistent: there, the results for map and id are equivalent
20:50:28 × lavaman quits (~lavaman@98.38.249.169) (Ping timeout: 265 seconds)
20:52:49 × m4lvin quits (~m4lvin@w4eg.de) (Quit: m4lvin)
20:53:40 × jle` quits (~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com) (Quit: WeeChat 3.3)
20:54:01 jle` joins (~jle`@2603-8001-3b02-84d4-0000-0000-0000-025d.res6.spectrum.com)
20:54:24 m4lvin joins (~m4lvin@w4eg.de)
20:54:42 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 256 seconds)
20:55:21 × Farzad quits (~FarzadBek@151.238.206.168) (Quit: Leaving)
20:56:57 × zincy_ quits (~zincy@2a00:23c8:970c:4801:350f:7ee:191a:6f65) (Remote host closed the connection)
20:58:24 × Lycurgus quits (~juan@98.4.112.204) (Quit: Exeunt)
20:59:01 <Guest5126> hi
20:59:10 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 265 seconds)
21:00:21 <Guest5126> Anyone who knows how to contact Tom and Jerry Market
21:03:09 Tuplanolla joins (~Tuplanoll@91-159-69-50.elisa-laajakaista.fi)
21:04:51 × johnny_sitar quits (~artur@078088015209.bialystok.vectranet.pl) (Ping timeout: 250 seconds)
21:05:23 <geekosaur> why would you be asking that here?
21:07:29 Guest5161 joins (~Guest51@180.230.60.84)
21:07:53 × _ht quits (~quassel@82-169-194-8.biz.kpn.net) (Remote host closed the connection)
21:08:39 theproffesor joins (~theproffe@2601:282:847f:8010::390f)
21:08:39 × theproffesor quits (~theproffe@2601:282:847f:8010::390f) (Changing host)
21:08:40 theproffesor joins (~theproffe@user/theproffesor)
21:09:21 alx741 joins (~alx741@181.196.68.87)
21:10:14 raehik joins (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net)
21:10:34 <shapr> what was that about?
21:10:42 son0p joins (~ff@181.136.122.143)
21:10:52 <tomsmeding> well, the Tom and Jerry Market, presumably
21:10:56 <geekosaur> no clue
21:12:53 <sm> toons need groceries too
21:14:29 × derelict quits (~derelict@user/derelict) (Quit: bye)
21:14:52 <tomsmeding> EvanR: https://tomsmeding.com/vang/7qvC5S do you agree this describes the issue adequately?
21:14:55 <tomsmeding> mark__: ^
21:14:59 derelict joins (~derelict@user/derelict)
21:15:36 × raehik quits (~raehik@cpc95906-rdng25-2-0-cust156.15-3.cable.virginm.net) (Ping timeout: 265 seconds)
21:16:22 × mustafa quits (sid502723@rockylinux/releng/mustafa) ()
21:16:32 mustafa joins (sid502723@rockylinux/releng/mustafa)
21:17:33 <mark__> Haha, so now we have: No 'let': a) as expected, c) as expected, e) simply wrong. With 'let': b) as expected, d) not intuitive but not wrong, f) not intuitive but not wrong. :)
21:17:46 <mark__> Very nice. Thank you for writing this up.
21:19:31 pavonia joins (~user@user/siracusa)
21:19:34 <tomsmeding> yeah it's beautiful, isn't it?
21:19:39 <mark__> So we only get consistent and expected behavior if the outermost call is not 'id' and not a value con.
21:19:50 × m4lvin quits (~m4lvin@w4eg.de) (Quit: m4lvin)
21:20:01 jespada joins (~jespada@252-155-231-201.fibertel.com.ar)
21:20:10 <tomsmeding> the 'id' case is an example of a case where, after WHNF evaluation, you get an entire constructor application chunk
21:20:17 m4lvin joins (~m4lvin@w4eg.de)
21:20:38 <tomsmeding> in that case, and in the value con case, #10160 applies and wreaks havoc
21:21:01 <tomsmeding> the _new_ thing with this issue is the discrepancy between let and non-let
21:21:19 <tomsmeding> I'll submit :)
21:21:25 <mark__> thank you
21:21:33 <tomsmeding> EvanR: mark__: https://gitlab.haskell.org/ghc/ghc/-/issues/20687
21:24:27 <tomsmeding> and now I'm off to bed :)
21:24:50 <EvanR> correct
21:25:10 zincy_ joins (~zincy@host86-181-60-139.range86-181.btcentralplus.com)
21:26:26 × desantra quits (~skykanin@user/skykanin) (Quit: WeeChat 3.3)
21:28:52 <Guest5161> Can anyone tell me how to contact the Tom and Jerry store?
21:29:07 ChanServ sets mode +o geekosaur
21:29:18 geekosaur sets mode +b *!*Guest51@180.230.60.*
21:29:18 Guest5161 is kicked by geekosaur (Guest5161)
21:29:27 geekosaur sets mode -o geekosaur
21:29:57 <geekosaur> hm, less than ideal, that ban
21:30:01 ChanServ sets mode +o geekosaur
21:30:59 geekosaur sets mode +b *!*@180.230.60.84
21:31:08 geekosaur sets mode -b *!*Guest51@180.230.60.*
21:31:19 geekosaur sets mode -o geekosaur
21:32:20 × zincy_ quits (~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection)
21:32:33 zincy_ joins (~zincy@2a00:23c8:970c:4801:350f:7ee:191a:6f65)
21:32:42 × ystael quits (~ystael@user/ystael) (Read error: Connection reset by peer)
21:33:54 ystael joins (~ystael@user/ystael)
21:38:10 <yushyin> with https://libera.chat/guides/bots#litharge you can add a ban record for e.g. a few days; useful for ip bans
21:38:54 <geekosaur> I was planning to remove it this evening, but I'll look into it
21:40:11 <geekosaur> ooh, I like that last part. I'm always worried about the scope of bans
21:40:24 × zincy_ quits (~zincy@2a00:23c8:970c:4801:350f:7ee:191a:6f65) (Remote host closed the connection)
21:40:54 ChanServ sets mode +o geekosaur
21:42:18 <geekosaur> welp. I got ops but not permissions for that :(
21:42:19 geekosaur sets mode -o geekosaur
21:43:19 zincy_ joins (~zincy@host86-181-60-139.range86-181.btcentralplus.com)
21:46:02 × myShoggoth quits (~myShoggot@97-120-85-195.ptld.qwest.net) (Read error: Connection reset by peer)
21:46:19 myShoggoth joins (~myShoggot@97-120-85-195.ptld.qwest.net)
21:46:28 Guest4530 joins (~Guest45@185.16.69.203)
21:50:44 <ozzloy_> what's this about tom and jerry store? is this a meme i'm unaware of?
21:51:37 slack1256 hates PINNED memory leaks.
21:52:18 <EvanR> I'm not sure I wanna know what tom and jerry is
21:52:42 <EvanR> (probably not the cartoon)
21:56:42 × jespada quits (~jespada@252-155-231-201.fibertel.com.ar) (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:00:11 geekosaur guesses it's some sort of cat-and-mouse allusion to "hacking" and we have another idiot who thinks all IRCers are "hackers"
22:00:33 zebrag joins (~chris@user/zebrag)
22:00:51 <ozzloy_> hello, fellow hackers
22:03:14 ozzloy_ adjusts his novelty disguise glasses with giant nose and obviously fake moustachioeau
22:04:13 × unit73e quits (~emanuel@2001:818:e8dd:7c00:32b5:c2ff:fe6b:5291) (Ping timeout: 250 seconds)
22:04:18 <EvanR> no one here but us hackers
22:04:27 <ozzloy_> tis a good day for doing the illegals with the computers. wouldn't you say?
22:06:18 ChanServ sets mode +o geekosaur
22:06:25 litharge joins (litharge@libera/bot/litharge)
22:07:04 geekosaur sets mode -o geekosaur
22:09:42 × infinity0 quits (~infinity0@occupy.ecodis.net) (Remote host closed the connection)
22:10:59 <shapr> ozzloy_: righto old chap
22:12:00 × dhouthoo quits (~dhouthoo@178-117-36-167.access.telenet.be) (Quit: WeeChat 3.3)
22:16:49 burnsidesLlama joins (~burnsides@dhcp168-015.wadham.ox.ac.uk)
22:18:34 × mikoto-chan quits (~mikoto-ch@esm-84-240-99-143.netplaza.fi) (Ping timeout: 256 seconds)
22:20:41 × mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 250 seconds)
22:27:04 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Ping timeout: 256 seconds)
22:27:37 <jkaye> Yeah personally I love doing my illicit activities on a public messaging system that anyone can look at whenever they want
22:31:24 infinity0 joins (~infinity0@occupy.ecodis.net)
22:36:09 emerson joins (~emerson@libera/staff/emerson)
22:41:14 mimmy joins (~mimmy@72.142.88.18)
22:45:13 × Guest5126 quits (~Guest51@180.230.60.84) (Ping timeout: 256 seconds)
22:45:14 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Remote host closed the connection)
22:45:19 zava joins (~zava@ip5f5bdf0f.dynamic.kabel-deutschland.de)
22:45:32 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
22:45:59 × mimmy quits (~mimmy@72.142.88.18) (Ping timeout: 265 seconds)
22:46:02 fresheyeball joins (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net)
22:52:56 × zincy_ quits (~zincy@host86-181-60-139.range86-181.btcentralplus.com) (Remote host closed the connection)
22:54:12 × machinedgod quits (~machinedg@24.105.81.50) (Ping timeout: 265 seconds)
22:55:15 merijn joins (~merijn@83-160-49-249.ip.xs4all.nl)
22:55:27 jmorris joins (uid433911@hampstead.irccloud.com)
22:55:36 × fresheyeball quits (~fresheyeb@c-76-25-93-164.hsd1.co.comcast.net) (Quit: WeeChat 2.9)
23:07:00 alzgh joins (~alzgh@user/alzgh)
23:08:19 zincy_ joins (~zincy@2a00:23c8:970c:4801:2831:8d93:d152:2332)
23:11:10 × epolanski quits (uid312403@helmsley.irccloud.com) (Quit: Connection closed for inactivity)
23:12:22 × Techcable_ quits (~Techcable@168.235.93.147) (Quit: ZNC - https://znc.in)
23:14:19 jbox joins (~jbox@user/jbox)
23:14:26 Techcable joins (~Techcable@168.235.93.147)
23:14:49 atlas joins (~jbox@user/jbox)
23:16:14 × cosimone quits (~user@2001:b07:ae5:db26:a7aa:8027:6b4e:2fb3) (Quit: ERC (IRC client for Emacs 27.1))
23:16:15 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
23:18:38 × Gurkenglas quits (~Gurkengla@dslb-002-203-144-204.002.203.pools.vodafone-ip.de) (Ping timeout: 256 seconds)
23:19:14 × sagax quits (~sagax_nb@user/sagax) (Excess Flood)
23:19:22 × jbox quits (~jbox@user/jbox) (Ping timeout: 268 seconds)
23:21:49 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
23:26:25 × puke quits (~puke@user/puke) (Quit: puke)
23:29:09 × cjb quits (~cjbayliss@user/cjb) (Remote host closed the connection)
23:29:35 × merijn quits (~merijn@83-160-49-249.ip.xs4all.nl) (Ping timeout: 250 seconds)
23:31:13 × michalz quits (~michalz@185.246.204.57) (Remote host closed the connection)
23:32:23 cjb joins (~cjbayliss@user/cjb)
23:32:43 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)
23:40:18 ChanServ sets mode +o geekosaur
23:40:32 geekosaur sets mode -b *!*@180.230.60.84
23:40:36 geekosaur sets mode -o geekosaur
23:40:53 × perrierjouet quits (~perrier-j@modemcable012.251-130-66.mc.videotron.ca) (Quit: WeeChat 3.3)
23:42:18 mimmy joins (~mimmy@2607:fea8:6e0:7f90:d1ec:e4ac:744a:8e08)
23:50:14 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
23:52:30 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:53:54 wroathe joins (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net)
23:53:54 × wroathe quits (~wroathe@c-68-54-25-135.hsd1.mn.comcast.net) (Changing host)
23:53:54 wroathe joins (~wroathe@user/wroathe)
23:54:38 machinedgod joins (~machinedg@24.105.81.50)
23:55:04 × srk quits (~sorki@user/srk) (Remote host closed the connection)
23:55:22 srk joins (~sorki@user/srk)
23:58:10 perrierjouet joins (~perrier-j@modemcable012.251-130-66.mc.videotron.ca)

All times are in UTC on 2021-11-15.