Home liberachat/#haskell: Logs Calendar

Logs on 2023-04-16 (liberachat/#haskell)

00:04:25 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 240 seconds)
00:04:50 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
00:05:29 waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7)
00:09:05 × gurkenglas quits (~gurkengla@dynamic-046-114-182-107.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
00:17:25 × heraldo quits (~heraldo@user/heraldo) (Ping timeout: 276 seconds)
00:18:03 × grnman_ quits (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 255 seconds)
00:20:35 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
00:20:36 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
00:20:36 wroathe joins (~wroathe@user/wroathe)
00:23:56 × pharonix71 quits (~pharonix7@gateway/tor-sasl/pharonix71) (Changing host)
00:23:56 pharonix71 joins (~pharonix7@user/pharonix71)
00:24:05 grnman_ joins (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
00:25:52 pavonia joins (~user@user/siracusa)
00:26:30 heraldo joins (~heraldo@user/heraldo)
00:26:59 × barcisz quits (~barcisz@79.191.65.29.ipv4.supernova.orange.pl) (Quit: Connection closed)
00:28:45 × grnman_ quits (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 240 seconds)
00:36:30 nitrix joins (~nitrix@user/nitrix)
00:40:51 <nitrix> Hello. This is a bit coming from the left field, but knowing the strong knowledge about reactive programming and logic systems in the community, I'll try to throw a shot in the dark, we'll see if I'm lucky.
00:41:32 <nitrix> I'm trying to build a "production system" which operates with a set of "facts" and "rules". The rules reactively match against facts to create yet more facts. The whole thing is forward-chained I believe. What I'd like to be able to do is to prove that the format I chose for my rules can express all computations: GIVEN x WHEN y THEN z;
00:42:00 <nitrix> GIVEN matches facts but does not consume them. WHEN matches facts and consumes them. THEN creates new facts.
00:42:35 <nitrix> This seems awefully lambda / SKI-combinator-like to me. Any tips in any direction would help :3
00:44:58 <ski> this sounds like ##prolog could also possibly give suggestions. i can already see similarities between CHR (Constraint Handling Rules), and what you're asking about
00:46:45 <monochrom> https://en.wikipedia.org/wiki/Rule-based_system and https://en.wikipedia.org/wiki/Expert_system
00:46:46 <nitrix> Mhm. That was going to be my next stop :)
00:47:21 <nitrix> Hopefully Anniepoo is there or triska :P
00:48:04 <ski> Anniepoo has been there a long time in the past, but seems to have been gone for some time
00:48:53 <ski> (may perhaps be on a discord, you could try asking)
00:50:04 <ski> e.g. <https://www.swi-prolog.org/pldoc/man?section=chr>,<http://www.informatik.uni-ulm.de/pm/fileadmin/pm/home/fruehwirth/constraint-handling-rules-book.html> might be helpful, for CHR
00:56:56 <ski> specifically your `GIVEN x WHEN y THEN Z;' corresponds to the "simpagation" (simplfication&propagation) type of CHR rule, which would look like `x \ y <=> z.'. logically, this amounts to `x => (y <=> z)'. the constraint `y' is equivalent to the constraint `z' so we may replace `y' with `z' (without losing information). but this only holds under the condition of `z', so the replacement only holds when the
00:57:02 <ski> constraint `x' holds (and `x' is not removed). you can also add additional (non-constraint) conditions (written in the host language, here Prolog) for the rule, like `x \ y <=> z :- Blah.'
01:10:35 × albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection)
01:11:55 ryantrinkle joins (~ryantrink@140.174.248.64)
01:16:42 albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8)
01:32:50 × sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection)
01:33:32 sefidel joins (~sefidel@user/sefidel)
01:34:44 viole joins (~viole@user/viole)
01:37:57 <viole> Hi. Last time I used haskell for anything serious was back in ghc 7.4. Just fired up ghci 8.8.4, tried to define a Monoid V and... oh... now requires Semigroup.. and looks like this is what I actually need so, fine, I define it no problem. Now, when I try to type V 1 <> V 2, the prompt returns V 1 <> V 2 :: V, instead of the actual result. What's going on here?
01:38:28 <c_wraith> viole: that sounds like you're asking it for the type
01:38:58 <viole> not really. I then did a partial case V 1 <> V 2 of V x -> x and it does what I want
01:39:10 <viole> let me upload a screenshot
01:41:41 × _xor quits (~xor@74.215.46.17) (Quit: brb rebooting due to usb audio being held by firefox :/)
01:42:15 <Axman6> yeah that does not sound like the behaviour of ghci, something must be wrong
01:42:23 <Axman6> > Sum 1 <> Sum 2
01:42:25 <lambdabot> Sum {getSum = 3}
01:42:38 <c_wraith> I mean, it's exactly the behavior when you put :t in front of an expression...
01:42:45 <Axman6> yeah
01:43:20 <viole> f*** me. This is because I didn't derive Show
01:43:30 <viole> mistery solved
01:43:35 <viole> if Show is missing, it'll do this
01:43:39 <Axman6> TIL about lens' Ixed instance for functions, how handy!
01:43:41 <c_wraith> in what environment? ghc just gives an error message...
01:43:47 <c_wraith> err, ghci
01:43:54 <Axman6> viole: huh, I feel like I've never seen that happen
01:44:28 <c_wraith> I'm testing with ghci 8.8.4, and get • No instance for (Show Foo) arising from a use of ‘print’
01:44:30 <viole> c_wraith: haskell-mode interaction (version... let me check), emacs 27.1
01:44:45 <Axman6> Also worth noting that ghc 8.8 is quite old now - if you installed it using your OS's package manager, you might want to consider removing it and using ghcup to manage the installation of all the tools you'll need
01:44:56 <c_wraith> oh. this is what you get for integrating with editors. :P
01:45:21 <Axman6> nice feature though
01:45:29 <viole> c_wraith: wasn't like this back then, but it's not like it's bad, just unexpected and did throw me for a loop
01:45:48 <Axman6> US too!
01:47:05 <viole> anyway, if you still want to see the screenshot, I'll paste it. I listen to suggestions, as most image pastebin sites I checked out so far seem quite trashy and full of ads
01:47:30 gehmehgeh joins (~user@user/gehmehgeh)
01:49:29 <Axman6> yeah probably not worth it.
01:50:08 <Axman6> ghcup is worth looking at though, lets you easily manage ghc version through a nice tui, and also tools like cabal, stack and haskell lanuage server
01:50:17 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
01:50:37 <viole> so long is not a pain in the ass to get to work in nixos, I'm all for trying it out... later...
01:50:57 <viole> s/to get to/to get it to/
01:52:58 <Axman6> I'd have to defer to others as to its use on nixos, it's got it's own options. General advice is that OS package managers aren't a good choice for installing ghc, but nixos is likely to be an exception
01:54:23 <viole> nixos both gives me pain, lots of it, and also is a blessing. When managing multiple systems, it's an absolute blessing to simply have a shared mountpoint with definitions and simply import whatever is needed for the current system/machine
01:55:17 <c_wraith> There is a community working hard to make nix work for haskell. But it's always seemed like a tremendous pain to me if I want to manage it myself.
01:55:18 <viole> but many other things are... ugh! hours of struggle to do simple stuff that'd be strightaway in any other distro
02:02:55 × gehmehgeh quits (~user@user/gehmehgeh) (Remote host closed the connection)
02:03:39 gehmehgeh joins (~user@user/gehmehgeh)
02:10:33 × td_ quits (~td@i53870901.versanet.de) (Ping timeout: 265 seconds)
02:11:14 × glguy quits (~glguy@libera/staff-emeritus/glguy) (Read error: Connection reset by peer)
02:11:45 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
02:12:03 td_ joins (~td@i53870922.versanet.de)
02:12:58 × heraldo quits (~heraldo@user/heraldo) (Ping timeout: 265 seconds)
02:18:31 glguy joins (~glguy@libera/staff-emeritus/glguy)
02:21:03 <Axman6> > "A 1 a 2 a 1 2 3 4 let's go!" ^.. worded . _Show :: [Int]
02:21:05 <lambdabot> [1,2,1,2,3,4]
02:38:43 × jero98772 quits (~jero98772@2800:484:1d84:9000:c240:a1ed:a61f:2a0) (Remote host closed the connection)
02:41:33 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
02:45:25 nate1 joins (~nate@98.45.169.16)
02:51:07 grnman_ joins (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
02:55:02 × l0s3r quits (~ensyde@104-62-224-96.lightspeed.chrlnc.sbcglobal.net) (Quit: WeeChat 3.5)
02:55:04 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
02:55:04 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
02:55:04 finn_elija is now known as FinnElija
03:09:46 <Nosrep> anyone noticed the comments on realworldhaskell are messed up?
03:09:58 <Nosrep> they're always for a completely different section if there even are any
03:10:49 falafel joins (~falafel@2603-8000-d700-115c-96a0-9f27-330c-5675.res6.spectrum.com)
03:14:27 <Nosrep> well it seems to be only some this one looks normal enoughg
03:14:35 <Nosrep> a decent fraction
03:48:47 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 264 seconds)
04:01:15 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
04:07:02 harveypwca joins (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67)
04:09:24 × harveypwca quits (~harveypwc@2601:246:c180:a570:3828:d8:e523:3f67) (Remote host closed the connection)
04:10:31 × grnman_ quits (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 240 seconds)
04:28:17 × falafel quits (~falafel@2603-8000-d700-115c-96a0-9f27-330c-5675.res6.spectrum.com) (Ping timeout: 250 seconds)
04:31:28 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Ping timeout: 248 seconds)
04:36:03 MQ-17J joins (~MQ-17J@104.28.216.166)
04:37:06 × MQ-17J quits (~MQ-17J@104.28.216.166) (Client Quit)
04:42:45 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
04:45:23 FurudeRika[m] joins (~chitandae@2001:470:69fc:105::1:6039)
04:47:02 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Read error: Connection reset by peer)
04:47:37 × JoelMcCracken quits (5ea8252fbb@2604:bf00:561:2000::10e3) (Ping timeout: 252 seconds)
04:48:08 emmanuelux joins (~emmanuelu@user/emmanuelux)
04:48:43 × MonsoonSecrecy quits (f78c86e960@2604:bf00:561:2000::f99) (Ping timeout: 252 seconds)
04:49:16 × whereiseveryone quits (206ba86c98@2604:bf00:561:2000::2e4) (Ping timeout: 252 seconds)
04:49:16 × filwisher quits (2e6936c793@2604:bf00:561:2000::170) (Ping timeout: 252 seconds)
04:49:16 × ymherklotz quits (cb2c9cfbdd@2604:bf00:561:2000::29a) (Ping timeout: 252 seconds)
04:49:23 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
04:50:02 JoelMcCracken joins (5ea8252fbb@2604:bf00:561:2000::10e3)
04:50:57 MonsoonSecrecy joins (f78c86e960@2604:bf00:561:2000::f99)
04:51:18 ymherklotz joins (cb2c9cfbdd@2604:bf00:561:2000::29a)
04:51:19 whereiseveryone joins (206ba86c98@2604:bf00:561:2000::2e4)
04:51:25 filwisher joins (2e6936c793@2604:bf00:561:2000::170)
05:01:57 × ft quits (~ft@p4fc2a88b.dip0.t-ipconnect.de) (Quit: leaving)
05:02:35 takuan joins (~takuan@178-116-218-225.access.telenet.be)
05:06:58 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
05:14:04 barak joins (~barak@77.125.91.113)
05:22:16 × Maxdamantus quits (~Maxdamant@user/maxdamantus) (Ping timeout: 276 seconds)
05:22:47 Maxdamantus joins (~Maxdamant@user/maxdamantus)
05:24:41 × geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b)))
05:24:42 allbery_b joins (~geekosaur@xmonad/geekosaur)
05:24:45 allbery_b is now known as geekosaur
05:37:25 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 265 seconds)
05:39:04 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
05:41:08 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
05:41:08 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
05:41:08 wroathe joins (~wroathe@user/wroathe)
05:44:00 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
05:45:43 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
05:46:05 Lycurgus joins (~juan@user/Lycurgus)
05:49:45 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
05:54:54 gurkenglas joins (~gurkengla@dynamic-046-114-182-107.46.114.pool.telefonica.de)
06:04:48 _xor joins (~xor@74.215.46.17)
06:19:08 redmp joins (~redmp@mobile-166-137-179-249.mycingular.net)
06:19:44 <redmp> do any of the common command-line parsing libraries also facilitate pretty-printing back to cli args?
06:20:27 <redmp> i've poked around the source of optparse-generic and optparse-applicative, and the pretty-printing facilities seem buried deep and inaccessibly inside the help-text printers
06:21:08 × Vq quits (~vq@90-227-192-206-no77.tbcn.telia.com) (Ping timeout: 246 seconds)
06:21:47 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
06:22:53 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
06:23:09 Vq joins (~vq@90-227-192-206-no77.tbcn.telia.com)
06:23:27 × euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection)
06:23:38 general_j[m] joins (~generaljm@2001:470:69fc:105::3:463b)
06:25:03 × Lycurgus quits (~juan@user/Lycurgus) (Quit: Exeunt: personae.ai-integration.biz)
06:26:30 euandreh joins (~Thunderbi@189.6.18.7)
06:30:45 × euandreh quits (~Thunderbi@189.6.18.7) (Ping timeout: 240 seconds)
06:31:32 <dsal> Do you mean that you want it to print out the commandline arguments it received?
06:37:20 × waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 248 seconds)
06:41:26 emmanuelux_ joins (~emmanuelu@user/emmanuelux)
06:42:30 × emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Max SendQ exceeded)
06:43:00 <redmp> dsal: yes, or any way to go from an instance of a datatype back to the commandline string(s).. invert the parsing
06:43:45 × emmanuelux quits (~emmanuelu@user/emmanuelux) (Ping timeout: 240 seconds)
06:44:29 euandreh joins (~Thunderbi@189.6.18.7)
06:45:20 emmanuelux_ joins (~emmanuelu@user/emmanuelux)
06:46:25 <hopelessness[m]> that depends on the datatype and how it encapsulates the data
06:47:03 <redmp> I suppose so, but in many cases it's straightforward
06:47:24 <hopelessness[m]> yeah, but it really depends on how it's structured
06:49:04 falafel joins (~falafel@2603-8000-d700-115c-6846-cc5b-2820-7bfc.res6.spectrum.com)
06:50:02 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
06:58:05 × shriekingnoise quits (~shrieking@186.137.175.87) (Ping timeout: 240 seconds)
07:02:15 × Feuermagier_ quits (~Feuermagi@user/feuermagier) (Quit: Leaving)
07:02:27 Feuermagier joins (~Feuermagi@user/feuermagier)
07:06:55 × remexre quits (~remexre@user/remexre) (Remote host closed the connection)
07:07:15 remexre joins (~remexre@user/remexre)
07:07:16 × remexre quits (~remexre@user/remexre) (Remote host closed the connection)
07:07:23 × shreyasminocha quits (51fdc93eda@user/shreyasminocha) (Ping timeout: 248 seconds)
07:07:23 × henrytill quits (e0180937c3@2604:bf00:561:2000::e8c) (Ping timeout: 248 seconds)
07:07:34 remexre joins (~remexre@user/remexre)
07:07:43 <redmp> I guess i'm only really concerned with the use case where the parser is autogenerated, as in the example of optparse-generic and similar
07:07:48 × JoelMcCracken quits (5ea8252fbb@2604:bf00:561:2000::10e3) (Ping timeout: 265 seconds)
07:07:48 × fluffyballoon quits (45ce440a48@2604:bf00:561:2000::e2) (Ping timeout: 265 seconds)
07:07:48 × Ankhers quits (e99e97ef8e@2604:bf00:561:2000::2a2) (Ping timeout: 265 seconds)
07:08:05 × filwisher quits (2e6936c793@2604:bf00:561:2000::170) (Ping timeout: 246 seconds)
07:08:10 × cpli quits (77fc530071@2604:bf00:561:2000::252) (Ping timeout: 260 seconds)
07:08:20 henrytill joins (e0180937c3@2604:bf00:561:2000::e8c)
07:08:27 fluffyballoon joins (45ce440a48@2604:bf00:561:2000::e2)
07:08:44 × remexre quits (~remexre@user/remexre) (Remote host closed the connection)
07:08:47 × MonsoonSecrecy quits (f78c86e960@2604:bf00:561:2000::f99) (Ping timeout: 246 seconds)
07:09:05 remexre joins (~remexre@user/remexre)
07:09:13 cpli joins (77fc530071@2604:bf00:561:2000::252)
07:09:15 × whereiseveryone quits (206ba86c98@2604:bf00:561:2000::2e4) (Ping timeout: 265 seconds)
07:09:27 shreyasminocha joins (51fdc93eda@user/shreyasminocha)
07:09:48 filwisher joins (2e6936c793@2604:bf00:561:2000::170)
07:09:50 MonsoonSecrecy joins (f78c86e960@2604:bf00:561:2000::f99)
07:10:08 <redmp> iirc there are several libraries that work in that way, which are more or less automatic parsers
07:10:38 Ankhers joins (e99e97ef8e@2604:bf00:561:2000::2a2)
07:10:52 JoelMcCracken joins (5ea8252fbb@2604:bf00:561:2000::10e3)
07:12:25 whereiseveryone joins (206ba86c98@2604:bf00:561:2000::2e4)
07:13:55 × falafel quits (~falafel@2603-8000-d700-115c-6846-cc5b-2820-7bfc.res6.spectrum.com) (Ping timeout: 252 seconds)
07:22:10 × whereiseveryone quits (206ba86c98@2604:bf00:561:2000::2e4) (Ping timeout: 260 seconds)
07:22:10 × shreyasminocha quits (51fdc93eda@user/shreyasminocha) (Ping timeout: 260 seconds)
07:22:45 × JoelMcCracken quits (5ea8252fbb@2604:bf00:561:2000::10e3) (Ping timeout: 260 seconds)
07:22:45 × MonsoonSecrecy quits (f78c86e960@2604:bf00:561:2000::f99) (Ping timeout: 260 seconds)
07:22:45 × fluffyballoon quits (45ce440a48@2604:bf00:561:2000::e2) (Ping timeout: 260 seconds)
07:22:45 × henrytill quits (e0180937c3@2604:bf00:561:2000::e8c) (Ping timeout: 260 seconds)
07:23:20 × Ankhers quits (e99e97ef8e@2604:bf00:561:2000::2a2) (Ping timeout: 260 seconds)
07:23:55 × filwisher quits (2e6936c793@2604:bf00:561:2000::170) (Ping timeout: 260 seconds)
07:23:55 × cpli quits (77fc530071@2604:bf00:561:2000::252) (Ping timeout: 260 seconds)
07:24:00 MonsoonSecrecy joins (f78c86e960@2604:bf00:561:2000::f99)
07:24:03 whereiseveryone joins (206ba86c98@2604:bf00:561:2000::2e4)
07:24:03 shreyasminocha joins (51fdc93eda@user/shreyasminocha)
07:24:07 fluffyballoon joins (45ce440a48@2604:bf00:561:2000::e2)
07:24:08 JoelMcCracken joins (5ea8252fbb@2604:bf00:561:2000::10e3)
07:24:10 henrytill joins (e0180937c3@2604:bf00:561:2000::e8c)
07:25:50 filwisher joins (2e6936c793@2604:bf00:561:2000::170)
07:25:53 cpli joins (77fc530071@2604:bf00:561:2000::252)
07:25:55 Ankhers joins (e99e97ef8e@2604:bf00:561:2000::2a2)
07:28:53 tr_ev joins (~trev@user/trev)
07:43:59 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 255 seconds)
07:47:53 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e40f:1779:8d3b:ad7d) (Remote host closed the connection)
07:48:50 × redmp quits (~redmp@mobile-166-137-179-249.mycingular.net) (Quit: leaving)
07:49:47 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
07:51:03 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
07:57:07 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
07:58:49 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
07:59:25 × tzh quits (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) (Quit: zzz)
08:00:09 tr_ev is now known as trev
08:01:15 × pyook quits (~puke@user/puke) (Ping timeout: 248 seconds)
08:01:34 × barak quits (~barak@77.125.91.113) (Remote host closed the connection)
08:01:56 barak joins (~barak@2a0d:6fc2:68c0:a400:74a7:4a2d:bdfd:481e)
08:12:11 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
08:13:43 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
08:18:32 × barak quits (~barak@2a0d:6fc2:68c0:a400:74a7:4a2d:bdfd:481e) (Remote host closed the connection)
08:18:55 barak joins (~barak@2a0d:6fc2:68c0:a400:74a7:4a2d:bdfd:481e)
08:19:27 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
08:24:15 × econo quits (uid147250@user/econo) (Quit: Connection closed for inactivity)
08:27:57 L29Ah joins (~L29Ah@wikipedia/L29Ah)
08:28:34 × troydm quits (~troydm@user/troydm) (Ping timeout: 255 seconds)
08:28:53 troydm joins (~troydm@user/troydm)
08:29:42 falafel joins (~falafel@2603-8000-d700-115c-7e61-551e-1609-efe2.res6.spectrum.com)
08:31:45 ft joins (~ft@dynamic-046-114-104-137.46.114.pool.telefonica.de)
08:35:02 pyook joins (~puke@user/puke)
08:40:55 heraldo joins (~heraldo@user/heraldo)
08:45:12 × heraldo quits (~heraldo@user/heraldo) (Ping timeout: 255 seconds)
08:48:22 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e40f:1779:8d3b:ad7d)
08:52:37 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e40f:1779:8d3b:ad7d) (Ping timeout: 250 seconds)
08:57:47 heraldo joins (~heraldo@user/heraldo)
09:00:04 × VOID[m] quits (~void404ma@2001:470:69fc:105::2:c72c) (Quit: You have been kicked for being idle)
09:06:15 × ft quits (~ft@dynamic-046-114-104-137.46.114.pool.telefonica.de) (Quit: leaving)
09:11:04 × xff0x quits (~xff0x@ai098135.d.east.v6connect.net) (Ping timeout: 276 seconds)
09:12:21 xff0x joins (~xff0x@178.255.149.135)
09:18:45 × heraldo quits (~heraldo@user/heraldo) (Ping timeout: 240 seconds)
09:25:25 × xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 240 seconds)
09:27:34 xff0x joins (~xff0x@2405:6580:b080:900:cdd4:c060:73da:4d99)
09:31:57 heraldo joins (~heraldo@user/heraldo)
09:36:25 × heraldo quits (~heraldo@user/heraldo) (Ping timeout: 240 seconds)
09:43:04 heraldo joins (~heraldo@user/heraldo)
09:43:05 × heraldo quits (~heraldo@user/heraldo) (Client Quit)
09:47:28 Wstfgl0 joins (~me-me@2602:ff16:3:0:1:dc:beef:d00d)
09:48:59 × acidjnk quits (~acidjnk@p200300d6e715c4246144e158ab279f3c.dip0.t-ipconnect.de) (Read error: Connection reset by peer)
09:56:27 × falafel quits (~falafel@2603-8000-d700-115c-7e61-551e-1609-efe2.res6.spectrum.com) (Ping timeout: 248 seconds)
09:59:26 acidjnk joins (~acidjnk@p200300d6e715c424dc796c235bb1f77a.dip0.t-ipconnect.de)
10:03:56 barak_ joins (~barak@77.125.91.113)
10:04:33 × barak quits (~barak@2a0d:6fc2:68c0:a400:74a7:4a2d:bdfd:481e) (Remote host closed the connection)
10:05:48 ft joins (~ft@87.122.10.136)
10:19:05 Feuermagier_ joins (~Feuermagi@user/feuermagier)
10:19:09 × Feuermagier_ quits (~Feuermagi@user/feuermagier) (Remote host closed the connection)
10:22:34 × Techcable quits (~Techcable@user/Techcable) (Ping timeout: 276 seconds)
10:25:32 × barak_ quits (~barak@77.125.91.113) (Remote host closed the connection)
10:25:55 barak_ joins (~barak@2a0d:6fc2:68c0:a400:74a7:4a2d:bdfd:481e)
10:39:12 mc47 joins (~mc47@xmonad/TheMC47)
10:46:29 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
10:52:55 Techcable joins (~Techcable@user/Techcable)
11:11:31 × Axman6 quits (~Axman6@user/axman6) (Remote host closed the connection)
11:24:13 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
11:24:19 __ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
11:26:30 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
11:28:34 × __ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 252 seconds)
11:44:51 Axman6 joins (~Axman6@user/axman6)
11:48:01 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Remote host closed the connection)
11:50:35 × pharonix71 quits (~pharonix7@user/pharonix71) (Ping timeout: 255 seconds)
11:51:31 × vgtw_ quits (~vgtw@user/vgtw) (Ping timeout: 255 seconds)
11:51:49 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
11:53:32 pharonix71 joins (~pharonix7@user/pharonix71)
11:53:42 vgtw joins (~vgtw@user/vgtw)
11:55:09 tjnhxmzh1qgytuwt joins (~user@eth-west-pareq2-46-193-2-167.wb.wifirst.net)
12:07:54 × euandreh quits (~Thunderbi@189.6.18.7) (Remote host closed the connection)
12:08:57 barak__ joins (~barak@77.125.91.113)
12:11:28 × barak_ quits (~barak@2a0d:6fc2:68c0:a400:74a7:4a2d:bdfd:481e) (Ping timeout: 252 seconds)
12:20:58 coot joins (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba)
12:23:17 __monty__ joins (~toonn@user/toonn)
12:28:41 × czy quits (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net) (Remote host closed the connection)
12:32:58 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
12:38:06 npmania joins (~Thunderbi@121.128.226.31)
12:38:25 × pyook quits (~puke@user/puke) (Ping timeout: 276 seconds)
12:39:59 × tjnhxmzh1qgytuwt quits (~user@eth-west-pareq2-46-193-2-167.wb.wifirst.net) (Quit: leaving)
12:47:59 pyook joins (~puke@user/puke)
12:51:04 × npmania quits (~Thunderbi@121.128.226.31) (Ping timeout: 252 seconds)
12:57:00 × Me-me quits (~Me-me@146.102.215.218.dyn.iprimus.net.au) (Quit: Going offline, see ya! (www.adiirc.com))
13:06:27 × Sciencentistguy quits (~sciencent@hacksoc/ordinary-member) (Quit: o/)
13:09:15 Sciencentistguy joins (~sciencent@hacksoc/ordinary-member)
13:12:25 × infinity0 quits (~infinity0@pwned.gg) (Remote host closed the connection)
13:18:05 × barak__ quits (~barak@77.125.91.113) (Ping timeout: 240 seconds)
13:21:58 czy joins (~user@host-140-25.ilcub310.champaign.il.us.clients.pavlovmedia.net)
13:28:39 × paulpaul1076 quits (~textual@95-29-5-208.broadband.corbina.ru) (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:29:13 paulpaul1076 joins (~textual@95-29-5-208.broadband.corbina.ru)
13:32:51 zeenk joins (~zeenk@2a02:2f0e:7900:da01:b4a3:67c4:d0e3:beb0)
13:34:06 barak joins (~barak@77.125.91.113)
13:36:10 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
13:37:27 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
13:41:05 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 246 seconds)
13:45:21 × trev quits (~trev@user/trev) (Quit: trev)
13:46:30 trev joins (~trev@user/trev)
13:48:06 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Remote host closed the connection)
13:48:29 jpds joins (~jpds@gateway/tor-sasl/jpds)
13:49:51 × paulpaul1076 quits (~textual@95-29-5-208.broadband.corbina.ru) (Remote host closed the connection)
13:53:09 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e40f:1779:8d3b:ad7d)
13:55:58 × myme quits (~myme@2a01:799:d60:e400:7be0:70c6:61f8:dad) (Ping timeout: 252 seconds)
13:56:56 myme joins (~myme@2a01:799:d60:e400:f221:398f:f55f:27f9)
13:57:34 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e40f:1779:8d3b:ad7d) (Ping timeout: 252 seconds)
13:59:20 wootehfoot joins (~wootehfoo@user/wootehfoot)
14:02:56 barak_ joins (~barak@77.125.91.113)
14:05:50 × barak quits (~barak@77.125.91.113) (Ping timeout: 260 seconds)
14:08:59 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer)
14:11:11 wootehfoot joins (~wootehfoo@user/wootehfoot)
14:18:04 ozkutuk[m] joins (~ozkutuk@2001:470:69fc:105::2:9af8)
14:25:15 × barak_ quits (~barak@77.125.91.113) (Ping timeout: 246 seconds)
14:36:15 × pie_ quits (~pie_bnc@user/pie/x-2818909) (Ping timeout: 250 seconds)
14:40:55 pie_ joins (~pie_bnc@user/pie/x-2818909)
14:44:55 zeenk2 joins (~zeenk@188.26.30.104)
14:45:11 × zeenk quits (~zeenk@2a02:2f0e:7900:da01:b4a3:67c4:d0e3:beb0) (Ping timeout: 264 seconds)
14:47:45 ss4 joins (~wootehfoo@user/wootehfoot)
14:50:06 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Ping timeout: 246 seconds)
14:50:24 × Ranhir quits (~Ranhir@157.97.53.139) (Read error: Connection reset by peer)
14:51:49 grnman_ joins (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
14:54:09 jero98772 joins (~jero98772@190.158.28.80)
15:01:22 gnalzo joins (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
15:04:02 × ss4 quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
15:05:26 Ranhir joins (~Ranhir@157.97.53.139)
15:06:18 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
15:07:38 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
15:12:44 azimut joins (~azimut@gateway/tor-sasl/azimut)
15:12:58 × pie_ quits (~pie_bnc@user/pie/x-2818909) ()
15:13:21 pie_ joins (~pie_bnc@user/pie/x-2818909)
15:13:39 × zeenk2 quits (~zeenk@188.26.30.104) (Quit: Konversation terminated!)
15:17:09 Sgeo joins (~Sgeo@user/sgeo)
15:22:52 × grnman_ quits (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 276 seconds)
15:24:16 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-8476-90af-61c3-7964.rev.sfr.net) (Remote host closed the connection)
15:25:25 alexherbo2 joins (~alexherbo@2a02-842a-8180-4601-8476-90af-61c3-7964.rev.sfr.net)
15:26:35 × acidjnk quits (~acidjnk@p200300d6e715c424dc796c235bb1f77a.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
15:36:36 AlexNoo_ joins (~AlexNoo@178.34.150.15)
15:37:37 × son0p quits (~ff@181.136.122.143) (Remote host closed the connection)
15:39:05 × AlexZenon quits (~alzenon@178.34.162.18) (Ping timeout: 246 seconds)
15:40:06 × AlexNoo quits (~AlexNoo@178.34.162.18) (Ping timeout: 255 seconds)
15:40:23 × Alex_test quits (~al_test@178.34.162.18) (Ping timeout: 250 seconds)
15:41:57 wroathe joins (~wroathe@50.205.197.50)
15:41:57 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
15:41:57 wroathe joins (~wroathe@user/wroathe)
15:43:48 AlexZenon joins (~alzenon@178.34.150.15)
15:44:18 enoq joins (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7)
15:44:21 random-jellyfish joins (~random-je@user/random-jellyfish)
15:47:35 Alex_test joins (~al_test@178.34.150.15)
15:51:22 <random-jellyfish> How do general purpose CPUs perform integer multiplication? With a combinatorial circuit or a sequential shift-add circuit?
15:51:24 <aavogt[m]> I don't think it exists. But it should be pretty straightforward to use -XGenerics or the Data instance (whatever the parser uses) to traverse the record with access to field labels as String. If you're lucky the parser will already accept whatever show produces
16:00:15 gehmehgeh is now known as gmg
16:01:31 <darkling> random-jellyfish: There's a bunch of different ways. The 8086 used shift/add: http://www.righto.com/2023/03/8086-multiplication-microcode.html
16:01:36 <darkling> (As I think did the ARM)
16:01:42 <darkling> early ARM, that is.
16:01:45 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Ping timeout (120 seconds))
16:02:16 random-jellyfish joins (~random-je@user/random-jellyfish)
16:02:22 <darkling> There's also a combinatorial circuit that's a lot more efficient, but uses loads of gates: https://en.wikipedia.org/wiki/Dadda_multiplier
16:02:39 <darkling> I think there's some variants that use lookup tables as well.
16:06:09 <random-jellyfish> darkling thanks
16:10:47 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
16:13:27 × lagash_ quits (lagash@lagash.shelltalk.net) (Quit: ZNC - https://znc.in)
16:14:02 × trev quits (~trev@user/trev) (Quit: trev)
16:15:27 tr_ev joins (~trev@user/trev)
16:15:32 tr_ev is now known as trev
16:20:50 oac joins (~oac@50-93-248-155.fttp.usinternet.com)
16:21:42 <[exa]> random-jellyfish: btw there's a pretty continuous spectrum of the multiplier configurations that can be generated between both extremes; trading off circuit depth for circuit area. There are also physical constraints in place (3D path lengths). AFAIK actual CPUs use whatever arithmetical circuits that are produced by automated optimizers for a precise given timing, area and energy constraints
16:22:33 econo joins (uid147250@user/econo)
16:23:11 × oac quits (~oac@50-93-248-155.fttp.usinternet.com) (Quit: oac)
16:23:32 XJPL joins (~fatimasar@189-82-108-215.user3p.veloxzone.com.br)
16:24:00 <[exa]> you can see it better on adders I guess; most of the timing improvements there are speculatively executing both versions of one branch so that the result is ready after the branch decision is known. With multipliers it's the "same", just on appropriate steroids.
16:25:47 <[exa]> s/after/at the same time when/
16:26:24 <random-jellyfish> interesting
16:27:43 × XJPL quits (~fatimasar@189-82-108-215.user3p.veloxzone.com.br) ()
16:28:06 <random-jellyfish> I wonder if these optimizers produce only combinatorial logic or also sequential one for shift and add algorithms
16:29:02 <[exa]> sequential logic as with instructions that work in multiple cycles/
16:29:03 <[exa]> ?
16:30:11 gehmehgeh joins (~user@user/gehmehgeh)
16:30:15 <random-jellyfish> no, as with flip-flops and shifters and adders that do one shift-add per clock cycle and save the result in the flip flops for the next iteration
16:30:41 hochata joins (~user@user/hochata)
16:31:23 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
16:33:33 <random-jellyfish> I think that would take the smallest area but it would require a number of clock cycles proportional with the bit width of the operands to get the final result
16:35:23 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
16:35:26 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
16:35:54 random-jellyfish joins (~random-je@user/random-jellyfish)
16:38:33 gehmehgeh joins (~user@user/gehmehgeh)
16:43:05 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
16:45:00 gehmehgeh joins (~user@user/gehmehgeh)
16:45:43 tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net)
16:47:41 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
16:48:25 <monochrom> combinatorial = purely functional; sequential = with mutable state :)
16:49:50 × gehmehgeh quits (~user@user/gehmehgeh) (Ping timeout: 255 seconds)
16:50:57 <monochrom> But it is under the assumption that the purely functional side bans all versions of recursion.
16:51:20 gehmehgeh joins (~user@user/gehmehgeh)
16:51:32 <monochrom> And ironically mutable state in digital circuits is obtained from recursion. This can get into deep philosophy.
16:58:14 <[exa]> Ranhir: ah with flipflops, yeah you can do that, it's still combinatorial (you only get an extra constraint that the layers of your combinatorial circuit have to be the same)
16:58:51 random-jellyfish joins (~random-je@user/random-jellyfish)
16:58:54 <[exa]> oh sorry wrong highlight
16:59:14 <[exa]> random-jellyfish: ah you left for a moment :]
17:01:13 <random-jellyfish> [exa] yeah but I read the saved log
17:02:09 <[exa]> btw I'm not aware of any systematic approach that would be able to "nicely split" the networks into sensible layers like this, reusing the same wires for the next layer
17:02:19 <[exa]> kinda stinks like polyhedral optimization
17:07:14 <random-jellyfish> monochrom yeah it's mutual recursion between 2 or more gates, but yeah it's still recursion
17:08:51 <random-jellyfish> purely functional programming is suspiciously similar to hardware design
17:10:02 <random-jellyfish> I think it would fit formal verification of digital circuits like a glove
17:10:05 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
17:10:07 <random-jellyfish> if it hasn't already...
17:10:35 <[exa]> random-jellyfish: you're invited to study some depths of verilog
17:10:35 <geekosaur> have you looked at clash or copilot?
17:11:33 <[exa]> oh wow clash looks cool
17:11:38 <random-jellyfish> I had a look at clash...doesn't it convert haskell to sythesizable verilog?
17:12:28 <geekosaur> it's an EDSL that can among other things produce verilog
17:15:03 <hammond> does network.http support https?
17:15:44 <geekosaur> and the main reason you'd do that is that there's a lot of hardware design tooling that requires verilog
17:18:48 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Ping timeout (120 seconds))
17:19:19 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e40f:1779:8d3b:ad7d)
17:21:22 random-jellyfish joins (~random-je@user/random-jellyfish)
17:21:26 × jero98772 quits (~jero98772@190.158.28.80) (Ping timeout: 252 seconds)
17:21:52 HQKY joins (~crcastilh@189-82-108-215.user3p.veloxzone.com.br)
17:22:02 HQKY parts (~crcastilh@189-82-108-215.user3p.veloxzone.com.br) ()
17:22:22 HQKY joins (~crcastilh@189-82-108-215.user3p.veloxzone.com.br)
17:23:09 × dsrt^ quits (~dsrt@c-76-105-96-13.hsd1.ga.comcast.net) (Remote host closed the connection)
17:23:20 HQKY parts (~crcastilh@189-82-108-215.user3p.veloxzone.com.br) ()
17:23:21 <random-jellyfish> does clash do simulation too?
17:23:40 <random-jellyfish> or just code conversion?
17:25:57 <ski> monochrom : although (e.g.) Lava (implemented as an EDSL in Haskell) allowed recursion in the specification of circuits (e.g. Batcher's bitonic merger, with "butterfly circuits"). it's just that that recursion is "compile-time", not "run-time"
17:26:28 <geekosaur> I don't believe it does simulation, but iirc the code it generates is correct by construction (for example it uses types to ensure you don't wire together the wrong things)
17:27:24 <geekosaur> oh right, I knew I was forgetting one.
17:27:27 <ski> (Mary Sheeran and John Hughes has some papers, i believe)
17:27:29 <geekosaur> (lava)
17:29:36 <geekosaur> hammond, iirc not. and https is kinda hard to get portably 😞
17:30:32 <geekosaur> well, there's at least one implementation, but it's pure haskell and not verified so many people don't quite trust it
17:30:34 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
17:31:25 grnman_ joins (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net)
17:31:48 <hammond> geekosaur: that kinda locks u off from 99% of the internet.
17:32:20 <hammond> im trying to install http.conduit or http.client see if they work
17:32:24 <geekosaur> yes, I'm quite aware
17:33:10 random-jellyfish joins (~random-je@user/random-jellyfish)
17:33:57 <hammond> im running into 1 million errors with cabal though . i did get http to work fine.
17:34:29 <ski> <[exa]> Ranhir: ah with flipflops, yeah you can do that, it's still combinatorial (you only get an extra constraint that the layers of your combinatorial circuit have to be the same)
17:34:33 <ski> random-jellyfish : fwiw ^
17:34:46 × random-jellyfish quits (~random-je@user/random-jellyfish) (Client Quit)
17:35:16 jero98772 joins (~jero98772@2800:484:1d84:9000::1)
17:38:51 vglfr joins (~vglfr@46.96.133.226)
17:39:21 × werneta quits (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net) (Ping timeout: 255 seconds)
17:40:05 werneta joins (~werneta@70-142-214-115.lightspeed.irvnca.sbcglobal.net)
17:42:34 random-jellyfish joins (~random-je@user/random-jellyfish)
17:43:27 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
17:44:14 × random-jellyfish quits (~random-je@user/random-jellyfish) (Client Quit)
17:46:16 Sgeo joins (~Sgeo@user/sgeo)
17:46:37 HQKY joins (~crcastilh@189-82-108-215.user3p.veloxzone.com.br)
17:47:10 × ryantrinkle quits (~ryantrink@140.174.248.64) (Ping timeout: 276 seconds)
17:47:23 random-jellyfish joins (~random-je@user/random-jellyfish)
17:47:46 ryantrinkle joins (~ryantrink@140.174.248.64)
17:47:54 × HQKY quits (~crcastilh@189-82-108-215.user3p.veloxzone.com.br) (Client Quit)
17:50:13 × johnw quits (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
17:50:13 × johnw_ quits (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net) (Quit: ZNC - http://znc.in)
17:50:32 × ubert quits (~Thunderbi@p548c84d6.dip0.t-ipconnect.de) (Quit: ubert)
17:50:50 ubert joins (~Thunderbi@p200300ecdf114f258f5f321c9488c19d.dip0.t-ipconnect.de)
17:53:02 johnw joins (~johnw@76-234-69-149.lightspeed.frokca.sbcglobal.net)
17:53:32 jwiegley joins (~jwiegley@76-234-69-149.lightspeed.frokca.sbcglobal.net)
17:54:49 × random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed)
17:57:10 HQKY joins (~crcastilh@189-82-108-215.user3p.veloxzone.com.br)
17:57:16 HQKY parts (~crcastilh@189-82-108-215.user3p.veloxzone.com.br) ()
17:59:32 HQKY joins (~crcastilh@189-82-108-215.user3p.veloxzone.com.br)
18:00:46 HQKY parts (~crcastilh@189-82-108-215.user3p.veloxzone.com.br) ()
18:09:31 × grnman_ quits (~michaelsc@c-66-176-3-51.hsd1.fl.comcast.net) (Ping timeout: 252 seconds)
18:10:51 × hochata quits (~user@user/hochata) (Ping timeout: 248 seconds)
18:16:43 ub joins (~Thunderbi@p548c84d6.dip0.t-ipconnect.de)
18:17:15 × ubert quits (~Thunderbi@p200300ecdf114f258f5f321c9488c19d.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
18:17:15 ub is now known as ubert
18:21:05 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 265 seconds)
18:22:27 heinz9 joins (~trace@user/trace)
18:22:37 <heinz9> can monads do all what instances can do?
18:23:09 <Rembane> heinz9: What a monad can do is decided by its instance.
18:23:22 <Rembane> heinz9: Is there a more specific question behind your general question?
18:23:23 <heinz9> so a monad is an instance?
18:23:34 <Rembane> No, there are instances of monads though.
18:23:36 <heinz9> yes, it goes into math
18:24:13 <heinz9> is there any math structure, that monads can simulate? as numbers, angles or instances
18:24:54 <Rembane> Yes, they are called monads. :)
18:25:24 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e40f:1779:8d3b:ad7d) (Remote host closed the connection)
18:25:32 <Rembane> It's infamously a monoid in the category of endofunctors.
18:25:41 <Rembane> But I don't think that's what you're after.
18:26:05 <Rembane> Monads can be used to model a computation that can go wrong.
18:26:16 <Rembane> Or a computation that can give zero to many answers.
18:26:22 <Rembane> ...aka non-determinism.
18:27:46 <monochrom> Perhaps define "what instances can do".
18:28:58 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:e40f:1779:8d3b:ad7d)
18:28:59 <monochrom> IOW I strongly believe no one is on the same page about what the question means.
18:30:13 <Rembane> Perhaps we can have a great melee about it?
18:31:33 × ryantrinkle quits (~ryantrink@140.174.248.64) (Ping timeout: 255 seconds)
18:34:31 hopelessness[m] is now known as jade[m]
18:35:12 <monochrom> I always lose.
18:37:31 × pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-50-65-93-192-141.dsl.bell.ca) (Ping timeout: 248 seconds)
18:37:52 × coot quits (~coot@2a02:a310:e241:1b00:ec1a:e9df:79ac:66ba) (Quit: coot)
18:38:42 pieguy128 joins (~pieguy128@bras-base-mtrlpq5031w-grc-50-65-93-192-88.dsl.bell.ca)
18:39:11 shriekingnoise joins (~shrieking@186.137.175.87)
18:43:27 barzo joins (~hd@31.223.56.129)
18:47:40 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
18:47:40 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
18:47:40 wroathe joins (~wroathe@user/wroathe)
18:50:38 × viole quits (~viole@user/viole) (Quit: WeeChat 2.9)
19:00:07 ryantrinkle joins (~ryantrink@140.174.248.64)
19:15:13 × bliminse quits (~bliminse@user/bliminse) (Quit: leaving)
19:18:47 bliminse joins (~bliminse@user/bliminse)
19:21:00 × wroathe quits (~wroathe@user/wroathe) (Quit: Reconnecting)
19:21:13 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
19:21:13 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
19:21:13 wroathe joins (~wroathe@user/wroathe)
19:21:29 × pharonix71 quits (~pharonix7@user/pharonix71) (Ping timeout: 255 seconds)
19:23:21 × mc47 quits (~mc47@xmonad/TheMC47) (Quit: Leaving)
19:23:58 pharonix71 joins (~pharonix7@user/pharonix71)
19:29:01 acidjnk joins (~acidjnk@p200300d6e715c491dc796c235bb1f77a.dip0.t-ipconnect.de)
19:32:29 zeenk joins (~zeenk@188.26.30.104)
19:33:07 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
19:34:34 dcleonarski joins (~user@2804:d51:4793:c800:b0e2:a2e8:89a0:4c46)
19:41:57 <ski> heinz9 : what does "instance" mean in your mind ?
19:42:22 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
19:43:36 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
19:45:26 NiceBird joins (~NiceBird@185.133.111.196)
19:47:05 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
19:47:48 pieguy128_ joins (~pieguy128@bras-base-mtrlpq5031w-grc-50-65-93-192-3.dsl.bell.ca)
19:48:05 × pieguy128 quits (~pieguy128@bras-base-mtrlpq5031w-grc-50-65-93-192-88.dsl.bell.ca) (Ping timeout: 240 seconds)
19:56:22 _leo___ joins (~emmanuelu@user/emmanuelux)
19:58:58 × emmanuelux_ quits (~emmanuelu@user/emmanuelux) (Ping timeout: 252 seconds)
20:09:08 × gnalzo quits (~gnalzo@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 3.8)
20:10:46 × barzo quits (~hd@31.223.56.129) (Remote host closed the connection)
20:17:31 × jero98772 quits (~jero98772@2800:484:1d84:9000::1) (Ping timeout: 240 seconds)
20:18:39 × alexherbo2 quits (~alexherbo@2a02-842a-8180-4601-8476-90af-61c3-7964.rev.sfr.net) (Remote host closed the connection)
20:22:39 × terrorjack quits (~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
20:22:41 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
20:23:53 terrorjack joins (~terrorjac@2a01:4f8:c17:87f8::)
20:29:21 jero98772 joins (~jero98772@2800:484:1d84:9000::1)
20:34:28 wroathe joins (~wroathe@50.205.197.50)
20:34:28 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
20:34:28 wroathe joins (~wroathe@user/wroathe)
20:35:08 <maralorn> If I have during runtime two Nothing :: Maybe Int will GHC automatically have them at the same memory address?
20:37:12 <jade[m]> I'm not sure it's true for all cases, but generally, constant constructors will refer to the same memory location
20:37:46 <geekosaur> I think all `Nothing`s will be at the same address
20:38:49 <jade[m]> https://youtu.be/I4lnCG18TaY
20:39:18 <jade[m]> This was a great eye-opener for me originally, when it came to sharing, thunks and evaluation and such
20:45:24 Guest23 joins (~Guest23@49.207.232.108)
20:45:56 × Guest23 quits (~Guest23@49.207.232.108) (Client Quit)
20:50:10 ujjwalgupta[m] joins (~guptaujjw@2001:470:69fc:105::3:46b5)
20:52:22 <ujjwalgupta[m]> I am trying to profile my project in haskell, but in the profile file (.prof) I am seeing the order in which the function stack is getting printed seems a little jumbled up.... (full message at <https://libera.ems.host/_matrix/media/v3/download/libera.chat/3b1df4d8db14ce994d3d09fa682b4316d1faa35e>)
20:55:10 <L29Ah> ujjwalgupta[m]: apparently it's because log evaluates your database call due to lazy evaluation
20:57:01 <jade[m]> L29Ah: hm, I didn't know it worked like that
20:57:36 <jade[m]> my guess would have been that it had to do with functional logging and it being encapsulated inside a monad which carries out the computation
21:02:33 nate1 joins (~nate@98.45.169.16)
21:07:25 × nate1 quits (~nate@98.45.169.16) (Ping timeout: 240 seconds)
21:08:16 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
21:11:49 <monochrom> Yes all Nothings are at the same address.
21:12:05 <monochrom> And shared by all types, too.
21:13:55 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
21:14:54 × trev quits (~trev@user/trev) (Quit: trev)
21:15:11 <hpc> now that i think about it... is it the same address for all nullary constructors? (or at least, the ones with index 0)
21:15:26 <int-e> it's not
21:15:29 <hpc> like, is Nothing also the same address as False (and True the same address as EQ)
21:15:32 <hpc> ah
21:15:39 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
21:15:48 <jade[m]> no
21:15:51 <monochrom> [] has a different address from Nothing.
21:15:59 <hpc> it seems like they could be
21:16:16 <jade[m]> pattern matching would break
21:16:26 <jade[m]> wait no, it wouldn't
21:16:36 <monochrom> :)
21:16:37 <jade[m]> yeah im not sure
21:16:48 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
21:16:53 <monochrom> Perhaps too much work to make them the same. :)
21:17:25 <jade[m]> not like it makes a difference
21:17:29 <int-e> jade[m]: pattern matching means that the number of constructors of the data type is relevant too
21:18:02 × gehmehgeh quits (~user@user/gehmehgeh) (Quit: Leaving)
21:19:04 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:21:19 <monochrom> If "data X = MkX" gets its own address for MkX, then the compiler does not need to treat it really differently from all other ADT declarations.
21:21:51 × vglfr quits (~vglfr@46.96.133.226) (Ping timeout: 250 seconds)
21:23:26 × Feuermagier quits (~Feuermagi@user/feuermagier) (Quit: Leaving)
21:24:48 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 264 seconds)
21:27:55 × jero98772 quits (~jero98772@2800:484:1d84:9000::1) (Ping timeout: 250 seconds)
21:29:17 × dcleonarski quits (~user@2804:d51:4793:c800:b0e2:a2e8:89a0:4c46) (Remote host closed the connection)
21:31:08 falafel joins (~falafel@2603-8000-d700-115c-1fbb-7fdc-aa80-ebf8.res6.spectrum.com)
21:32:31 <int-e> Hmm, no, the number of constructors doesn't actually matter; the code inspects the info table to figure out a constructor index. I thought there was a pattern match design that passed continuations (one for each constructor) to an entered closure... (and maybe there was, but it's not how things work now)
21:33:50 <int-e> (and there's also pointer tagging to complicate the story)
21:34:18 merijn joins (~merijn@86-86-29-250.fixed.kpn.net)
21:40:34 <monochrom> Pointer tagging is carefully kept consistent with whatever the info table says, so as a first-order approximation you can ignore pointer tagging.
21:40:48 jero98772 joins (~jero98772@2800:484:1d84:9000::1)
21:40:53 <monochrom> But as a second-order approximation you can ignore the info table instead. >:)
21:41:08 <monochrom> It is why this works:
21:41:14 <monochrom> @quote monochrom unsafeCoerce
21:41:14 <lambdabot> monochrom says: isTrue = (unsafeCoerce :: Either a b -> Bool) . (unsafeCoerce :: Maybe c -> Either a b) . (unsafeCoerce :: Bool -> Maybe c)
21:44:27 <int-e> monochrom: you can't do that if you do what I did... look at -ddump-asm output.
21:45:32 <int-e> (It turns out that if you pattern match on one of the first 7 (3 on 32 bits) constructors, the info table is never consulted.)
21:45:59 <int-e> err
21:46:05 × pieguy128_ quits (~pieguy128@bras-base-mtrlpq5031w-grc-50-65-93-192-3.dsl.bell.ca) (Ping timeout: 240 seconds)
21:46:14 <int-e> Those numbers should be 6 and 2, respectively.
21:46:18 pieguy128 joins (~pieguy128@bas1-montreal02-65-92-163-233.dsl.bell.ca)
21:47:12 <int-e> (0 is for unevaluated/unknown values; 7 (or 3) is catch-all for all the remaining constructors if there are more than 7 (3) of them.)
21:53:08 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Ping timeout: 255 seconds)
21:56:22 FinnElija joins (~finn_elij@user/finn-elija/x-0085643)
21:58:07 × __monty__ quits (~toonn@user/toonn) (Quit: leaving)
21:58:24 <maralorn> Wait, that means Type are more performanent if there are less then eight constructors?
21:58:42 <maralorn> Or they are more performanent for the first eight constructors?
22:00:36 <maralorn> Is there a way to get the size of the transitive closure of a value?
22:01:25 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 240 seconds)
22:01:36 <maralorn> I mean so to say the life memory if only that value were a gcroot.
22:01:38 <geekosaur> more performant for the constructors that can be tagged; it has to go to the info table for the others
22:04:41 Me-me joins (~Me-me@146.102.215.218.dyn.iprimus.net.au)
22:05:51 × Me-me quits (~Me-me@146.102.215.218.dyn.iprimus.net.au) (Remote host closed the connection)
22:06:04 wroathe joins (~wroathe@50.205.197.50)
22:06:04 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
22:06:04 wroathe joins (~wroathe@user/wroathe)
22:06:33 <maralorn> So they don’t have a more compact representation in memory, just lookups are a bit quicker?
22:06:46 <geekosaur> yes
22:07:49 × gurkenglas quits (~gurkengla@dynamic-046-114-182-107.46.114.pool.telefonica.de) (Ping timeout: 276 seconds)
22:09:09 gurkenglas joins (~gurkengla@dynamic-046-114-180-034.46.114.pool.telefonica.de)
22:09:14 <geekosaur> (gc still needs the info table)
22:10:45 × enoq quits (~enoq@2a05:1141:1f5:5600:b9c9:721a:599:bfe7) (Quit: enoq)
22:25:29 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:32:25 × ryantrinkle quits (~ryantrink@140.174.248.64) (Ping timeout: 265 seconds)
22:34:20 <maralorn> Reading: https://stackoverflow.com/questions/3254758/memory-footprint-of-haskell-data-types Why do unary datatypes need a header?
22:34:32 Me-me joins (~Me-me@146.102.215.218.dyn.iprimus.net.au)
22:34:39 × Me-me quits (~Me-me@146.102.215.218.dyn.iprimus.net.au) (Changing host)
22:34:39 Me-me joins (~Me-me@user/me-me)
22:34:54 <maralorn> I understand it if there are multiple constructors.
22:40:34 <c_wraith> maralorn: so the GC knows which fields are pointers it needs to traverse
22:41:23 AlexNoo_ is now known as AlexNoo
22:41:32 <maralorn> Ah, I see.
22:41:42 <c_wraith> (and for that matter, how many fields the constructor has)
22:43:04 <geekosaur> that's why I said gc needs the info table even with pointer tagging
22:43:25 <geekosaur> size and pointer bitmap, at minimum
22:44:31 <maralorn> Yea
22:45:00 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
22:45:44 ryantrinkle joins (~ryantrink@140.174.248.64)
22:47:22 <geekosaur> (and I've just realized that bitmap is likely why tuple size is capped at 63)
22:47:46 × wroathe quits (~wroathe@user/wroathe) (Quit: leaving)
22:48:01 × Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.)
22:48:12 <c_wraith> I've seen some code using records with over 100 fields. GHC must have a different representation at some point...
22:48:53 <geekosaur> or the bitmap is stored in an Array# or similar, I guess
22:49:26 <geekosaur> but tuples are still a bit "special"
22:54:23 bitmapper joins (uid464869@id-464869.lymington.irccloud.com)
22:54:49 × heinz9 quits (~trace@user/trace) (Remote host closed the connection)
22:55:50 × NiceBird quits (~NiceBird@185.133.111.196) (Ping timeout: 246 seconds)
22:57:59 × acidjnk quits (~acidjnk@p200300d6e715c491dc796c235bb1f77a.dip0.t-ipconnect.de) (Ping timeout: 246 seconds)
23:04:41 L29Ah joins (~L29Ah@wikipedia/L29Ah)
23:07:08 L29Ah parts (~L29Ah@wikipedia/L29Ah) ()
23:10:05 L29Ah joins (~L29Ah@wikipedia/L29Ah)
23:18:52 <maralorn> Still a bit confused. I am inspecting the heap of my program combined with print debugging what I think is the state. If I calculate correctly I have a very clear understanding how many constructors of my types appear and they all make sense. Including the number of texts. But then ARR_WORDS is roughly to big by a factor 10.
23:19:19 abhixec joins (~abhixec@c-67-169-139-16.hsd1.ca.comcast.net)
23:19:26 <maralorn> I suspect that most of ARR_WORDS are Texts, because when I switch from text 2.0 to 1.x the size of ARR_WORDS doubles.
23:19:46 <maralorn> Also I don’t see any bytestring constructors or similar on the heap.
23:21:53 <geekosaur> right, ByteString is allocated from pinned memory instead of the heap
23:22:21 <maralorn> But with 15k Texts using 23M (with utf-16 everything ascii) that gives me an average Text length of 750 characters, but my texts are on average less than 32 characters.
23:22:55 <geekosaur> that I don't know
23:23:35 × bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 255 seconds)
23:23:42 <maralorn> geekosaur: So memory used by bytestring does not appear in the eventlog profile?
23:24:02 × jpds quits (~jpds@gateway/tor-sasl/jpds) (Ping timeout: 255 seconds)
23:25:22 <geekosaur> I don't know offhand how pinned memory shows up in the eventlog, I just know it won't show as heap memory
23:25:29 <maralorn> Anyway by size of the constructors I have only about 30 bytestrings alive at any time.
23:25:51 <geekosaur> other profiling tools have a separate "heap" entry called PINNED
23:26:11 bitdex joins (~bitdex@gateway/tor-sasl/bitdex)
23:26:25 × gurkenglas quits (~gurkengla@dynamic-046-114-180-034.46.114.pool.telefonica.de) (Ping timeout: 240 seconds)
23:27:28 × APic quits (apic@apic.name) (Read error: Connection reset by peer)
23:27:31 × falafel quits (~falafel@2603-8000-d700-115c-1fbb-7fdc-aa80-ebf8.res6.spectrum.com) (Ping timeout: 250 seconds)
23:27:48 <maralorn> I wonder if I am keeping alive files I read in by parsing subtexts out of them. And maybe the Text is now just a pointer to the whole file with start and end?
23:28:16 <geekosaur> possibly. iirc you are encouraged to copy slices to avoid that
23:28:45 <geekosaur> although hm, in that case it should really have only one copy of it with multiple slice pointers?
23:29:21 <c_wraith> if it's a lazy bytestring, it could be multiple pinned chunks
23:33:51 <maralorn> It would make sense in my case because I am reading 2k files with each a few thousand bytes but only parse a tiny substring out of each of them.
23:37:45 jpds joins (~jpds@gateway/tor-sasl/jpds)
23:39:49 son0p joins (~ff@181.136.122.143)
23:41:02 <geekosaur> https://hackage.haskell.org/package/text-2.0.2/docs/Data-Text.html#v:copy
23:41:19 <geekosaur> and yes, in that case you're likely keeping the whole file live
23:47:40 × sammelweis quits (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10) (Quit: No Ping reply in 180 seconds.)
23:49:22 sammelweis joins (~quassel@2601:401:8200:2d4c:bd9:d04c:7f69:eb10)
23:49:45 × merijn quits (~merijn@86-86-29-250.fixed.kpn.net) (Ping timeout: 240 seconds)
23:51:11 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:e40f:1779:8d3b:ad7d) (Remote host closed the connection)
23:51:48 <maralorn> Yeah, that was it.
23:52:25 <maralorn> I think I spend roughly 12 hours learning heap profiling, today.
23:53:26 <maralorn> Reduced the memory footprint of my program from 80MB to 8MB. \o/
23:54:17 mauke_ joins (~mauke@user/mauke)
23:55:29 <yushyin> nice~
23:55:45 × mauke quits (~mauke@user/mauke) (Ping timeout: 240 seconds)
23:55:45 mauke_ is now known as mauke

All times are in UTC on 2023-04-16.