2024/12/28

2024-12-28 00:00:32 +0100 <mauke> progress!
2024-12-28 00:00:42 +0100 <monochrom> "one more turn"
2024-12-28 00:01:45 +0100euleritian(~euleritia@dynamic-176-006-141-001.176.6.pool.telefonica.de) (Ping timeout: 260 seconds)
2024-12-28 00:03:27 +0100 <Zenen> it's just around this corner, i swear
2024-12-28 00:06:28 +0100 <OftenFaded> I've heard haskell isn't as performant as some languages like C, is this a unsubstantial nitpick or an outdated assessment?
2024-12-28 00:06:57 +0100 <geekosaur> graph reduction is always a bit slower than direct execution
2024-12-28 00:07:05 +0100 <geekosaur> but it's also what enables full laziness
2024-12-28 00:07:23 +0100rekahsoft(~rekahsoft@76.69.85.220) rekahsoft
2024-12-28 00:07:55 +0100 <homo> well, there are bangpatterns that strip laziness part
2024-12-28 00:08:01 +0100 <OftenFaded> so ultimately there is no intent to make haskell a performant language from the start?
2024-12-28 00:08:39 +0100 <monochrom> You don't hear that about Python, yet it's true. The meta-question is why people talk about Haskell performance but not Python performance? Javascript performance?
2024-12-28 00:09:20 +0100 <OftenFaded> very true. I also want answers to these metaquestions
2024-12-28 00:09:41 +0100 <geekosaur> not really, you can think of it as being more methodical in the name of laziness and sharing, vs. C's charging bull
2024-12-28 00:09:44 +0100prasad(~Thunderbi@c-73-75-25-251.hsd1.in.comcast.net) (Ping timeout: 260 seconds)
2024-12-28 00:09:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 00:10:05 +0100 <geekosaur> but speed isn't everything: people use Python for a reason, despite it being fairly slow compared to C
2024-12-28 00:10:16 +0100 <monochrom> Even slower than Haskell.
2024-12-28 00:10:45 +0100 <Clint> if you ignore program startup, haskell outperforms just about everything
2024-12-28 00:11:07 +0100 <monochrom> And C, in turn, slower than Fortran.
2024-12-28 00:11:08 +0100 <Zenen> well that's a pretty cool statement
2024-12-28 00:12:17 +0100 <monochrom> The truth is that people first arbitrarily choose a language they like and then manufacture "reasons".
2024-12-28 00:12:23 +0100 <Zenen> ayy it compiled!
2024-12-28 00:13:01 +0100 <OftenFaded> monochrom: but what about after that? what do people go to after they see through their 'reasons'?
2024-12-28 00:13:15 +0100 <Zenen> I have been writing in Python for quite a while now, largely because I'm trying to write code that is good for teaching others
2024-12-28 00:13:38 +0100 <Zenen> and also because computers are generally crazy fast and well written code will work well, even on slow programming languages
2024-12-28 00:13:43 +0100 <monochrom> Haha they see through their own manufactured "reasons"?
2024-12-28 00:14:02 +0100 <OftenFaded> on a long enough timeline surely they do
2024-12-28 00:14:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-28 00:14:15 +0100 <Zenen> that said, I like the idea of being able to think and program functionally, and I don't want to program in Python forever
2024-12-28 00:14:32 +0100 <geekosaur> well, there's also for example that any data structure more involved than a simple array absolutely sucks in C
2024-12-28 00:14:51 +0100 <geekosaur> most notably: strings
2024-12-28 00:15:11 +0100ubert1(~Thunderbi@p200300ecdf117c91b816f4b90c54fbf2.dip0.t-ipconnect.de) ubert
2024-12-28 00:15:24 +0100ubert(~Thunderbi@p200300ecdf117c4260f23471b0d1d1bb.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)
2024-12-28 00:15:24 +0100ubert1ubert
2024-12-28 00:15:43 +0100 <homo> isn't there python interpreter written in subset of python and compiler for that subset of python to achieve performance while interpreting python?
2024-12-28 00:15:50 +0100 <OftenFaded> It's just curious to me how haskell remains in this 'academic-only' view. Shouldn't the most academic language also be the most practical in some sense?
2024-12-28 00:18:03 +0100 <mauke> "is this a unsubstantial nitpick or an outdated assessment?" <- no
2024-12-28 00:19:06 +0100 <mauke> the problem with C is that it's so far removed from hardware, making it hard to write efficient code
2024-12-28 00:19:14 +0100 <homo> also how does one measure speed of language when different implementations produce different benchmarks? you can even make C compiler that produces slower binaries than gcc
2024-12-28 00:19:44 +0100 <monochrom> Presumably you can compare the fastest implementations available.
2024-12-28 00:20:00 +0100 <monochrom> This is actually not hard because a lot of languages have unique implementations.
2024-12-28 00:20:13 +0100 <mauke> processors aren't getting any faster and getting C programs to use multiple cores efficiently is no fun
2024-12-28 00:20:35 +0100 <homo> in case with python, you can take rpython as fastest, but does anyone seriously use it in production?
2024-12-28 00:20:54 +0100 <monochrom> A few have multitudes, but after decades of competition and sharing, the multitudes perform pretty much the same.
2024-12-28 00:21:57 +0100 <monochrom> Or yeah, compare the most used implementations.
2024-12-28 00:22:18 +0100 <homo> https://pypy.org/ it is written in python and claims to be 4.4 times faster than cpython
2024-12-28 00:23:21 +0100 <OftenFaded> you guys are making me feel silly for caring about the perceived performance of a language
2024-12-28 00:23:53 +0100 <homo> well, if you want slow haskell binaries, microhs is the way to go :)
2024-12-28 00:24:41 +0100 <monochrom> It was actually unclear that you cared about performance, as opposed to, you cared about what other people said about performance.
2024-12-28 00:25:08 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 00:25:24 +0100 <OftenFaded> I'm an idiot, so the truth of these things is only accessible via humble wizards like most in this room
2024-12-28 00:27:00 +0100 <OftenFaded> I'm a unacademic hobbyist trying to build/automate things in haskell, and learning how to create 'well-written' code is tough as a self-taught individual
2024-12-28 00:27:29 +0100 <Zenen> well written code will generally be performant
2024-12-28 00:27:34 +0100 <Zenen> or at least, easy to optimize
2024-12-28 00:28:50 +0100 <Zenen> I think that the real danger is 'clever' code that becomes difficult to use when you forget about how it works after a year
2024-12-28 00:29:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-12-28 00:31:26 +0100 <homo> the worrisome question: can you trust ghc if you cannot build it with any other haskell implementation
2024-12-28 00:31:58 +0100 <Zenen> !! This sounds like some spicy haskell drama
2024-12-28 00:32:29 +0100 <Zenen> Isn't GHC the original compiler though?
2024-12-28 00:33:08 +0100 <Zenen> oh wait... you're talking about the bootstrap process?
2024-12-28 00:33:17 +0100 <homo> yes, bootstrap
2024-12-28 00:34:14 +0100 <Zenen> that is one of the reasons that golang susses me out
2024-12-28 00:34:25 +0100 <geekosaur> how many other C compilers are there?
2024-12-28 00:34:56 +0100 <mauke> isn't gcc written in GNU C++?
2024-12-28 00:35:01 +0100 <Zenen> gccgo seems to have addressed the issue, but I kind of give special privilege to gcc
2024-12-28 00:35:22 +0100 <geekosaur> that's the problem, though
2024-12-28 00:35:59 +0100 <homo> https://guix.gnu.org/en/blog/2023/the-full-source-bootstrap-building-from-source-all-the-way-down/
2024-12-28 00:36:15 +0100 <geekosaur> gcc has almost died a couple of times, and the number of people who could pick it up and keep it going gets smaller with every fancy optimization they add
2024-12-28 00:36:39 +0100 <Zenen> i was unaware of this
2024-12-28 00:36:41 +0100 <homo> #bootstrappable folks can make full source bootstrap starting with 357 byte binary (which recently got reduced in size)
2024-12-28 00:37:24 +0100ChaiTRex(~ChaiTRex@user/chaitrex) (Ping timeout: 264 seconds)
2024-12-28 00:37:37 +0100 <homo> haskell is still in todo
2024-12-28 00:38:02 +0100 <Zenen> I've always considered gcc to be the lynchpin between hardware and software
2024-12-28 00:39:07 +0100 <Zenen> like, I don't have to worry about anything beyond compiling to C because gcc offers a unified interface to all the different architectures
2024-12-28 00:39:08 +0100ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2024-12-28 00:39:39 +0100 <Zenen> and I can't really hold space in my brain to think about different hardware architectures
2024-12-28 00:39:43 +0100 <homo> there was an attempt to bootstrap ghc from nhc98, but it failed https://elephly.net/posts/2017-01-09-bootstrapping-haskell-part-1.html
2024-12-28 00:40:50 +0100 <geekosaur> no, pretty sure you needed to go MLTon->LML->HBC->GHC (not sure what you need to bootstrap MLTon. SML/NJ?)
2024-12-28 00:41:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 00:41:18 +0100 <geekosaur> and one of those is currently only available as i386 binaries that probably don't even run on modern systems
2024-12-28 00:41:18 +0100 <Zenen> oh goodness
2024-12-28 00:41:30 +0100 <geekosaur> (sadly)
2024-12-28 00:42:01 +0100 <homo> there is complaint on #bootstrappable that ghc 0.26 requires ghc, ghc 0.24 was compileable with hbc, but the source code of ghc 0.24 has completely disappeared from the internet
2024-12-28 00:42:42 +0100 <Zenen> so like... where does one go from this point?
2024-12-28 00:42:42 +0100 <haskellbridge> <loonycyborg> can ghc entirely compile itself to C?
2024-12-28 00:43:27 +0100 <homo> currently guix uses generated C code to compile ghc, but that is not a clean bootstrap, generated code is dirty no matter whether it is C code or machine code
2024-12-28 00:44:02 +0100 <geekosaur> loonycyborg, if you build ghc in unregisterised mode it will generate ANSI C
2024-12-28 00:44:20 +0100 <geekosaur> the result is very slow but very portable
2024-12-28 00:44:40 +0100 <haskellbridge> <loonycyborg> ye I assume it's useful for porting to new platforms
2024-12-28 00:44:41 +0100 <Zenen> Can you use that ghc to build faster GHCs?
2024-12-28 00:45:00 +0100 <Zenen> i'm suspicious of haskell now
2024-12-28 00:45:03 +0100 <geekosaur> generally you use it as a starting point to write a registerised/asm backend, yes
2024-12-28 00:45:16 +0100 <Zenen> this is why I don't think about compilers too much
2024-12-28 00:45:41 +0100 <haskellbridge> <loonycyborg> unregistered refers to cpu registers?
2024-12-28 00:45:54 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-12-28 00:46:08 +0100 <geekosaur> originally, yes
2024-12-28 00:46:10 +0100 <homo> another complained on #bootstrappable is that ghc maintainers require too much extensions to compile ghc, which makes it impossible to build not just with other implementations, but also with ghc itself
2024-12-28 00:46:19 +0100 <homo> like you cannot compile ghc 9 with ghc 4
2024-12-28 00:46:31 +0100 <homo> s/complained/complaint/
2024-12-28 00:47:08 +0100 <geekosaur> in the old days ghc generated modified C source which had to be asm-d and then run through a thing called the Evil Mangler which translated the register assignments from platform standard to what the STG engine uses
2024-12-28 00:48:06 +0100 <haskellbridge> <loonycyborg> sounds mindbending
2024-12-28 00:48:10 +0100 <OftenFaded> evil mangler...what a glorious name
2024-12-28 00:48:45 +0100 <Zenen> I might just go pick up Erlang
2024-12-28 00:49:22 +0100 <homo> the bootstrap chain is very long and only recently they fixed bootstrap gap in 7.x where compiled ghc 7.4 segfaulted while trying to build itself
2024-12-28 00:49:24 +0100 <mauke> and the mangler was written in (pretty bad) perl
2024-12-28 00:49:34 +0100 <mauke> possibly perl4
2024-12-28 00:50:01 +0100 <homo> which makes a real mystery where upstream 7.x binaries come from
2024-12-28 00:51:05 +0100 <geekosaur> at one poimnt there was a hard rule that it had to be built with the most recent release of the previous version
2024-12-28 00:51:33 +0100 <geekosaur> that has been extended to "past two versions" and there is some effort for the same version, but not officially supported
2024-12-28 00:52:52 +0100 <homo> but that not only creates very long bootstrap chain, but also is very hostile to other implementations of haskell, it is a race for extensions that alternative implementations cannot win
2024-12-28 00:53:32 +0100 <haskellbridge> <loonycyborg> what are current most active non-ghc haskell implementations?
2024-12-28 00:53:41 +0100 <geekosaur> MicroHS
2024-12-28 00:53:48 +0100 <homo> and blynn compiler
2024-12-28 00:54:06 +0100 <geekosaur> and that's about it. Hugs still holds on in manintenance mode because there are universities that use it
2024-12-28 00:54:44 +0100 <homo> what maintenance mode? it hasn't been updated for quite a long time
2024-12-28 00:55:17 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 00:55:35 +0100 <geekosaur> and yeh, ghc's pretty extension-happy. we keep getting people writing code for Cabal who trip up over our 5-year support window, meaning their favorite modern extensions don't pass CI
2024-12-28 00:55:46 +0100 <haskellbridge> <sm> hell is like a nano haskell, also active
2024-12-28 00:55:49 +0100 <geekosaur> someone keeps it compiling, apparently
2024-12-28 00:56:01 +0100 <geekosaur> (barely)
2024-12-28 00:56:46 +0100 <homo> what is the latest version of ghc is compileable with microhs considering that microhs supports about 50 extensions?
2024-12-28 00:57:45 +0100 <geekosaur> I don't think anyone has tried
2024-12-28 00:58:19 +0100 <geekosaur> but MicroHS is deliberatelyh missing alkl the type level extensions, which would bring iut to a very fast halt because of TreesThatGrow
2024-12-28 00:58:45 +0100 <geekosaur> sorry about all the errors there
2024-12-28 00:59:00 +0100 <geekosaur> I should back out of convos while trying to eat dinner šŸ™‚
2024-12-28 01:00:21 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 276 seconds)
2024-12-28 01:00:39 +0100 <haskellbridge> <sm> matrix edits are a godsend
2024-12-28 01:01:43 +0100 <OftenFaded> monochrom: you have me in a spiral of doubt with your 'manufactured reasons' point. Is the reason for choosing a language truly arbitrary? And if so, why are we here? Why do we have a liking for haskell over others if it's truly arbitrary?
2024-12-28 01:02:40 +0100 <OftenFaded> Like I enjoy learning haskell through xmonad, but would I be better off learning python in a qtile environment? one must be better than the other, no?
2024-12-28 01:02:44 +0100 <geekosaur> it's not arbitrary. it's referring to various anti-Haskell memes that don't even begin to hold up to reality
2024-12-28 01:03:17 +0100 <homo> the reasons to like haskell: strong static typing, IO monad, lazy evaluations and syntax is cuter than that of lisp, haxe and erlang
2024-12-28 01:03:25 +0100 <OftenFaded> maaan, got got on a meme again. where is the rickroll link hiding
2024-12-28 01:04:00 +0100 <homo> in guix I write lisp on daily basis, so I know lisp is pain to read and write
2024-12-28 01:04:20 +0100 <OftenFaded> also how long has this room been bridged to matrix?
2024-12-28 01:05:48 +0100 <geekosaur> mm, don't recall when I started running the predecessor to this bridge. although even that was the second time; back on freenode #haskell:matrix.org was bridged to the fn version of this channel, and I have no idea how long that was true
2024-12-28 01:05:49 +0100 <homo> it's impossible to enjoy any other functional language without those 4 basic features that haskell has
2024-12-28 01:06:30 +0100 <geekosaur> it was discontinued on the move to libera, and only came back when I brought up matterbridge. then that broke on me earlier this year and I moved to heisenbridge
2024-12-28 01:06:34 +0100 <haskellbridge> <loonycyborg> most notable to me is that exact order of statements doesn't matter
2024-12-28 01:06:38 +0100 <geekosaur> I think it's been around a year total
2024-12-28 01:06:51 +0100 <geekosaur> well, 13 months
2024-12-28 01:07:32 +0100 <haskellbridge> <loonycyborg> that way you can write a program in some order that matters to you
2024-12-28 01:07:43 +0100 <haskellbridge> <loonycyborg> maybe for clarity for example
2024-12-28 01:08:37 +0100 <geekosaur> top down vs. bottom up has been a feud that probably goes back to Ada Lovelace šŸ˜›
2024-12-28 01:08:59 +0100 <OftenFaded> haven't heard of heisenbridge, I'mma have to check this out to see if I can reconnect with discord homies
2024-12-28 01:10:43 +0100 <homo> loonycyborg reminds me that in go you can split same module into multiple files, like file1.go contains "package mymodule" file2.go contains "package mymodule" file3.go also contains "package mymodule", I've never seen haskell modules being split like that
2024-12-28 01:12:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 01:12:15 +0100aerphanas(~aerphanas@user/aerphanas) aerphanas
2024-12-28 01:12:16 +0100 <monochrom> homo: It is possible to like Racket for its delimited continuation, dynamic typing, and s-expression syntax. I almost did.
2024-12-28 01:13:26 +0100 <monochrom> "Fortunately", it breaks currying, so I headed back to Haskell. >:)
2024-12-28 01:13:29 +0100 <homo> monochrom I have enough of dynamic typing in guile and it is a big pain
2024-12-28 01:14:02 +0100 <monochrom> Oh, I don't actually use dynamic typing.
2024-12-28 01:14:04 +0100 <geekosaur> still better than Cā€¦
2024-12-28 01:14:25 +0100 <homo> not to mention how it's impossible to understand error message produced by dynamic typing
2024-12-28 01:14:28 +0100 <haskellbridge> <loonycyborg> you haven't seen dynamic typing until you tried a language that allows you to add number to a string
2024-12-28 01:14:48 +0100 <homo> do you mean javascript?
2024-12-28 01:14:49 +0100 <monochrom> haha
2024-12-28 01:14:50 +0100 <haskellbridge> <loonycyborg> iirc it was lua
2024-12-28 01:15:27 +0100 <monochrom> Stronger: you haven't seen dynamic typing until you see the javascript trinity. >:)
2024-12-28 01:15:40 +0100 <homo> do it add number to the number in the string or does it contatenate number to the string?
2024-12-28 01:15:43 +0100 <geekosaur> or php
2024-12-28 01:15:55 +0100 <haskellbridge> <loonycyborg> I don't remember
2024-12-28 01:16:12 +0100 <haskellbridge> <loonycyborg> I would assume it would try to show the string
2024-12-28 01:16:26 +0100 <haskellbridge> <loonycyborg> maybe doesn't even apply to current versions
2024-12-28 01:16:46 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-28 01:16:49 +0100 <homo> tbh thanks to haskell I no longer understand imperative languages
2024-12-28 01:16:50 +0100sawilagar(~sawilagar@user/sawilagar) (Ping timeout: 265 seconds)
2024-12-28 01:17:02 +0100 <homo> imperative languages are so counter-intuitive
2024-12-28 01:17:22 +0100 <jle`> imperative programming in haskell makes so much sense that imperative programming in imperative languages seems weird
2024-12-28 01:17:30 +0100 <monochrom> We need to make a joke language that defines number+string to be this: convert the number to string, convert the string to number with default 0 then convert back to string, then concatenate.
2024-12-28 01:17:31 +0100 <homo> yes!
2024-12-28 01:17:54 +0100 <monochrom> then convert back to number!
2024-12-28 01:18:03 +0100 <monochrom> So for example 4 + "a" = 40
2024-12-28 01:19:38 +0100 <Zenen> 4:"t":"a" -> "four":"t":"a" -> "fourty" -> 40
2024-12-28 01:19:50 +0100 <homo> anyway, speaking of bootstrapping, ghc depends way too much on its own extensions, it depends on extensions to implement itself, I like haskell as a language, but I am not a fan of its toolchain ecosystem
2024-12-28 01:20:25 +0100 <monochrom> Yeah I don't get why people don't like monad for imperative programming and make it sound like it's additional and unnatural. The explicit >>= clarifies what's really going on.
2024-12-28 01:20:55 +0100 <monochrom> whereas the misleading syntax "print(getchar())" is the confusing one.
2024-12-28 01:21:26 +0100 <monochrom> "oh it's so academic" No, it's more honest.
2024-12-28 01:21:34 +0100emmanuelux(~emmanuelu@user/emmanuelux) emmanuelux
2024-12-28 01:21:47 +0100 <haskellbridge> <loonycyborg> I tend to see monads as something like Command pattern
2024-12-28 01:21:50 +0100 <monochrom> Also what's wrong with being academic? OOP started out as purely academic, too. So what.
2024-12-28 01:22:21 +0100 <homo> funny enough I see haskell as OOP
2024-12-28 01:23:35 +0100 <OftenFaded> academia doesn't have the best image currently
2024-12-28 01:23:58 +0100 <homo> I was taught that OOP has 4 pillars: abstraction, encapsulation, polymorphism and inheritance, name one pillar that haskell doesn't have
2024-12-28 01:24:04 +0100 <OftenFaded> lots of 'woke cultural marxists poisoning the youth with gender theories' and whatnot
2024-12-28 01:24:35 +0100 <monochrom> Maybe not very generalizable to other disciplines, but in the context of PL, you can count on academia being honest about complexity, and you can count on self-identified "practical" people being liars hiding their complexities and denying that they have made footguns.
2024-12-28 01:25:33 +0100 <haskellbridge> <loonycyborg> if they rely on trade secrets and the like to get ahead of competition then of course they would have to lie a lot
2024-12-28 01:25:41 +0100 <haskellbridge> <loonycyborg> with at least lies of omission
2024-12-28 01:25:48 +0100 <monochrom> Haskell doesn't have their polymorphism. Haskell has the opposite kind.
2024-12-28 01:26:13 +0100 <homo> loonycyborg you forgot about narcissism
2024-12-28 01:27:42 +0100 <haskellbridge> <loonycyborg> though anyone can do their learning and result doesn't depend on whether it's in academia or not
2024-12-28 01:27:48 +0100 <haskellbridge> <loonycyborg> only on effort put in
2024-12-28 01:28:08 +0100 <homo> OftenFaded don't know what you are talking about, in my experience school youth is poisoned with close-minded hateful christianity
2024-12-28 01:28:30 +0100 <OftenFaded> superb counterpoint I can't argue with at all
2024-12-28 01:28:57 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 01:28:59 +0100 <OftenFaded> jeebus is truth evolution is black magic
2024-12-28 01:29:16 +0100iteratee(~kyle@162.218.222.207) (Read error: Connection reset by peer)
2024-12-28 01:29:28 +0100iteratee(~kyle@162.218.222.207) iteratee
2024-12-28 01:29:33 +0100euleritian(~euleritia@dynamic-176-006-141-001.176.6.pool.telefonica.de)
2024-12-28 01:31:43 +0100 <OftenFaded> Need to leave soon folks, does anyone have a matrix room link by chance?
2024-12-28 01:33:02 +0100 <haskellbridge> <Bowuigi> #haskell:matrix.org (https://matrix.to/#/#haskell:matrix.org) this? I wonder if IRC displays it properly lol
2024-12-28 01:33:30 +0100vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2024-12-28 01:33:41 +0100 <OftenFaded> works for me! merci!
2024-12-28 01:34:32 +0100 <geekosaur> it does
2024-12-28 01:34:56 +0100 <geekosaur> but the link for *this* room is https://matrix.to/#/%23haskell-irc%3Amatrix.org?via=matrix.org&via=kf8nh.com&via=kde.org
2024-12-28 01:35:10 +0100OftenFaded(~OftenFade@user/tisktisk) (Quit: Client closed)
2024-12-28 01:35:19 +0100 <geekosaur> #haskell:matrix.org was linked on freenode but declined to re-establish the link on libera, as I said earlier
2024-12-28 01:36:10 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 265 seconds)
2024-12-28 01:38:17 +0100 <homo> while digging hugs's source code, I was surprised to find it contains implementation of prolog
2024-12-28 01:38:24 +0100 <homo> prolog implemented in haskell...
2024-12-28 01:38:42 +0100 <Zenen> [rationality intensifies]
2024-12-28 01:38:49 +0100 <geekosaur> wouldn't have been related to functional dependencies, would it?
2024-12-28 01:39:05 +0100 <geekosaur> they're more or less prolog in haskell's type system
2024-12-28 01:39:28 +0100 <haskellbridge> <Bowuigi> I think it is related to MPTC and overlapping instances
2024-12-28 01:39:41 +0100 <haskellbridge> <Bowuigi> I don't remember Hugs having fundeps, lemme check
2024-12-28 01:40:15 +0100 <geekosaur> pretty sure it had both MPTC and fundeps (which are pretty much mandatory to make MPTC usable)
2024-12-28 01:40:45 +0100 <geekosaur> (well, you can also do it with associated type families, but Hugs definitely doesn't have those)
2024-12-28 01:40:51 +0100 <homo> it is hard for me to understand source code of hugs, I am trying to patch src/parser.y in order to add bangpatterns, but it appears I cannot add them in one short line :(
2024-12-28 01:41:00 +0100IamPyu(~IamPyu@static209-34-105-235.r.rev.accesscomm.ca)
2024-12-28 01:41:00 +0100IamPyu(~IamPyu@static209-34-105-235.r.rev.accesscomm.ca) (Changing host)
2024-12-28 01:41:00 +0100IamPyu(~IamPyu@user/IamPyu) IamPyu
2024-12-28 01:41:25 +0100 <monochrom> Oh, bang pattern is a cross-cutting concern, yeah.
2024-12-28 01:41:26 +0100 <homo> I want to bootstrap microhs from hugs and it requires bangpatterns, I would rather not remove bangpatterns from microhs's source
2024-12-28 01:41:37 +0100 <haskellbridge> <Bowuigi> Oh it has fundeps https://www.haskell.org/hugs/pages/hugsman/exts.html
2024-12-28 01:41:47 +0100euandreh(~Thunderbi@2804:d59:8929:cc00:c70d:53a7:f44e:6c64) euandreh
2024-12-28 01:42:19 +0100 <homo> all other extensions that microhs requires are already (partially?) supported by hugs, so there is hope to get better implementation than hugs bootstrappable
2024-12-28 01:42:44 +0100 <homo> it's interesting how much of haskell2010 hugs supports
2024-12-28 01:43:07 +0100 <geekosaur> not very; 2010 only added like two things to H98 (and removed one)
2024-12-28 01:43:29 +0100 <homo> npk patterns, a simulation of logical programming
2024-12-28 01:43:54 +0100 <geekosaur> ignoring FFI and hierarchical modules, which were widely supported and (semi-)official extensions
2024-12-28 01:44:05 +0100sprotte24(~sprotte24@p200300d16f4a7c0031dcae6904c3663c.dip0.t-ipconnect.de) (Quit: Leaving)
2024-12-28 01:44:35 +0100IamPyu(~IamPyu@user/IamPyu) (Client Quit)
2024-12-28 01:44:56 +0100 <homo> it's interesting how only haskell's type-system is logic programming, but functional patterns like in curry language are impossible
2024-12-28 01:45:30 +0100 <homo> last (xs ++ [x]) = x
2024-12-28 01:45:40 +0100Sisyphean(~Sisyphean@user/Sisyphean) Sisyphean
2024-12-28 01:46:16 +0100simplystuart(~simplystu@c-75-75-152-164.hsd1.pa.comcast.net)
2024-12-28 01:48:09 +0100 <haskellbridge> <Bowuigi> Because that's a term level function, not a type level one
2024-12-28 01:48:40 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 01:48:46 +0100 <haskellbridge> <Bowuigi> A similar thing can be done at the type level, tho it doesn't look like that
2024-12-28 01:49:14 +0100 <homo> microhs is the only hope to bootstrap ghc, as unfortunately ghc maintainers have no interest to make ghc buildable with smaller haskell implementations :(
2024-12-28 01:51:42 +0100simplystuart(~simplystu@c-75-75-152-164.hsd1.pa.comcast.net) (Ping timeout: 276 seconds)
2024-12-28 01:52:35 +0100 <haskellbridge> <Bowuigi> Hmmm would a simple text replacement command deleting every ! work?
2024-12-28 01:52:59 +0100 <haskellbridge> <Bowuigi> "tr -d '!'" on Linux/POSIX
2024-12-28 01:53:04 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 252 seconds)
2024-12-28 01:54:35 +0100 <homo> speaking of smaller, https://github.com/blynn/compiler is an interesting quest where minimal compiler written in C compiles tiny subset of haskell, so next compiler is written in that tiny subset to implement bigger subset, then another compiler is written in bigger subset...
2024-12-28 01:54:57 +0100 <geekosaur> tr'd [] = []; tr'd ('!':xs) = tr'd xs
2024-12-28 01:55:07 +0100Sisyphean(~Sisyphean@user/Sisyphean) (Read error: Connection reset by peer)
2024-12-28 01:55:33 +0100 <homo> Bowuigi I don't want to do that because bangpatterns are very important for optimization, they might even prevent hugs from segfaulting
2024-12-28 01:55:38 +0100 <geekosaur> uh, no
2024-12-28 01:56:01 +0100 <c_wraith> you could always use seq directly.
2024-12-28 01:56:23 +0100 <homo> this is why I'm trying to figure out how to add bangpatterns to hugs instead of removing every ! from microhs's code
2024-12-28 01:56:26 +0100Sisyphean(~Sisyphean@user/Sisyphean) Sisyphean
2024-12-28 01:57:06 +0100 <geekosaur> tr'd xs = go xs "" where go [] ys = ys; go ('!':xs) ys = go xs ys; go (x:xs) = go xs (ys ++ [x])
2024-12-28 01:57:21 +0100 <geekosaur> faster wouuld be to prepend to ys and reverse it at the end
2024-12-28 01:57:58 +0100 <homo> sed s/!//g
2024-12-28 01:59:50 +0100 <haskellbridge> <Bowuigi> geekosaur it might be faster to use a Cayley-ish abstraction
2024-12-28 02:03:11 +0100 <haskellbridge> <Bowuigi> "tr'd xs = go xs "" where go [] = id; go ('!':xs) = go xs; go (x:xs) = (x:) . go xs"
2024-12-28 02:05:27 +0100euleritian(~euleritia@dynamic-176-006-141-001.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-12-28 02:06:22 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 02:07:39 +0100euleritian(~euleritia@dynamic-176-006-141-001.176.6.pool.telefonica.de)
2024-12-28 02:08:36 +0100bitdex(~bitdex@gateway/tor-sasl/bitdex) (Ping timeout: 264 seconds)
2024-12-28 02:10:34 +0100euleritian(~euleritia@dynamic-176-006-141-001.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-12-28 02:11:08 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 272 seconds)
2024-12-28 02:11:25 +0100euleritian(~euleritia@dynamic-176-006-141-001.176.6.pool.telefonica.de)
2024-12-28 02:12:44 +0100euleritian(~euleritia@dynamic-176-006-141-001.176.6.pool.telefonica.de) (Read error: Connection reset by peer)
2024-12-28 02:13:48 +0100euleritian(~euleritia@dynamic-176-006-141-001.176.6.pool.telefonica.de)
2024-12-28 02:15:46 +0100 <homo> btw, #guix channel has bot "sneek" and you can ask it "sneek later tell username your message" and it will do that the moment that user sends message, is there similar bot in this channel?
2024-12-28 02:17:14 +0100euandreh(~Thunderbi@2804:d59:8929:cc00:c70d:53a7:f44e:6c64) (Remote host closed the connection)
2024-12-28 02:17:50 +0100euandreh(~Thunderbi@2804:d59:8929:cc00:c70d:53a7:f44e:6c64) euandreh
2024-12-28 02:18:20 +0100 <geekosaur> lambdabot has @tell / @ask
2024-12-28 02:20:17 +0100 <geekosaur> also I think libera still operates a memoserv, but sender and recipient must both be registered with nickserv
2024-12-28 02:22:52 +0100 <homo> @tell OftenFaded I think negative part about haskell being academic is that its development cycle is not business-friendly, companies want lts releases of compilers, libraries and everything else, they want stable API and ABI that doesn't break on updates, which is not the case with haskell ecosystem as it's in process of constant research and refactoring
2024-12-28 02:22:52 +0100 <lambdabot> Consider it noted.
2024-12-28 02:22:57 +0100 <homo> thanks
2024-12-28 02:27:20 +0100 <geekosaur> the odd thing there is a lot of the changes are driven by ā€¦ businesses
2024-12-28 02:28:19 +0100 <homo> have you never noticed projects using bundled libraries?
2024-12-28 02:28:33 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) merijn
2024-12-28 02:29:25 +0100 <homo> when I create packages for distro, I have to make sure they don't build nor link to bundled libraries and instead link to system-wide libraries
2024-12-28 02:30:17 +0100 <homo> some projects (palemoon) are so hostile that they threaten with lawsuit if you don't use bundled libraries
2024-12-28 02:31:56 +0100 <fp> So I've heard that first year CS students at Edinburgh University are taught haskell as the first programming language, supposedly because it evens the playing field between students who have never programmed before and those that have. I wonder if people here have thoughts on that
2024-12-28 02:33:13 +0100merijn(~merijn@128-137-045-062.dynamic.caiway.nl) (Ping timeout: 244 seconds)
2024-12-28 02:33:20 +0100 <c_wraith> I suspect it's more about leveling the playing field between script kiddies and the inexperienced, without calling them out as such...
2024-12-28 02:33:21 +0100 <geekosaur> there is a recurrent meme that it's easier to learn Haskell if you don't know other programming languages. the factual evidence for that is mixed, as I understand it; I think I recall someone actually teaching Haskell to children and finding it was no easier for them than common programming languages, for example
2024-12-28 02:34:05 +0100 <c_wraith> The fact is, knowing how to organize your thoughts formally is the same skill no matter what programming language is involved.
2024-12-28 02:34:06 +0100 <geekosaur> (which doesn't surprise me enormously as you prpbably need a baseline level of math for it to make any sense)
2024-12-28 02:34:14 +0100 <geekosaur> and that
2024-12-28 02:34:56 +0100 <homo> when I had job with functional programming, unfortunately it was not haskell, it was a clone of haxe created by customer that segfaults on recursion, and I had to adjust my code just because compiler is incompetent
2024-12-28 02:36:22 +0100 <homo> I told customer that bug needs to be fixed in compiler instead of me adjust my code, for that reason I lost that job and I am so happy
2024-12-28 02:37:08 +0100Smiles(uid551636@id-551636.lymington.irccloud.com) (Quit: Connection closed for inactivity)