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.