Home liberachat/#haskell: Logs Calendar

Logs on 2023-11-25 (liberachat/#haskell)

00:06:55 azimut joins (~azimut@gateway/tor-sasl/azimut)
00:11:53 bilegeek joins (~bilegeek@2600:1008:b08d:8b2c:9239:2f41:68cf:e8b1)
00:16:07 × ubert quits (~Thunderbi@91.141.78.5.wireless.dyn.drei.com) (Ping timeout: 255 seconds)
00:19:28 <newsham> is there an easy shortcut for wrapping up many type constraints into a single constraint?
00:20:08 <ski> `type Foo a b = (Bar a,Baz a b)' ?
00:20:41 Alleria joins (~JohnGalt@user/alleria)
00:21:09 infinity0 joins (~infinity0@pwned.gg)
00:24:13 <newsham> without adding a new constructor?
00:24:35 <ski> just a synonym
00:25:14 <ski> if you'd rather explicitly instance, then do `class (Bar a,Baz a b) => Foo a b'
00:25:50 <newsham> I would like a way to say `val :: (Foo a, Bar a, Baz z) => a` without having to mention Foo Bar and Baz each time, but still having the type `a`.
00:26:09 <newsham> can I have an empty class?
00:26:13 <ski> sure
00:26:20 <newsham> cool, thats exactly what I want. thank you.
00:26:38 <ski> but you'll need to explicitly `instance Foo T' in that case
00:26:49 <ski> with the synonym, that's not the case
00:27:51 <ski> (and yea, i already figured what you wanted to achieve, more or less)
00:28:38 × ystael quits (~ystael@user/ystael) (Quit: Lost terminal)
00:34:27 × leungbk quits (~user@cpe-142-129-149-172.socal.res.rr.com) (Read error: Connection reset by peer)
00:35:08 leungbk joins (~user@2603-8000-1201-2dd2-e3a3-de53-6c1c-8a11.res6.spectrum.com)
00:40:02 × leungbk quits (~user@2603-8000-1201-2dd2-e3a3-de53-6c1c-8a11.res6.spectrum.com) (Remote host closed the connection)
00:40:39 <monochrom> If you turn on ConstraintKinds, then ski's "type Foo a b = (Bar a,Baz a b)" will work. Then you can write "val :: Foo a b => ...".
00:50:53 szkl joins (uid110435@id-110435.uxbridge.irccloud.com)
00:52:18 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
00:57:31 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 256 seconds)
01:03:43 × newsham quits (~newsham@2603-800c-2c01-6825-4dc0-068b-2270-a1d6.res6.spectrum.com) (Quit: Client closed)
01:04:11 newsham joins (~newsham@2603-800c-2c01-6825-35e6-c7dc-fab9-7c5b.res6.spectrum.com)
01:05:20 <newsham> awesome, it worked with the type alias.
01:05:22 <newsham> and constraint kinds
01:05:54 <newsham> though I'm not sure this is a big improvement. :) maybe there's a better way for me to do this.
01:06:00 <newsham> type LotsOfCat k b = (MonoidalP k, Terminal k, ConstCat k b, NumCat k b)
01:06:01 <newsham> -- \(x,y) -> 2*x + 3*y, on (10,100)
01:06:01 <newsham> prog_ :: (LotsOfCat k b, Num b) => (b, b) `k` b
01:06:02 <newsham> -- prog_ :: (MonoidalP k, Terminal k, ConstCat k b, NumCat k b, Num b) => (b, b) `k` b
01:06:02 <newsham> prog_ = addC . ((mulC . (constC 2 `cross` exl) . dup) `cross` (mulC . (constC 3 `cross` exr) . dup)) . dup
01:07:37 <monochrom> Most aliases and macros suffer the problem that if you don't memorize how to expand the alias/macro then you find the code unreadable.
01:09:13 <newsham> yah, thats true.. but i think in this situation i'm expecting most of the examples I use to have the same exact constraints..  maybe minus the Num ones..  but you're probably right..
01:09:19 <monochrom> The minority that don't suffer this problem are having really accurate suggestive names and really good documentations and explanations and they stand for really salient abstractions.
01:09:22 <EvanR> the problem with language is not knowing it
01:09:51 <monochrom> As opposed to abbreviation just for the sake of abbreviation.
01:10:26 <EvanR> i got a complaint recently about the name of the ord function
01:10:41 ski can never recall which is which of `ord' and `chr'
01:11:10 <EvanR> chr of some number, ord(inal number) of some char
01:11:43 <EvanR> regardless the complain was they didn't already know what ord meant
01:12:50 <monochrom> In line with a math tradition, the function name describes the output, not the input. So "ord" ("ordinal") cannot describe a character output (that would be "chr"), so it must output Int. Likewise for "chr".
01:12:56 <EvanR> imagine if a baby, not knowing any language, used this reasoning (somehow, without being able to communicate it directly to you)
01:13:21 <ski> figures you were going there, yea
01:13:21 <EvanR> they'd be arguing against all language
01:13:26 <monochrom> Corollary: Unpopular opinion: "toList" should be simply "list". >:)
01:14:07 <EvanR> or would list be an either-like or maybe-like function
01:14:51 <newsham> you mean `cochr`?
01:15:08 <EvanR> unchr
01:15:26 <newsham> chr^{-1}
01:16:04 <ski> .. now i'm wondering whether native speakers of ergative-absolutive languages (like Basque) would find it more natural to name after input
01:16:06 <newsham> ok, stop being so entertaining, i'm trying to focus here :)
01:16:41 <monochrom> I don't mind people complaining about abbreviations. Unix's "cp" is too terse, and our "ord" can be too.
01:17:07 <ski> `id' ?
01:17:09 <monochrom> BUT! In this case "ord" is pretty standard over, like, half a century already.
01:17:32 <monochrom> You go all the way back to BASIC and it's still ORD and CHR.
01:17:41 <monochrom> Perhaps possibly CHR$.
01:17:49 <EvanR> ah basic. I know python uses ord and chr
01:17:55 <ski> yes
01:18:17 <EvanR> even though... python doesn't even have a character type?
01:18:17 <ski> `CHR$(',`VAL('
01:19:00 arahael_ joins (~arahael@1.145.113.225)
01:19:02 <geekosaur> it was ORD in the versions of MS-BASIC I started out on
01:19:22 <ski> hm, or maybe `VAL(' corresponded to `STR$(', actually
01:19:34 <monochrom> Oh the joy of dynamic languages is that partial functions are highly encouraged! VAL/ord can say "the input is a string but it must be of length 1 else exception".
01:20:11 <geekosaur> no, they only gave you the result for the first character
01:20:14 <ski> right .. `ASC(' corrsponds to `CHR$(', that's it
01:20:21 <geekosaur> exception was for empty string
01:20:44 <ski> (i'm a bit surprised i can still remember this, despite not having used this in many years)
01:20:51 <monochrom> OK but the point about encouraging partial functions stand.
01:21:02 ski nods to geekosaur
01:21:13 <monochrom> Since every function must throw exception for wrong input type anyway!
01:22:06 <monochrom> May as well add dynamically-checked dependent predicate subtyping >:)
01:22:12 <geekosaur> (and being BASIC, exceptions were extra annoying: ON ERROR GOTO)
01:22:30 <darkling> Exceptions in BASIC? You *radical*!
01:22:55 <darkling> You get an error in BASIC, you should come to a grinding halt with a cryptic two-digit hex code.
01:22:56 <monochrom> Yeah it is why when I finally learned exception systems, I loved it despite all the hate from the young generation.
01:22:59 <ski> hm, iirc, it aborted program, and then you could inspect variables, and then you could resume with `CONT', or start again from a different place. hm, or maybe that was not on error, but just on `STOP' .. can't recall
01:23:13 <monochrom> Like, what would be the alternative anyway? Going back to ON ERROR GOTO?!
01:23:14 <darkling> ski: Oooh, sophisticated. ;)
01:23:19 rosco joins (~rosco@175.136.157.149)
01:23:20 <monochrom> First-world problem.
01:23:35 <ski> darkling : (microsoft) BASIC V2.0
01:23:37 leungbk joins (~user@2603-8000-1201-2dd2-e3a3-de53-6c1c-8a11.res6.spectrum.com)
01:23:43 <ski> (downgraded)
01:23:57 <ski> geekosaur : yea, never had that luxury
01:24:26 <ski> young generation didn't like exceptions ?
01:24:36 × arahael_ quits (~arahael@1.145.113.225) (Read error: Connection reset by peer)
01:25:01 <newsham> not all complaints are created equally.  sometimes "no" is the right answer.
01:25:03 <darkling> I used Sinclair BASIC on the ZX80, 80 and Spectrum, then BBC Basic on the Archimedes. None of those had anything other than "stop right now and whinge"
01:25:16 <darkling> I did some VB 4 and 5 later, too.
01:25:21 <ski> yea. i'm talking about C64
01:25:44 <ski> but i don't recall if the `CONT' was only if you'd inserted `STOP' (a breakpoint, essentially), or also on error
01:26:09 <monochrom> I had Applesoft BASIC and Atari 800 BASIC.
01:26:37 <ski> hm .. i think, if you changed the program, then all variables were cleared, anyway
01:26:38 <darkling> CONTINUE was a thing in Sincair BASIC, but it was definitely an interactive sort of thing.
01:26:50 <ski> but, possibly you could change variables, and resume, after error
01:26:52 <monochrom> I came across Commodore PET but didn't spend much time, so it didn't stick.
01:27:10 <monochrom> I also had the BASICs from Casio FX-702P and Sharp PC-1500. :)
01:27:10 <ski> yes, `CONT' was used interactively, after breaking out into the "repl"
01:27:25 <ski> yea, i had Casio PB-100F, before
01:27:31 <ski> (got that at age 6.5)
01:27:42 <ski> .. and a later version, although i forgot the name
01:28:25 <geekosaur> Sharp Pocket Computer
01:29:02 <monochrom> Did you know: Eventually Casio made one that ran C. :D
01:29:46 <monochrom> But it came too late. It was at the twilight of all pocket computers.
01:30:18 <monochrom> But it is the counterexample to "C is compiled" >:D
01:30:58 <darkling> Nice.
01:31:15 <ski> there's a C compiler on the C64
01:32:04 <ski> (well, there were a few. but the author of this one didn't like them)
01:32:18 <ski> recently, he's taken it up again, and put the code on GitHub
01:34:42 × tremon quits (~tremon@83.80.159.219) (Quit: getting boxed in)
01:42:40 <newsham> futureretro computing
01:46:14 × telser quits (~quassel@user/telser) (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
01:47:35 <darkling> I call it anteretrocomputing :)
01:48:01 <darkling> Things that never existed in history, but might have done.
01:48:25 <darkling> (I'm writing a simulator for a FORTH-based CPU right now...)
01:48:59 <ski> yea, this one's written in UltraFORTH^WVolksForth
01:50:09 <ski> CC64 by Philip Zembrod <https://github.com/pzembrod/cc64>,<https://www.youtube.com/watch?v=X7kJiuD_PFM>,<https://sourceforge.net/projects/cc64/>
01:50:42 <monochrom> Dear friends, when I have "let x = y+1", do I say "bind x to y+1"? Do I say "bind y+1 to x"?
01:51:13 <darkling> I'd go with the latter.
01:51:29 ski 'd go with the former
01:51:42 <ski> binding variables to values (or expressions, or computations, or whatever)
01:52:04 <monochrom> Oh! "x is a bound variable" so I bind y.
01:52:07 <monochrom> err, bind x.
01:52:10 <ski> yes
01:52:15 <monochrom> Thanks nice.
01:52:25 <darkling> My mental model is the precise opposite. You ind a value into a variable name.
01:52:49 <ski> i guess it depends on whether you focus on the leash or on the dog
01:53:01 <darkling> Meow? :)
01:53:04 <ski> hm, s/leash/lead/, i guess
01:53:52 <ski> well, the cat's we've had, that were allowed outdoors, were not leashed then
01:53:57 <ski> (had no dogs)
01:54:26 arahael_ joins (~arahael@1.145.125.165)
01:55:50 <darkling> I guess "a binding" is an ordered pair of (variable, value), so either way round works.
01:56:10 telser joins (~quassel@user/telser)
01:56:15 <darkling> It still feels odd to me to bind a variable to a value, instead of a value to a variable.
01:57:59 × mmhat quits (~mmh@p200300f1c70fae88ee086bfffe095315.dip0.t-ipconnect.de) (Quit: WeeChat 4.1.1)
01:58:38 ski thinks of as attaching a label to the value
02:00:11 <darkling> I think of it as putting a value in a box.
02:00:32 <geekosaur> except that doesn't really work in Haskell
02:00:37 <darkling> It's an interesting difference.
02:01:21 <geekosaur> the implication of a box is you can put something else in it later, but in Haskell you can't
02:01:35 <geekosaur> I think of it as an alias for an expression
02:01:50 <newsham> think of it as an equality :)
02:02:30 <darkling> It's too early in the morning for me to regress to being a mathematician. ;)
02:02:41 <ski> in Prolog, you separate the introduction of the variable into a scope, and the binding of it to a value
02:02:48 <darkling> It's too early in the morning for me to be awake, really.
02:03:10 <ski> in general, you can distinguish three different stages : (a) variable introduction; (b) bind variable to computation; (c) perform computation
02:03:45 <ski> Haskell has (a) and (b) combined. Prolog instead has (b) and (c) combined
02:11:14 <monochrom> Oh, lazy evaluation just requires you to say "put a term in a box" (and later allow that term to be mutated by evaluation).
02:11:29 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d) (Remote host closed the connection)
02:11:55 <monochrom> (Although, people prefer to s/term/thunk/ so that they can show off knowing terms they don't understand.) (Haha pun on "term".)
02:12:19 × troydm quits (~troydm@user/troydm) (Ping timeout: 256 seconds)
02:12:34 <newsham> i thunk therefore i will be
02:13:31 <newsham> <- showing off
02:14:14 <monochrom> But in terms (haha) of Report-level denotational Haskell, "value" is OK, you are only committed to non-strictness, you just have to allow "value" to contain bottoms or infinite data.
02:14:44 <newsham> gotta watch out for the lazy bottoms
02:22:18 lisbeths joins (uid135845@id-135845.lymington.irccloud.com)
02:26:37 wroathe joins (~wroathe@207-153-38-140.fttp.usinternet.com)
02:26:37 × wroathe quits (~wroathe@207-153-38-140.fttp.usinternet.com) (Changing host)
02:26:37 wroathe joins (~wroathe@user/wroathe)
02:36:16 <EvanR> did we finally figure out a thing container analogies don't work for
02:36:27 <EvanR> how do you put an infinite value in a box
02:37:09 <EvanR> it is you who is in a box and the infinite data is outside... nvm, it's infallible
02:43:47 × otto_s quits (~user@p5de2fb7f.dip0.t-ipconnect.de) (Ping timeout: 264 seconds)
02:46:00 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d)
02:54:26 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
02:55:07 × arahael_ quits (~arahael@1.145.125.165) (Read error: Connection reset by peer)
02:56:31 <monochrom> IO already breaks the container analogy. :)
02:57:18 <monochrom> Unless, of course, you are in the box and IO is outside >:)
02:57:41 <newsham> this is what happens when programmers try to change the world
02:57:52 <monochrom> haha
02:59:09 <monochrom> dons used s/box/spacesuit/ but I forgot whether he put you or toxins inside the spacesuit.
02:59:29 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 252 seconds)
02:59:49 <monochrom> One might say: it's a toxic analogy, literally. >:D
03:00:39 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
03:05:58 × myme quits (~myme@2a01:799:d60:e400:36c:3ccf:768:56e6) (Ping timeout: 260 seconds)
03:06:58 myme joins (~myme@2a01:799:d60:e400:4086:b673:1073:656f)
03:07:48 × qqq quits (~qqq@92.43.167.61) (Quit: leaving)
03:10:49 × td_ quits (~td@i53870903.versanet.de) (Ping timeout: 255 seconds)
03:12:23 td_ joins (~td@i53870901.versanet.de)
03:31:27 Xyloes joins (~wyx@2400:dd01:103a:1012:5923:33ce:7857:fc04)
03:37:23 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d) (Remote host closed the connection)
03:37:37 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d)
03:41:17 × waleee quits (~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Ping timeout: 252 seconds)
03:47:11 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
03:48:10 wladek joins (~wladek@4.62.67.34.bc.googleusercontent.com)
03:51:23 × rosco quits (~rosco@175.136.157.149) (Quit: Lost terminal)
03:54:13 × wroathe quits (~wroathe@user/wroathe) (Quit: leaving)
03:57:37 × FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija)))
03:57:37 finn_elija joins (~finn_elij@user/finn-elija/x-0085643)
03:57:37 finn_elija is now known as FinnElija
04:01:50 × pandry quits (~Pandry@93-41-34-64.ip79.fastwebnet.it) (Read error: Connection reset by peer)
04:04:20 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
04:04:36 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
04:09:34 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 264 seconds)
04:15:00 <EvanR> monochrom, a prominent user's literal story "IO a is a box with button on it, when you press the button it may spit out an a"
04:15:10 × leungbk quits (~user@2603-8000-1201-2dd2-e3a3-de53-6c1c-8a11.res6.spectrum.com) (Ping timeout: 276 seconds)
04:16:30 × newsham quits (~newsham@2603-800c-2c01-6825-35e6-c7dc-fab9-7c5b.res6.spectrum.com) (Quit: Client closed)
04:17:05 <monochrom> I think it works. Did they also explain IO's >>= ? >:)
04:20:34 leungbk joins (~user@cpe-142-129-149-172.socal.res.rr.com)
04:23:00 × bilegeek quits (~bilegeek@2600:1008:b08d:8b2c:9239:2f41:68cf:e8b1) (Quit: Leaving)
04:26:41 × leungbk quits (~user@cpe-142-129-149-172.socal.res.rr.com) (Remote host closed the connection)
04:35:02 × thegeekinside quits (~thegeekin@189.217.90.224) (Read error: Connection reset by peer)
04:37:16 thegeekinside joins (~thegeekin@189.217.90.224)
04:41:01 × thegeekinside quits (~thegeekin@189.217.90.224) (Read error: Connection reset by peer)
04:43:21 thegeekinside joins (~thegeekin@189.217.90.224)
04:43:22 × thegeekinside quits (~thegeekin@189.217.90.224) (Read error: Connection reset by peer)
04:45:48 thegeekinside joins (~thegeekin@189.217.90.224)
04:46:04 × thegeekinside quits (~thegeekin@189.217.90.224) (Read error: Connection reset by peer)
04:49:22 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
04:50:50 thegeekinside joins (~thegeekin@189.217.90.224)
04:52:13 × thegeekinside quits (~thegeekin@189.217.90.224) (Read error: Connection reset by peer)
04:54:41 thegeekinside joins (~thegeekin@189.217.90.224)
04:55:28 × thegeekinside quits (~thegeekin@189.217.90.224) (Read error: Connection reset by peer)
04:58:04 aforemny joins (~aforemny@i59F516E0.versanet.de)
04:59:22 × aforemny_ quits (~aforemny@i59F516C3.versanet.de) (Ping timeout: 276 seconds)
05:08:12 rosco joins (~rosco@175.136.157.149)
05:10:21 × bramhaag7 quits (~bramhaag@endeavour.server.bramh.me) (Quit: Ping timeout (120 seconds))
05:10:34 bramhaag7 joins (~bramhaag@endeavour.server.bramh.me)
05:34:27 × shapr quits (~user@2600:1700:c640:3100:7027:8a7b:c8e4:e862) (Remote host closed the connection)
05:34:41 shapr joins (~user@2600:1700:c640:3100:7019:9e1f:e348:6db4)
05:44:32 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
05:45:58 <EvanR> haha a box which hits the next's box's button when item flies out
05:48:46 × elkcl quits (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru) (Ping timeout: 276 seconds)
05:50:42 × bliminse quits (~bliminse@user/bliminse) (Quit: leaving)
05:58:08 elkcl joins (~elkcl@broadband-95-84-226-240.ip.moscow.rt.ru)
06:08:30 <monochrom> Yeah :)
06:21:51 takuan joins (~takuan@178-116-218-225.access.telenet.be)
06:26:55 harveypwca joins (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b)
06:36:55 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 255 seconds)
06:37:43 × [_] quits (~itchyjunk@user/itchyjunk/x-7353470) (Remote host closed the connection)
06:42:07 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
06:44:16 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d) (Read error: Connection reset by peer)
06:54:43 × analoq quits (~yashi@user/dies) (Ping timeout: 268 seconds)
06:56:13 analoq joins (~yashi@user/dies)
06:58:21 × TheCoffeMaker quits (~TheCoffeM@user/thecoffemaker) (Ping timeout: 256 seconds)
06:59:21 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:10:05 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
07:10:46 × lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity)
07:18:04 TheCoffeMaker joins (~TheCoffeM@user/thecoffemaker)
07:18:49 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d)
07:20:19 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
07:21:21 × kimiamania46 quits (~65804703@user/kimiamania) (Quit: Ping timeout (120 seconds))
07:22:10 kimiamania46 joins (~65804703@user/kimiamania)
07:23:42 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d) (Ping timeout: 268 seconds)
07:32:10 gmg joins (~user@user/gehmehgeh)
07:41:28 × johnw quits (~johnw@69.62.242.138) (Quit: ZNC - http://znc.in)
07:50:19 acidjnk joins (~acidjnk@p200300d6e72b9365810768b040d6fb4f.dip0.t-ipconnect.de)
07:50:48 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
07:51:04 × econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity)
07:58:16 Lycurgus joins (~georg@user/Lycurgus)
07:59:15 fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
08:07:58 × potato44 quits (uid421314@id-421314.lymington.irccloud.com) (Quit: Connection closed for inactivity)
08:23:08 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d)
08:32:21 awth13 joins (~user@user/awth13)
08:33:52 × rosco quits (~rosco@175.136.157.149) (Quit: Lost terminal)
08:36:05 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 252 seconds)
08:37:06 ubert joins (~Thunderbi@178.165.175.9.wireless.dyn.drei.com)
08:37:42 × awth13 quits (~user@user/awth13) (Quit: ERC 5.4 (IRC client for GNU Emacs 28.1))
08:43:21 infinity0_ joins (~infinity0@pwned.gg)
08:43:23 × infinity0 quits (~infinity0@pwned.gg) (Killed (mercury.libera.chat (Nickname regained by services)))
08:43:23 infinity0_ is now known as infinity0
08:44:35 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
08:45:28 × kimiamania46 quits (~65804703@user/kimiamania) (Quit: PegeLinux)
08:46:11 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
08:47:09 kimiamania46 joins (~65804703@user/kimiamania)
08:47:25 notzmv joins (~zmv@user/notzmv)
08:50:55 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
08:51:50 <tomsmeding> "a box which hits the next's box's button when item flies out"
08:51:52 <tomsmeding> that's genius EvanR
08:52:20 <tomsmeding> but re box analogy, Cont?
08:52:35 <tomsmeding> or is that a 4-dimensional box
08:56:19 × mikess quits (~sam@user/mikess) (Ping timeout: 255 seconds)
08:59:54 × Square quits (~Square@user/square) (Ping timeout: 268 seconds)
09:01:19 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
09:03:46 newsham joins (~newsham@2603-800c-2c01-6825-6099-561e-33fd-e2ba.res6.spectrum.com)
09:07:23 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
09:12:56 target_i joins (~target_i@217.175.14.39)
09:13:59 Simikando joins (~Simikando@bband-dyn243.178-40-245.t-com.sk)
09:15:34 _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
09:15:58 × Simikando quits (~Simikando@bband-dyn243.178-40-245.t-com.sk) (Remote host closed the connection)
09:16:26 Simikando joins (~Simikando@bband-dyn243.178-40-245.t-com.sk)
09:17:27 <newsham> whats a good way to use an older haskell library such as https://hackage.haskell.org/package/reactive ?  is it best to hack it out with ghcup and cabal, to try to get stack to sort it out?
09:19:50 <Lycurgus> trttd: migrate it urself
09:20:02 alp_ joins (~alp@2001:861:e3d6:8f80:bece:7d67:e9b1:729c)
09:20:28 <Lycurgus> which prolly is pretty close to just recompiling
09:21:21 <Lycurgus> speaking generally, didn look at this one whose name indicates might be more problematic but the advice applies just as well
09:22:14 Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi)
09:22:27 <newsham> Stack will almost certainly fail with GHC below version 7.8, requested 6.12.2. Valiantly attempting to run anyway, but I know this is doomed. For more information
09:22:30 <newsham> heh. fun.
09:22:31 <Lycurgus> the pretentious moniker being the basis of suspicion, being like a whole deal like applicative or whatever
09:22:58 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 255 seconds)
09:23:05 <Lycurgus> rather than a focused lib
09:23:23 <newsham> "migrate it yourself" meaning bring all the outdated deps up to be compat with modern base?
09:23:41 <tomsmeding> you can try to "just" compile it
09:23:43 <tomsmeding> and see what breaks
09:23:50 <tomsmeding> there is a non-zero chance that not a lot breaks
09:24:06 <Lycurgus> yeah was gonna say compile it doesn mean
09:24:17 <Lycurgus> present the sources the compiler and pray
09:24:30 <tomsmeding> cheapo way to do that is give cabal '--allow-newer', but if you want to make changes you're going to have to vendor the dependencies in (check out 'cabal get')
09:24:53 <Lycurgus> it means do stuff, compile for the target ghc making human like changes
09:26:47 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
09:29:11 <Lycurgus> *to the compiler
09:30:39 × shapr quits (~user@2600:1700:c640:3100:7019:9e1f:e348:6db4) (Remote host closed the connection)
09:30:53 shapr joins (~user@2600:1700:c640:3100:63db:c397:c01d:c8bf)
09:32:19 × alp_ quits (~alp@2001:861:e3d6:8f80:bece:7d67:e9b1:729c) (Ping timeout: 246 seconds)
09:35:55 × tzh quits (~tzh@c-71-193-181-0.hsd1.or.comcast.net) (Quit: zzz)
09:38:37 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 255 seconds)
09:42:23 <newsham> if I put this in ./cabal.packages, it should prefer packages with PackageDir/PackageName.cabal over the ones downloaded, right?
09:42:23 <newsham> packages: ./*.cabal
09:42:24 <newsham> optional-packages: ./*/*.cabal
09:42:44 <newsham> it seems to still be building the version it fetched for one of the deps i'm trying to make edits on
09:53:15 santiagopim joins (~user@90.167.66.131)
09:59:53 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
10:06:18 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Quit: ZNC - https://znc.in)
10:08:45 × Simikando quits (~Simikando@bband-dyn243.178-40-245.t-com.sk) (Ping timeout: 256 seconds)
10:09:12 × szkl quits (uid110435@id-110435.uxbridge.irccloud.com) (Quit: Connection closed for inactivity)
10:09:19 × Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 256 seconds)
10:10:22 Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915)
10:20:00 Guest35 joins (~Guest35@2603-7000-4b42-1100-0000-0000-0000-0001.res6.spectrum.com)
10:20:07 × chiselfuse quits (~chiselfus@user/chiselfuse) (Ping timeout: 240 seconds)
10:20:27 <Guest35> ANy good suggestions to learn State Monad? I tried to implement it in a parser and I got stuck for hours
10:21:01 <sshine> yeah, use it for an interpreter.
10:21:58 chiselfuse joins (~chiselfus@user/chiselfuse)
10:23:59 <Guest35> No, it is just a simple parser, but I wanted to know the previous information to parser the next one
10:25:12 <sshine> I'm suggesting you make an interpreter that makes use of a state monad. that way you don't have to deal with monadic parsers *and* state monads at the same time, since an interpreter can be arbitrarily simple.
10:25:56 <Guest35> I see, thanks. DO you suggest some material to get started?
10:27:11 <sshine> it's been quite a while since I last reviewed monad tutorials.
10:27:25 × xff0x quits (~xff0x@2405:6580:b080:900:be86:cabb:8cd3:1ec3) (Ping timeout: 245 seconds)
10:27:32 <newsham> you can play with simple examples to build up an intuition.
10:27:34 <newsham> > runState (do { x <- get; put (x+3); modify (*5); return 9 }) 100
10:27:36 <lambdabot> (9,515)
10:28:28 <newsham> starts with a state of 100, fetches it. adds 3 to it and stores it, then modifies it by multiplying by 5 (final state 515), and returns a value of 9.  the tuple at the end of runState has the return value and the final state.
10:29:24 xff0x joins (~xff0x@2405:6580:b080:900:be86:cabb:8cd3:1ec3)
10:29:47 <newsham> > execState (do { x <- get; put (x+3); modify (*5); return 9 }) 100
10:29:49 <lambdabot> 515
10:29:56 <newsham> > evalState (do { x <- get; put (x+3); modify (*5); return 9 }) 100
10:29:57 <lambdabot> 9
10:31:53 <newsham> > execState (forM_ [1,2,3,4,5] (\x -> modify (*x))) 1
10:31:55 <lambdabot> 120
10:32:22 <newsham> iterate over a list and multiply each number in turn into the accumulator, starting with 1, to compute 1*1*2*3*4*5
10:33:09 <Guest35> cool
10:35:51 × bramhaag7 quits (~bramhaag@endeavour.server.bramh.me) (Quit: Ping timeout (120 seconds))
10:36:04 bramhaag7 joins (~bramhaag@endeavour.server.bramh.me)
10:37:43 <newsham> in a parser you'd probably have your state be your input sequence of characters or tokens, and you'd use get to peek at the first element, or get/put to get the first element and consume it, writing back the unconsumed part.  and then your return values for your various functions would carry the data your parser is generating.  ie a "nextToken"
10:37:44 <newsham> function might be `State [Char] (Maybe Char)` which returns the next character after removing it from the state.
10:38:44 Pickchea joins (~private@user/pickchea)
10:41:49 <Guest35> I tried
10:41:49 <Guest35> data ParserState = ParserState
10:41:50 <Guest35>   { currentPitchClass :: PitchClass
10:41:50 <Guest35>   , currentOctave :: Octave
10:41:51 <Guest35>   }
10:41:51 <Guest35> type PitchParser a = StateT ParserState Parser a
10:42:11 × mechap quits (~mechap@user/mechap) (Quit: WeeChat 4.1.1)
10:42:15 <Guest35> I will just study it more before trying again
10:42:55 <newsham> that looks like something you'd want for a return value, not for your state.  if you're parsing strings, the state would probably be a string
10:43:55 <Guest35> The parser is working without this feature, so I was adapting what I got before
10:44:50 <Guest35> https://paste.tomsmeding.com/AiSh6tQC
10:48:07 <Guest35> if next token has no octave, it should repeat last value., that was the idea
10:49:01 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
10:52:14 <newsham> so for example you want to change `pitchParser :: Parser Pitch` to contain the state of the last octave, and if you cant parse an octave, use the previously parsed one instead
10:53:01 <Guest35> if there is no , ot
10:53:21 <Guest35> no , or ' characters, then repeat last octave value
10:54:27 <Guest35> so input can be more clear and concise
10:55:05 <Guest35> that's LilyPond syntax, btw. nothing new
10:56:13 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 276 seconds)
10:57:51 sawilagar joins (~sawilagar@user/sawilagar)
10:59:23 <newsham> its been a long time since i used StateT, but I think you had it right above...  you'd modify your pitchParser to be a StateT that can store your octave, and test for parse failure on those characters, and on failure fetch the octave from state, and on success, put the octave into the state.
11:02:50 <Guest35> Thanks my man. this forum is great. I'll see how it goes now
11:04:07 <tomsmeding> newsham: re your cabal.project question: try being explicit and writing 'packages: . PackageDir1 PackageDir2' (no need to point to the .cabal files, just the directory is sufficient)
11:04:34 <tomsmeding> that has always worked for me (except when we're talking about build-tool dependencies, which I hope you won't have to deal with)
11:07:33 × Guest35 quits (~Guest35@2603-7000-4b42-1100-0000-0000-0000-0001.res6.spectrum.com) (Quit: Client closed)
11:10:50 thyriaen joins (~thyriaen@46.211.123.149)
11:11:14 <thyriaen> i have a config file with two versions - one for my laptop and one for my desktop
11:11:15 <thyriaen> they are almost identical and i want to keep it all in one file -- and basically just flip one value at the top to choose which version i want -- what is the best practise for this ?
11:12:31 <newsham> oh, parsec library already has a mechanism for user state.  you dont need to use StateT
11:13:55 [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470)
11:15:23 <ncf> thyriaen: what does this have to do with haskell?
11:18:14 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
11:18:18 thyriaen_ joins (~thyriaen@46.211.123.245)
11:19:46 × thyriaen_ quits (~thyriaen@46.211.123.245) (Read error: Connection reset by peer)
11:21:06 × thyriaen quits (~thyriaen@46.211.123.149) (Ping timeout: 260 seconds)
11:24:26 thyriaen joins (~thyriaen@46.211.123.245)
11:28:03 × thyriaen quits (~thyriaen@46.211.123.245) (Remote host closed the connection)
11:28:26 thyriaen joins (~thyriaen@46.211.123.245)
11:28:34 alp_ joins (~alp@2001:861:e3d6:8f80:c5b:89b5:4817:f400)
11:31:44 Simikando joins (~Simikando@bband-dyn243.178-40-245.t-com.sk)
11:35:36 × Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer)
11:39:22 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Quit: Leaving)
11:40:17 × alp_ quits (~alp@2001:861:e3d6:8f80:c5b:89b5:4817:f400) (Ping timeout: 260 seconds)
11:40:20 × Simikando quits (~Simikando@bband-dyn243.178-40-245.t-com.sk) (Ping timeout: 252 seconds)
11:42:07 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
11:44:28 × thyriaen quits (~thyriaen@46.211.123.245) (Remote host closed the connection)
11:45:11 thyriaen joins (~thyriaen@46.211.123.245)
11:47:34 Simikando joins (~Simikando@bband-dyn243.178-40-245.t-com.sk)
11:49:48 × thyriaen quits (~thyriaen@46.211.123.245) (Remote host closed the connection)
11:50:23 thyriaen joins (~thyriaen@46.211.123.245)
11:53:09 × newsham quits (~newsham@2603-800c-2c01-6825-6099-561e-33fd-e2ba.res6.spectrum.com) (Quit: Client closed)
11:54:00 × thyriaen quits (~thyriaen@46.211.123.245) (Client Quit)
11:54:46 pandry joins (~Pandry@93-41-34-64.ip79.fastwebnet.it)
11:57:04 emmanuelux joins (~emmanuelu@user/emmanuelux)
11:58:53 newsham joins (~newsham@2603-800c-2c01-6825-6099-561e-33fd-e2ba.res6.spectrum.com)
12:01:12 × Simikando quits (~Simikando@bband-dyn243.178-40-245.t-com.sk) (Ping timeout: 268 seconds)
12:03:21 × euleritian quits (~euleritia@dynamic-046-114-203-031.46.114.pool.telefonica.de) (Ping timeout: 256 seconds)
12:04:00 euleritian joins (~euleritia@dynamic-046-114-202-213.46.114.pool.telefonica.de)
12:04:27 rosco joins (~rosco@175.136.157.149)
12:10:35 × newsham quits (~newsham@2603-800c-2c01-6825-6099-561e-33fd-e2ba.res6.spectrum.com) (Quit: Client closed)
12:12:34 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
12:18:25 × turlando quits (~turlando@user/turlando) ()
12:18:53 newsham joins (~newsham@2603-800c-2c01-6825-6099-561e-33fd-e2ba.res6.spectrum.com)
12:20:32 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
12:20:55 × gmg quits (~user@user/gehmehgeh) (Ping timeout: 240 seconds)
12:21:34 __monty__ joins (~toonn@user/toonn)
12:21:48 gmg joins (~user@user/gehmehgeh)
12:26:17 Fischmiep joins (~Fischmiep@user/Fischmiep)
12:27:21 × shapr quits (~user@2600:1700:c640:3100:63db:c397:c01d:c8bf) (Remote host closed the connection)
12:27:35 shapr joins (~user@2600:1700:c640:3100:b8d1:3f0a:923e:6c23)
12:27:46 ht_ joins (~Thunderbi@194.110.115.58)
12:28:07 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
12:29:00 turlando joins (~turlando@user/turlando)
12:29:17 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Ping timeout: 252 seconds)
12:29:18 ht_ is now known as _ht
12:38:46 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Quit: ZNC - https://znc.in)
12:39:42 × vilya quits (~vilya@user/vilya) (Quit: k-lined)
12:47:41 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
12:51:13 waleee joins (~waleee@h-176-10-144-38.NA.cust.bahnhof.se)
12:52:20 × newsham quits (~newsham@2603-800c-2c01-6825-6099-561e-33fd-e2ba.res6.spectrum.com) (Quit: Client closed)
12:52:23 × pandry quits (~Pandry@93-41-34-64.ip79.fastwebnet.it) (Ping timeout: 268 seconds)
12:52:34 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 255 seconds)
13:01:29 Simikando joins (~Simikando@bband-dyn243.178-40-245.t-com.sk)
13:05:33 Fischmiep joins (~Fischmiep@user/Fischmiep)
13:08:20 × Simikando quits (~Simikando@bband-dyn243.178-40-245.t-com.sk) (Remote host closed the connection)
13:11:29 mc47 joins (~mc47@xmonad/TheMC47)
13:28:56 wootehfoot joins (~wootehfoo@user/wootehfoot)
13:28:58 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
13:29:16 pandry joins (~Pandry@93-41-34-64.ip79.fastwebnet.it)
13:33:27 × kimiamania46 quits (~65804703@user/kimiamania) (Quit: Ping timeout (120 seconds))
13:33:50 kimiamania46 joins (~65804703@user/kimiamania)
13:41:34 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
13:51:03 × wootehfoot quits (~wootehfoo@user/wootehfoot) (Quit: Leaving)
13:54:14 awth13 joins (~awth13@user/awth13)
13:54:47 × Fischmiep quits (~Fischmiep@user/Fischmiep) (Quit: ZNC - https://znc.in)
13:57:01 sawilagar joins (~sawilagar@user/sawilagar)
14:06:34 × Xyloes quits (~wyx@2400:dd01:103a:1012:5923:33ce:7857:fc04) (Quit: Konversation terminated!)
14:07:44 × AkshayMankar[m] quits (~axemanpub@85.88.23.162) (Remote host closed the connection)
14:22:04 × rosco quits (~rosco@175.136.157.149) (Quit: Lost terminal)
14:29:48 idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c)
14:39:06 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds)
14:46:58 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 276 seconds)
14:47:31 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
14:58:00 notzmv joins (~zmv@user/notzmv)
14:58:25 × L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer)
15:01:24 ht_ joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl)
15:03:04 × _ht quits (~Thunderbi@194.110.115.58) (Ping timeout: 255 seconds)
15:03:04 ht_ is now known as _ht
15:11:47 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
15:21:05 L29Ah joins (~L29Ah@wikipedia/L29Ah)
15:24:51 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
15:45:28 × jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 276 seconds)
15:47:38 wroathe joins (~wroathe@50.205.197.50)
15:47:38 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
15:47:38 wroathe joins (~wroathe@user/wroathe)
15:53:48 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
15:58:46 × GoldsteinQ quits (~goldstein@goldstein.rs) (Quit: ZNC 1.8.2 - https://znc.in)
16:01:59 GoldsteinQ joins (~goldstein@goldstein.rs)
16:03:01 CiaoSen joins (~Jura@2a05:5800:2c3:a900:2a3a:4dff:fe84:dbd5)
16:06:33 mikess joins (~sam@S010664777dafd303.cg.shawcable.net)
16:20:40 alp_ joins (~alp@2001:861:e3d6:8f80:243c:756e:ec31:b054)
16:32:57 × YoungFrog quits (~youngfrog@39.129-180-91.adsl-dyn.isp.belgacom.be) (Ping timeout: 256 seconds)
16:36:33 danza joins (~francesco@151.47.230.206)
16:37:08 Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542)
16:37:32 YoungFrog joins (~youngfrog@2a02:a03f:ca07:f900:22b0:537b:2b94:33f1)
16:44:32 × shapr quits (~user@2600:1700:c640:3100:b8d1:3f0a:923e:6c23) (Remote host closed the connection)
16:44:45 shapr joins (~user@2600:1700:c640:3100:f59d:1096:1181:a47f)
16:45:48 pyooque joins (~puke@user/puke)
16:45:48 × puke quits (~puke@user/puke) (Killed (mercury.libera.chat (Nickname regained by services)))
16:45:48 pyooque is now known as puke
16:49:11 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
16:52:39 econo_ joins (uid147250@id-147250.tinside.irccloud.com)
16:54:18 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 260 seconds)
16:55:34 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
16:55:49 <John_Ivan> hi, if anyone remembers my situation where I encountered 100% cpu process on a succesfully compiled and linked haskell binary on windows
16:55:57 <John_Ivan> I found the culprit. but I don't understand it.
16:56:11 <John_Ivan> it's my wrapper for "setCurrentDirectory" from System.Directory
16:56:17 <John_Ivan> calling this on it's own runs fine.
16:56:25 <John_Ivan> however calling...
16:56:40 <John_Ivan> wrapper_SetWorkingDirectory :: String -> IO ()
16:56:40 <John_Ivan> wrapper_SetWorkingDirectory p = do setCurrentDirectory p
16:56:48 <John_Ivan> gets stuck in an endless loop
16:56:54 <John_Ivan> anyone have any ideas why?
16:57:52 <geekosaur> how are you wrapping it?
16:58:03 <John_Ivan> that there is the function itself.
16:58:05 Sgeo joins (~Sgeo@user/sgeo)
16:58:26 × connrs quits (~connrs@user/connrs) (Ping timeout: 268 seconds)
16:58:46 <John_Ivan> geekosaur, maybe try compiling that exactly yourself and see it hanging on your own machine I guess?
16:59:05 <geekosaur> I mean, are you using something like CPP to change calls to `setCurrentDirectory` to be your `wrapper_setWorkingDirectory`?
16:59:22 <John_Ivan> geekosaur, oh no. this is just me calling it inside a haskell main.
16:59:24 <geekosaur> because if you are, you'll need to make sure it's not doing that in the module where the wrapper is defined
16:59:50 <John_Ivan> geekosaur, 2 files. .hs files. one main.hs and one wrapper.hs
17:05:02 <haskellbridge> 14<m​auke> Show the exact code
17:05:43 <geekosaur> works here. https://paste.tomsmeding.com/COdcBgvv
17:07:41 <John_Ivan> haskellbridge, geekosaur - https://pastebin.com/VSJNXmS0
17:07:49 wroathe joins (~wroathe@user/wroathe)
17:08:39 <ski> s/haskellbridge/mauke/
17:09:04 <haskellbridge> 14<m​auke> What's in My_Wrapper.hs?
17:09:14 × AlexZenon quits (~alzenon@178.34.163.165) (Ping timeout: 252 seconds)
17:09:22 <geekosaur> it's in the paste
17:09:32 <geekosaur> I wish they'd used a sane pastebin
17:09:32 <c_wraith> Well, no it isn't
17:09:34 <haskellbridge> 14<m​auke> Oh
17:09:52 <c_wraith> you have a module-file name mismatch
17:09:55 <monochrom> But the paste says "module Wrapper" so, maybe, actually this is a case of wrong file?
17:09:55 <haskellbridge> 14<m​auke> But it says module Wrapper
17:09:57 <c_wraith> You're not running the code
17:10:01 <John_Ivan> c_wraith, I do. that's a typo.
17:10:06 <John_Ivan> sorry. my bad.
17:10:18 <John_Ivan> I'm starting to suspect it's Windows at fault here tbh.
17:10:27 <c_wraith> that doesn't even make sense
17:10:49 <c_wraith> The problem is almost certainly that you're not running the code you think you are
17:10:51 <monochrom> Or you have a My_Wrapper lying around and it completes the infinite loop.
17:10:57 <haskellbridge> 14<m​auke> What do you mean, typo? Is this the code you're running or not?
17:11:03 <John_Ivan> maybe I should photograph the full code and the console getting stuck
17:11:04 <c_wraith> So telling us what code you think you're running doesn't matter
17:11:05 <John_Ivan> one moment
17:11:16 <c_wraith> Tell us what files are actually there and their contents
17:11:38 <John_Ivan> yeah, will include everything in the screenshot
17:11:46 <ski> (possibly after renaming files, and retrying to make sure you still have the issue)
17:12:04 <monochrom> Will I need OCR to reproduce it on my computer?
17:12:14 <ski> (.. probably ?)
17:12:51 <monochrom> (That will be my standard reply whenever students send me screenshots instead of code files.)
17:13:18 <haskellbridge> 14<m​auke> Will I need OCD?
17:13:27 <monochrom> (I am not a social media. Why send me screenshots to "prove" it? Send me code files so I can run and try things.)
17:13:32 <geekosaur> used to be you could do text copy from the application menu (click on the small app icon in the titlebar)
17:13:38 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
17:13:57 haskellbridge 14<m​auke> sends some code in Piet
17:14:13 <ski> Mondrian ?
17:14:27 <monochrom> :(
17:14:32 <monochrom> I mean :)
17:14:59 <haskellbridge> 14<m​auke> Yes, just like Haskell and Curry are the same language
17:15:16 <ski> don't forget Escher and Clean
17:17:06 connrs joins (~connrs@user/connrs)
17:17:27 AlexZenon joins (~alzenon@178.34.163.165)
17:17:50 ski idly ponders compiling to Piet
17:19:01 <haskellbridge> 14<m​auke> You would need some kind of ... graphical calculator
17:20:41 × CiaoSen quits (~Jura@2a05:5800:2c3:a900:2a3a:4dff:fe84:dbd5) (Ping timeout: 256 seconds)
17:24:01 <John_Ivan> sigh.
17:24:05 <John_Ivan> and it now runs fine.
17:24:29 <John_Ivan> something cursed is going on
17:26:10 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 255 seconds)
17:26:22 <John_Ivan> REALLY CURSED.
17:27:27 <John_Ivan> geekosaur, is it possible that other functions inside a module will affect an independent function in the same module?
17:27:37 <John_Ivan> because that's the only thing I can think of in my scenario
17:29:45 wroathe joins (~wroathe@50.205.197.50)
17:29:46 × wroathe quits (~wroathe@50.205.197.50) (Changing host)
17:29:46 wroathe joins (~wroathe@user/wroathe)
17:29:59 <geekosaur> Sorry I'm now on the way to the store, someone else will have to help you
17:30:02 <ski> it would appear more likely that you used the wrong code, or something like that
17:30:05 <monochrom> You can easily test that hypothesis, you know.
17:30:08 <John_Ivan> geekosaur, no worries
17:30:19 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds)
17:30:44 <John_Ivan> sigh. let me try something abnormal.
17:32:23 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
17:32:50 <John_Ivan> monochrom, it's this scenario.
17:33:09 <John_Ivan> "other functions that are independent from my tested functions, are disrupting my entire module"
17:33:15 <John_Ivan> sigh. now to find out which.
17:33:26 <John_Ivan> just isolated that issue now.
17:34:10 ski imagines `wrapper_SetWorkingDirectory' has other defining clauses
17:34:50 <monochrom> I disbelieve in starting with 10000 lines of code representent 2000 moving parts and trying to eliminate one moving part at a time. Clearly.
17:36:10 <monochrom> I believe in forming a hypothesis like "adding an unrelated function causes an infinite loop" and testing it with independently written 5 lines of code. (It will be refuted.)
17:36:36 <John_Ivan> monochrom, ::shrug. also, I think I found what's causing the issue. I think.
17:37:10 <John_Ivan> monochrom, sigh..............
17:37:12 <monochrom> IOW, I disbelieve in the hacking method, I believe in the scientific method.
17:37:32 <John_Ivan> monochrom, it's fine guys. i found my problem.
17:37:32 <ski> perhaps the appropriate response would be to write some `Gen'erators for Haskell code, making them generate a bunch on unrelated functions, and test that, say, 8128 times ?
17:38:01 <John_Ivan> this is what I get for naming functions similar to each other
17:38:06 <ski> for posterity's sake, what was it ?
17:38:13 <ski> oic
17:38:33 <John_Ivan> ski, it was not setCurrentDirectory
17:38:34 <John_Ivan> it was
17:38:35 <John_Ivan> wrapper_PrintLn :: String -> IO ()
17:38:35 <John_Ivan> wrapper_PrintLn s = do wrapper_PrintLn s
17:38:44 John_Ivan slaps himself
17:39:00 <ski> well, now you've isolated the issue
17:39:12 <John_Ivan> it's fixed now. everything is working fine
17:39:14 <ski> time to maybe think of something you can learn from this, then move on ?
17:39:30 <John_Ivan> the only thing I can learn from this is - don't name wrappers similar to each other
17:39:31 <John_Ivan> because
17:39:44 <John_Ivan> I have wrapper_Print wrapper_PrintLn wrapperPrintLine etc
17:39:54 <John_Ivan> and I accidentally made wrapperPrintLn call itself
17:40:01 <John_Ivan> when I wanted it to call wrapperPrintLine
17:40:07 <ski> yea .. generally i don't like those kinds of names (although i'll use them, occasionally)
17:40:36 <John_Ivan> and because I was using a mixture of putStrLn to test my main.hs
17:40:49 <John_Ivan> I thought the problem was setCurrentDirectory
17:40:53 <ski> e.g. instead of `reverseAux', i prefer `reverseAppend', suggesting that `reverseAppend xs ys' is intended to mean the same as `reverse xs ++ ys'
17:41:10 <ski> (although i imagine your case was not an accumulating version)
17:41:20 <monochrom> That is so many levels of delegations and procrastinations and bureacracy that I'm think maybe you should ditch programming and switch to politics or management.
17:41:54 <ski> "I thought the problem was" -- this is known as "XY"
17:43:23 <monochrom> Well, one doesn't pre-know it's an XY problem. This is why all the more important to use the scientific method to check your hypotheses.
17:43:32 <ski> John_Ivan : generally, "bisection" is a good apprach to try to isolate problems like this. remove (or comment out, &c.) half the code, see if the problem persists. repeat
17:43:46 <John_Ivan> ski, that's more or less what I did.
17:43:55 <John_Ivan> but that's a very expensive way of testing
17:43:55 <monochrom> And I am not the only one saying it. Other programmers say "minimal reproducible example" too.
17:44:16 <ski> also, a reasonable distrust for oneself can also help
17:45:05 <ski> sometimes, you have a clear idea which section might be causing a problem. but sometimes, its more like a guess, which you're not as confident in
17:45:47 <ski> "very expensive" -- more expensive is to go over all the code, though
17:46:59 <John_Ivan> ski, anyway, my main issue - I need to make some functions more distinctive.
17:47:09 <John_Ivan> the naming is what led me to this
17:47:16 <John_Ivan> and possibly
17:47:34 <John_Ivan> the auto-tabber which selects functions for me. but I can't blame that.
17:47:38 <ski> hm, Skalpel does the "minimal reproducible example" thing, in a sense. it reduces the type error to a set of locations, all of which contribute to the problem, and which includes all the direct contributors. at least one of those must be changed, in order to fix the problem. of course, that could in turn cause needing to change locations that are "causally" connected to that location
17:47:48 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 256 seconds)
17:48:40 <ski> (so, it's a bit like finding all minima, rather that just finding one mimimum. instead of only reporting the location where the mismatch was found (which might not be where the logical error was made, in terms of the problem domain), all directly contributing locations are found)
17:48:44 × alp_ quits (~alp@2001:861:e3d6:8f80:243c:756e:ec31:b054) (Ping timeout: 252 seconds)
17:48:59 <ski> John_Ivan : sounds like reasonable takeaways
17:50:49 <John_Ivan> ski, what I really need
17:50:51 <John_Ivan> is a debugger
17:50:57 <John_Ivan> ski, does haskell have one?
17:51:29 × fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
17:52:58 fendor joins (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c)
17:53:19 <ski> "The GHCi Debugger" <https://downloads.haskell.org/ghc/latest/docs/users_guide/ghci.html#the-ghci-debugger>
17:53:38 <ski> also `Debug.Trace', for simpler checks
17:53:39 <John_Ivan> thanks
17:53:41 <ski> and "Hood"
17:54:13 tzh joins (~tzh@c-71-193-181-0.hsd1.or.comcast.net)
17:56:42 azimut joins (~azimut@gateway/tor-sasl/azimut)
18:00:48 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
18:02:02 × wroathe quits (~wroathe@user/wroathe) (Ping timeout: 252 seconds)
18:08:51 justsomeguy joins (~justsomeg@user/justsomeguy)
18:08:56 qqq joins (~qqq@92.43.167.61)
18:13:04 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d) (Remote host closed the connection)
18:14:05 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d)
18:15:39 <haskellbridge> 06<s​m> and "breakpoint" package
18:18:26 × justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 252 seconds)
18:27:16 tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl)
18:27:40 × danza quits (~francesco@151.47.230.206) (Read error: Connection reset by peer)
18:28:38 × pavonia quits (~user@user/siracusa) (Quit: Bye!)
18:30:01 justsomeguy joins (~justsomeg@user/justsomeguy)
18:42:50 × steew quits (~steew@user/steew) (Quit: ZNC 1.8.2 - https://znc.in)
18:44:05 danza joins (~francesco@151.43.239.173)
18:49:05 × danza quits (~francesco@151.43.239.173) (Ping timeout: 245 seconds)
18:58:01 <EvanR> is "Hood" a reference to looking under the hood, and by extension your compiled code is an engine and your runtime values are fluids, fuel mix, exhaust gases etc xD
18:59:00 × pretty_dumm_guy quits (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655) (Quit: WeeChat 3.5)
19:00:01 <ski> @hackage hood
19:00:01 <lambdabot> https://hackage.haskell.org/package/hood
19:00:02 <ski> @hackage hood2
19:00:02 <lambdabot> https://hackage.haskell.org/package/hood2
19:00:05 <ski> @hackage GHood
19:00:06 <lambdabot> https://hackage.haskell.org/package/GHood
19:00:57 <ski> i especially like how it can record observations on functions
19:01:28 × Hobbyboy quits (Hobbyboy@hobbyboy.co.uk) (Read error: Connection reset by peer)
19:02:02 <EvanR> graphical front end for hood, oh, graphics. Let's see the dependencies. `process' xD
19:04:38 Hobbyboy joins (Hobbyboy@hobbyboy.co.uk)
19:06:12 troydm joins (~troydm@user/troydm)
19:14:28 <geekosaur> also a reference to "hat" which was the first tool for doing that
19:14:49 <EvanR> oh
19:16:45 <geekosaur> ghc-vis is another useful tool
19:16:50 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
19:17:08 mc47 joins (~mc47@xmonad/TheMC47)
19:18:02 steew joins (~steew@user/steew)
19:18:23 Jackneill joins (~Jackneill@20014C4E1E12050046FAF6BD904E58EB.dsl.pool.telekom.hu)
19:26:13 × shapr quits (~user@2600:1700:c640:3100:f59d:1096:1181:a47f) (Remote host closed the connection)
19:26:27 shapr joins (~user@2600:1700:c640:3100:650b:3bbc:5994:63da)
19:27:14 Square joins (~Square@user/square)
19:37:30 oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl)
19:38:02 × eggplantade quits (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d) (Remote host closed the connection)
19:38:06 <hammond> so whats this idea behind immutable data objects and pure functional programming languages.
19:38:42 <hammond> why is it like that. scheme has it. I saw somewhere that if i read .
19:38:55 notzmv joins (~zmv@user/notzmv)
19:38:56 <hammond> SICP i will understand.
19:39:11 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
19:41:39 <EvanR> immutable data is popular in non functional languages too, so the ideas are independent but complementary
19:41:48 <EvanR> e.g. strings in javascript
19:43:38 <EvanR> taken to an extreme you can make a database immutable by tagging all updates with a timestamp (getting everyone to agree on the same timebase is an exercise for the reader)
19:45:09 jmpxor joins (~jmpxor@d149-67-225-73.try.wideopenwest.com)
19:47:50 <hammond> so it has todo with data and code duality? data is code and code is data.
20:00:28 <EvanR> um
20:00:52 <EvanR> code can certainly be represented as data
20:01:21 <EvanR> and an interpreter can work with that data to do the interpreting
20:02:55 <EvanR> but when I see code on the page or on the screen, I feel like this is beyond data. Like the difference between user-perceived characters and unicode characters
20:03:06 Pickchea joins (~private@user/pickchea)
20:08:18 xigua_ joins (~xigua@user/xigua)
20:08:41 <EvanR> that lisp code written looks identical to lisp data written was confusing to me for a long time, but the above distinction is nonetheless possible and imo helpful when dealing with lisp
20:09:13 <mauke> hammond: if data is immutable, you can't fuck it up accidentally
20:10:02 × xigua quits (~xigua@user/xigua) (Ping timeout: 256 seconds)
20:10:02 xigua_ is now known as xigua
20:10:17 <EvanR> immutable data is also important in haskell because values become defined incrementally, and mutating it at some point in the middle would be confusing
20:11:27 <EvanR> lazy immutable data marches steadily towards its semantic value
20:12:41 × stiell quits (~stiell@gateway/tor-sasl/stiell) (Remote host closed the connection)
20:13:08 stiell joins (~stiell@gateway/tor-sasl/stiell)
20:15:04 eggplantade joins (~Eggplanta@2600:1700:38c5:d800:2d66:d5f4:1244:77d)
20:16:29 × harveypwca quits (~harveypwc@2601:246:c280:7940:585a:99af:3e4c:209b) (Quit: Leaving)
20:26:05 alp_ joins (~alp@2001:861:e3d6:8f80:d05f:4b25:ffb2:a2fa)
20:26:31 <hammond> so the main idea/reason for it is readability.
20:29:23 <EvanR> speaking of which, have you read the relevant chapters of SICP xD
20:29:44 <hammond> i read pages.
20:29:56 <hammond> what are the relevant chapters?
20:30:43 × shapr quits (~user@2600:1700:c640:3100:650b:3bbc:5994:63da) (Ping timeout: 260 seconds)
20:31:22 <EvanR> there's a table of contents and an index
20:31:34 <EvanR> which apparently doesn't mention immutability
20:32:49 <EvanR> this book focuses on mutable data!
20:35:27 <hammond> haha
20:35:55 <int-e> @quote no.var
20:35:55 <lambdabot> cjs says: I have to explain this shit to people. I mean, I start out right, "Hey, you know how you always have these bugs because what you thought was in the variable is not there?" And I get all of
20:35:55 <lambdabot> these nods of agreement. "Well, I've found a new language that solves that problem." Audience: "Ooooh! How?" Me: "There's no variables!" And then they all start moving away from me slowly....
20:36:01 <hammond> no on page, 296 or something they finally start talking about changing states and assignment.
20:37:36 <hammond> no i see. it's useful.
20:39:54 <hammond> i jst want to take it to an extreeme. can you jst use a database, and run sql and have it be turing complete somehow.
20:42:57 <EvanR> that seems like a non sequitur
20:50:09 <hammond> well im obvs confused about the focus on purity and not changing variables.
20:50:42 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
20:51:46 <EvanR> purity is a broader topic
20:51:53 <hammond> SQL when you are not running insert into from some table.... is the changing of data from one form to another, and displaying it linearly on the screen. if you take monads off haskell, it's kinda of the same no?
20:51:59 <hammond> ok
20:52:16 <EvanR> but the practical justification is still because laziness
20:52:27 <hammond> ok explain that then.
20:52:55 <EvanR> usually people want side effects to happen at specific times
20:53:31 <EvanR> when side effects are tied to evaluation, and evaluation is no longer something you manually sequence, now you can't easily tell when side effects are going to happen
20:54:01 <EvanR> or even what order they happen in
20:54:54 <EvanR> so haskell throws the baby out with the bathwater, no side effects!
20:55:42 Rembane hands out parachutes to all the babies
20:55:47 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 264 seconds)
20:56:00 saturday25 joins (~saturday2@2a00:f41:1c1e:dea7:f89a:b41:e64f:f93)
20:56:07 × hgolden quits (~hgolden@2603-8000-9d00-3ed1-dd4f-298a-9c49-a0ed.res6.spectrum.com) (Remote host closed the connection)
20:57:36 hgolden joins (~hgolden@2603-8000-9d00-3ed1-dd4f-298a-9c49-a0ed.res6.spectrum.com)
20:58:39 × saturday25 quits (~saturday2@2a00:f41:1c1e:dea7:f89a:b41:e64f:f93) (Changing host)
20:58:39 saturday25 joins (~saturday2@user/saturday25)
21:10:14 pretty_dumm_guy joins (trottel@gateway/vpn/protonvpn/prettydummguy/x-88029655)
21:10:31 × azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 240 seconds)
21:10:55 azimut joins (~azimut@gateway/tor-sasl/azimut)
21:13:25 × raym quits (~ray@user/raym) (Ping timeout: 255 seconds)
21:13:46 <mauke> laziness means expressions are only evaluated when their results are needed
21:13:55 <mauke> so when you have, say, print 42
21:14:10 <mauke> print is only called when the program needs its return value, which is usually never
21:15:23 <mauke> or at least the return value is not meaningful in conventional languages where evaluation can have effects
21:17:46 <EvanR> which is why you need special forms to force evaluations in clojure so i/o effects actually happen
21:18:17 <EvanR> they have a lot of laziness going on but it's impure
21:18:28 × myxos quits (~myxos@065-028-251-121.inf.spectrum.com) (Remote host closed the connection)
21:20:18 raym joins (~ray@user/raym)
21:20:43 <hammond> ok. but then how does laziness link up to immutability?
21:21:28 <hammond> the practical justification. justification of purity?
21:22:17 <hammond> I liked that you can do something like 1...infinity and then only use what you need.
21:23:55 × peterbecich quits (~Thunderbi@047-229-123-186.res.spectrum.com) (Ping timeout: 260 seconds)
21:24:27 <mauke> changing the value of something is an effect
21:24:50 <mauke> when is a program going to use the result of x = 42?
21:25:01 <mauke> and I don't mean the value of x, I mean the literal result of the = operator
21:25:21 myxos joins (~myxos@065-028-251-121.inf.spectrum.com)
21:28:49 CiaoSen joins (~Jura@2a05:5800:2c3:a900:2a3a:4dff:fe84:dbd5)
21:30:07 × _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht)
21:31:29 coot joins (~coot@89-69-206-216.dynamic.chello.pl)
21:34:10 × kiriakos quits (~kiriakos@p57b65945.dip0.t-ipconnect.de) (Quit: kiriakos)
21:34:27 kiriakos joins (~kiriakos@p57b65945.dip0.t-ipconnect.de)
21:35:42 × kiriakos quits (~kiriakos@p57b65945.dip0.t-ipconnect.de) (Client Quit)
21:35:58 kiriakos joins (~kiriakos@p57b65945.dip0.t-ipconnect.de)
21:36:36 × saturday25 quits (~saturday2@user/saturday25) (Quit: Client closed)
21:36:38 pavonia joins (~user@user/siracusa)
21:36:41 × alp_ quits (~alp@2001:861:e3d6:8f80:d05f:4b25:ffb2:a2fa) (Ping timeout: 260 seconds)
21:40:31 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 255 seconds)
21:41:33 machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net)
21:46:55 <EvanR> hammond, you get the benefits of immutable data even without laziness, see javascript (strings), elixir data, clojure data, languages which aren't pure or lazy by default
21:48:23 × Feuermagier quits (~Feuermagi@user/feuermagier) (Read error: Connection reset by peer)
21:48:24 <EvanR> benefits like easy to reason about, potentially sharing old sections memory instead of copying,
21:50:43 alp_ joins (~alp@2001:861:e3d6:8f80:cf46:3028:c7d5:b72b)
21:50:51 × Jackneill quits (~Jackneill@20014C4E1E12050046FAF6BD904E58EB.dsl.pool.telekom.hu) (Ping timeout: 256 seconds)
21:50:57 jarne__ joins (~jarne__@c-c976e253.1018649-0-69706f6e6c79.bbcust.telenor.se)
21:54:44 × fendor quits (~fendor@2a02:8388:1605:d100:267b:1353:13d7:4f0c) (Remote host closed the connection)
21:56:45 × takuan quits (~takuan@178-116-218-225.access.telenet.be) (Remote host closed the connection)
22:04:40 × tcard quits (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303) (Remote host closed the connection)
22:08:24 tcard joins (~tcard@2400:4051:5801:7500:cf17:befc:ff82:5303)
22:08:55 × ubert quits (~Thunderbi@178.165.175.9.wireless.dyn.drei.com) (Ping timeout: 268 seconds)
22:11:51 × idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.1.1)
22:15:38 × Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection)
22:18:00 × tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…)
22:19:56 × John_Ivan quits (~John_Ivan@user/john-ivan/x-1515935) (Ping timeout: 245 seconds)
22:30:07 jmdaemon joins (~jmdaemon@user/jmdaemon)
22:38:35 × notzmv quits (~zmv@user/notzmv) (Ping timeout: 256 seconds)
22:41:06 AkshayMankar[m] joins (~axemanpub@static.102.80.201.138.clients.your-server.de)
22:41:55 × pandry quits (~Pandry@93-41-34-64.ip79.fastwebnet.it) (Ping timeout: 268 seconds)
22:42:09 misterfish joins (~misterfis@84-53-85-146.bbserv.nl)
22:45:36 [_] joins (~itchyjunk@user/itchyjunk/x-7353470)
22:47:06 × sawilagar quits (~sawilagar@user/sawilagar) (Ping timeout: 260 seconds)
22:49:19 × [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Ping timeout: 268 seconds)
22:53:28 pandry joins (~Pandry@93-41-34-64.ip79.fastwebnet.it)
22:54:31 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
22:56:25 nate4 joins (~nate@c-98-45-158-125.hsd1.ca.comcast.net)
23:00:19 × dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 276 seconds)
23:00:25 × coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot)
23:01:10 × pandry quits (~Pandry@93-41-34-64.ip79.fastwebnet.it) (Ping timeout: 256 seconds)
23:01:44 × alp_ quits (~alp@2001:861:e3d6:8f80:cf46:3028:c7d5:b72b) (Ping timeout: 256 seconds)
23:02:16 × nate4 quits (~nate@c-98-45-158-125.hsd1.ca.comcast.net) (Ping timeout: 276 seconds)
23:09:50 <hammond> EvanR:
23:09:54 <hammond> fair enough.
23:09:58 <hammond> https://www.moderntreasury.com/learn/data-immutability
23:12:35 × misterfish quits (~misterfis@84-53-85-146.bbserv.nl) (Ping timeout: 264 seconds)
23:13:14 pandry joins (~Pandry@93-41-34-64.ip79.fastwebnet.it)
23:14:33 × gmg quits (~user@user/gehmehgeh) (Quit: Leaving)
23:16:37 dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net)
23:24:22 × pandry quits (~Pandry@93-41-34-64.ip79.fastwebnet.it) (Ping timeout: 255 seconds)
23:25:50 × jarne__ quits (~jarne__@c-c976e253.1018649-0-69706f6e6c79.bbcust.telenor.se) (Ping timeout: 260 seconds)
23:37:32 × machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds)
23:37:33 pandry joins (~Pandry@93-41-34-64.ip79.fastwebnet.it)
23:40:36 × mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection)
23:42:49 × pandry quits (~Pandry@93-41-34-64.ip79.fastwebnet.it) (Ping timeout: 255 seconds)
23:43:10 TheCatCollective joins (NyaaTheKit@user/calculuscat)
23:52:43 notzmv joins (~zmv@user/notzmv)
23:53:23 peterbecich joins (~Thunderbi@047-229-123-186.res.spectrum.com)
23:54:40 pandry joins (~Pandry@93-41-34-64.ip79.fastwebnet.it)
23:56:35 × Pickchea quits (~private@user/pickchea) (Quit: Leaving)
23:59:46 tjakway joins (~tjakway@2603-8000-ce00-02e4-089f-dc27-6e89-d8f1.res6.spectrum.com)

All times are in UTC on 2023-11-25.