2023/11/25

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