2026/05/22

2026-05-22 00:12:18 +0000TwinAdam(~TwinAdam@user/adamsaunders) (Quit: ZNC 1.10.1 - https://znc.in)
2026-05-22 00:18:59 +0000TwinAdam(~TwinAdam@user/adamsaunders) adamsaunders
2026-05-22 00:36:55 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) (Ping timeout: 250 seconds)
2026-05-22 00:46:52 +0000troojg(~troojg@user/troojg) troojg
2026-05-22 01:01:23 +0000merijn(~merijn@77.242.116.146) merijn
2026-05-22 01:06:15 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 265 seconds)
2026-05-22 01:06:23 +0000Square2(~Square4@user/square) (Ping timeout: 250 seconds)
2026-05-22 01:15:53 +0000acidjnk_new3(~acidjnk@p200300d6e700e50461999fae89737d79.dip0.t-ipconnect.de) (Ping timeout: 248 seconds)
2026-05-22 01:19:49 +0000xff0x(~xff0x@2405:6580:b080:900:870d:4dab:d7c7:3a08) (Ping timeout: 250 seconds)
2026-05-22 01:27:14 +0000vetkat(~vetkat@user/vetkat) (Quit: Ping timeout (120 seconds))
2026-05-22 01:27:36 +0000vetkat(~vetkat@user/vetkat) vetkat
2026-05-22 01:35:29 +0000emilym(~Thunderbi@user/emilym) emilym
2026-05-22 01:40:11 +0000emilym(~Thunderbi@user/emilym) (Ping timeout: 252 seconds)
2026-05-22 01:42:19 +0000ftzm(~ftzm@085080245206.dynamic.telenor.dk) (Ping timeout: 264 seconds)
2026-05-22 01:42:58 +0000ftzm(~ftzm@085080242199.dynamic.telenor.dk) ftzm
2026-05-22 01:46:51 +0000merijn(~merijn@77.242.116.146) merijn
2026-05-22 01:51:25 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 245 seconds)
2026-05-22 02:02:45 +0000merijn(~merijn@77.242.116.146) merijn
2026-05-22 02:04:23 +0000rabbull7(~rabbull@xdsl-31-164-93-219.adslplus.ch) (Quit: Ping timeout (120 seconds))
2026-05-22 02:04:36 +0000rabbull7(~rabbull@xdsl-31-164-93-219.adslplus.ch)
2026-05-22 02:05:41 +0000notzmv(~umar@user/notzmv) notzmv
2026-05-22 02:08:36 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 244 seconds)
2026-05-22 02:14:42 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp)
2026-05-22 02:20:09 +0000troojg(~troojg@user/troojg) (Ping timeout: 246 seconds)
2026-05-22 02:29:54 +0000sefidel(~sefidel@user/sefidel) (Remote host closed the connection)
2026-05-22 02:36:14 +0000r4bbyte(~user@2601:404:ce04:9df0::57d4)
2026-05-22 02:40:56 +0000 <r4bbyte> Hi, I haven't quite decided to pick up the language yet and wanted to ask about how good the tooling / libraries were. I spent a bit of time with CL, and was a bit disappointed in the lack of proper libraries (and good package management) for most common applications. I am really looking for more of a general purpose language that I can use in nearly any scenario without too many sacrifices, and wanted to get advice on how Haskell
2026-05-22 02:40:56 +0000 <r4bbyte> performed in that regard.
2026-05-22 02:49:39 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-05-22 02:50:41 +0000 <davean> it the System/38 langauge from .... 50 years ago? We're being trolled.
2026-05-22 02:51:13 +0000 <r4bbyte> Sorry?
2026-05-22 02:52:02 +0000Katarushisu62(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
2026-05-22 02:54:10 +0000Katarushisu6(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Ping timeout: 248 seconds)
2026-05-22 02:54:11 +0000Katarushisu62Katarushisu6
2026-05-22 02:56:23 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:c96:6fe3:6c1d:2729)
2026-05-22 02:56:35 +0000ricardomaps(~ricardoma@2804:14d:a040:81ea:c96:6fe3:6c1d:2729) (Client Quit)
2026-05-22 02:58:46 +0000machinedgod(~machinedg@d172-219-48-230.abhsia.telus.net) machinedgod
2026-05-22 02:59:40 +0000 <EvanR> CL = common lisp right
2026-05-22 03:00:06 +0000 <monochrom> Why don't I troll too! Define "most common applications".
2026-05-22 03:00:37 +0000 <monochrom> I have seen two people disagreeing on what that includes and excludes.
2026-05-22 03:01:10 +0000 <EvanR> haskell has trouble running on 8bit microcontrollers so
2026-05-22 03:01:22 +0000 <r4bbyte> Yeah, common lisp
2026-05-22 03:02:12 +0000 <EvanR> default build system and packaging is cabal. Package management is through hackage. It works
2026-05-22 03:03:26 +0000 <EvanR> if bindings don't exist to the non haskell library of your choice you can use the FFI yourself to make it so
2026-05-22 03:03:58 +0000 <EvanR> this is how I managed to get a cocoa GUI for my haskell app back in the day
2026-05-22 03:04:18 +0000 <r4bbyte> I apologize if it comes off that I'm being dishonest in any way, I have little experience with FP but I'm looking to gain some
2026-05-22 03:05:06 +0000 <r4bbyte> CL just had me running into roadblock after roadblock with unmaintained libraries with poor documentation
2026-05-22 03:06:15 +0000weary-traveler(~user@user/user363627) (Quit: Konversation terminated!)
2026-05-22 03:06:29 +0000 <r4bbyte> I've heard Haskell is a pretty large investment, at least time wise, so I wanted to ask if the situation was much better before I pushed myself too hard
2026-05-22 03:06:32 +0000weary-traveler(~user@user/user363627) user363627
2026-05-22 03:06:57 +0000 <EvanR> it depends if you had any previous experience with functional style
2026-05-22 03:07:57 +0000 <EvanR> e.g. lisp at least emphasizes functions with little to no side effects and leveraging data instead of just algorithms
2026-05-22 03:08:10 +0000 <monochrom> You can hop over to https://hackage.haskell.org/ to see what libraries the community has and doesn't have.
2026-05-22 03:08:11 +0000 <EvanR> so you don't have to learn that
2026-05-22 03:08:52 +0000 <EvanR> you get a head start into the specifically haskell stuff like lazy evaluation
2026-05-22 03:09:09 +0000 <monochrom> Like I said I don't know what the hell "common" means.
2026-05-22 03:10:10 +0000 <r4bbyte> I have experience with (trying) to write purely functional lisp
2026-05-22 03:10:55 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection)
2026-05-22 03:11:17 +0000bitdex(~bitdex@gateway/tor-sasl/bitdex) bitdex
2026-05-22 03:11:23 +0000 <x9> lisp is call by value haskell is call by name
2026-05-22 03:11:36 +0000 <EvanR> uhg
2026-05-22 03:11:51 +0000 <EvanR> eager evaluation, lazy evaluation
2026-05-22 03:12:27 +0000 <EvanR> the give the same results unless there is non-termination
2026-05-22 03:12:42 +0000 <EvanR> but have different performance
2026-05-22 03:12:58 +0000 <x9> also the thing about lisp is that lisp you can remember in your head as for the whole interpreter, to write on paper as for the whole interpreter etc. haskell is more like excellent engineering for real world usage, where you can always copy ghc from online, but which is too big to ever make yourself.
2026-05-22 03:13:37 +0000 <EvanR> fits on a napkin means it's a good esolang, not necessarily "good"
2026-05-22 03:13:43 +0000 <r4bbyte> lol
2026-05-22 03:14:40 +0000 <r4bbyte> i think lisp has a lot of interesting things (homoiconicity & macros) cl can get very, very ugly very quickly
2026-05-22 03:14:57 +0000 <x9> mathematically fits on a napkin means you can reproduce the automata easier
2026-05-22 03:15:08 +0000 <r4bbyte> i just want something elegant
2026-05-22 03:15:13 +0000 <EvanR> the napkin version doesn't actually let you write real programs
2026-05-22 03:15:14 +0000 <x9> hence to mutate it easier etc.
2026-05-22 03:15:52 +0000 <x9> i think haskell is a beautiful giant for enterprise and yes the actual programs
2026-05-22 03:15:59 +0000 <x9> that need to run with assurance and such
2026-05-22 03:16:23 +0000 <x9> lol what vagueness
2026-05-22 03:16:50 +0000 <EvanR> once you get into it you can generate many napkin sized languages with haskell, e.g. simply typed lambda calculus, if you want
2026-05-22 03:17:09 +0000 <EvanR> minimal dependently typed lambda calculus
2026-05-22 03:17:14 +0000 <davean> Oh I'm not familiar with people refering to common lisp as "CL" I guess its because no one I know says it enough to abreviate :)
2026-05-22 03:17:37 +0000 <monochrom> Common Lisp has so many special forms that the point of barebone Lisp being just 3 simple rules is moot. Without the special forms, you don't even have if-then-else.
2026-05-22 03:17:55 +0000 <r4bbyte> i agree
2026-05-22 03:18:45 +0000 <EvanR> variable, lambda form, application
2026-05-22 03:18:54 +0000 <monochrom> In contrast, if Haskell did not give you an if-then-else, you could have written your own because lazy evaluation makes it work. That's when the point "the core language is simple" is relevant.
2026-05-22 03:19:20 +0000 <r4bbyte> on mutating programs, while i was looking into this, i actually did see a "napkin" version of lisps prefix notation implemented for genetic programming in haskell
2026-05-22 03:19:30 +0000 <EvanR> haha yeah call/cc is a thing you can just write in haskell
2026-05-22 03:19:35 +0000 <EvanR> if you want that
2026-05-22 03:20:08 +0000 <EvanR> (you probably don't)
2026-05-22 03:20:21 +0000 <monochrom> As far as barebone languages not meant to be practical are concerned, IMO System F is better than barebone Lisp.
2026-05-22 03:21:36 +0000undermine(~user@user/undermine) (Quit: Bye)
2026-05-22 03:21:37 +0000Wanderer(~wanderer@user/wanderer) (Quit: goodbye)
2026-05-22 03:21:39 +0000 <r4bbyte> the thing that makes cl impractical for me was this experience i had trying to write a basic text editor
2026-05-22 03:21:49 +0000 <r4bbyte> getting the terminal in raw mode was
2026-05-22 03:21:51 +0000 <r4bbyte> not fun
2026-05-22 03:22:04 +0000 <monochrom> I once taught students both call/cc and shift/reset. Students asked "why did call/cc even exist? shift/reset is better". I had to answer "call/cc was invented first. as usual, the first ideas were not the best ideas in retrospect. Progress!"
2026-05-22 03:24:30 +0000Wanderer(~wanderer@user/wanderer) Wanderer
2026-05-22 03:24:47 +0000 <monochrom> BTW I am also planning to teach Dhall! Because it's System F. :)
2026-05-22 03:25:20 +0000 <EvanR> we have a couple libraries for abusing terminals for apps: https://hackage.haskell.org/package/vty https://hackage.haskell.org/package/ansi-terminal
2026-05-22 03:25:34 +0000 <EvanR> also some game libraries built on those
2026-05-22 03:26:15 +0000 <EvanR> it seems most haskell gaming has historically been terminal based
2026-05-22 03:26:51 +0000 <r4bbyte> lmao
2026-05-22 03:27:41 +0000fgarcia(~lei@user/fgarcia) fgarcia
2026-05-22 03:30:32 +0000 <EvanR> these libraries are nice for gluing your app to the outside world where world happens to be a terminal. But not the greatest demonstration of FP concepts
2026-05-22 03:31:15 +0000 <EvanR> diagrams on the other hand https://diagrams.github.io/gallery.html
2026-05-22 03:32:32 +0000rainbyte(~rainbyte@181.47.219.3) (Read error: Connection reset by peer)
2026-05-22 03:33:53 +0000 <EvanR> I see some of these diagram programs can be greatly simplified for spectator purposes
2026-05-22 03:34:24 +0000rainbyte(~rainbyte@181.47.219.3) rainbyte
2026-05-22 03:37:53 +0000x9(~x9@91-157-105-12.elisa-laajakaista.fi) (Quit: Client closed)
2026-05-22 03:47:51 +0000merijn(~merijn@77.242.116.146) merijn
2026-05-22 03:51:31 +0000res0nat0r0844909(~Fletch@falcon.whatbox.ca) (Quit: The Lounge - https://thelounge.chat)
2026-05-22 03:52:42 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 256 seconds)
2026-05-22 04:07:24 +0000notzmv(~umar@user/notzmv) (Ping timeout: 245 seconds)
2026-05-22 04:11:27 +0000sprout(~sprout@84-80-106-227.fixed.kpn.net) (Ping timeout: 246 seconds)
2026-05-22 04:14:30 +0000 <r4bbyte> what editors / ides do you guys use for haskell?
2026-05-22 04:18:43 +0000 <sm> vs code and the Haskell extension
2026-05-22 04:23:13 +0000 <jackdk> GNU Emacs, haskell-mode for syntax highlighting, dante for ghci auto-loading. There are probably more modern setups with LSP integration etc that I haven't had time to explore.
2026-05-22 04:26:24 +0000 <r4bbyte> i'm actually on erc right now, i haven't played much with lsp stuff
2026-05-22 04:27:41 +0000poscat0x04(~poscat@user/poscat) poscat
2026-05-22 04:29:08 +0000poscat(~poscat@user/poscat) (Ping timeout: 244 seconds)
2026-05-22 04:29:35 +0000ChaiTRex(~ChaiTRex@user/chaitrex) (Remote host closed the connection)
2026-05-22 04:30:00 +0000ChaiTRex(~ChaiTRex@user/chaitrex) ChaiTRex
2026-05-22 04:35:32 +0000Inst(~Inst@user/Inst) Inst
2026-05-22 04:35:38 +0000 <Inst> is it okay if I ask about project scopes and timetables?
2026-05-22 04:35:55 +0000 <Inst> because, my alternative is to ask DeepSeek / Kimi / Gemini / Claude, and ummm, lol
2026-05-22 04:37:23 +0000 <Inst> Like, for instance, I wired up a custom authn authz over Supabase, using Twain, Servant, Postgresql-Simple, and Hasql
2026-05-22 04:37:33 +0000 <Inst> opaque token, has an OIDC endpoint that partially works
2026-05-22 04:37:44 +0000 <Inst> 6 weeks, is that reasonable? Or mostly reflective of my inexperience?
2026-05-22 04:38:05 +0000 <Inst> It needs refactoring to provide a unified schema and endpoint setup
2026-05-22 04:38:39 +0000 <Inst> I'm now thinking about, first, providing a Discord - Telegram - Webclient mirror (using a simplified and vibecoded Next.js frontend, but locked down on hand-built Haskell backend)
2026-05-22 04:39:00 +0000 <Inst> I need a custom dossier system that's suitable for HR and human development
2026-05-22 04:39:08 +0000euphores(~SASL_euph@user/euphores) euphores
2026-05-22 04:39:27 +0000 <Inst> as well as a scheduling and coordination system that can track user activity, allows invites, and event generation
2026-05-22 04:39:46 +0000 <Inst> What kind of time budget can I expect for this?
2026-05-22 04:45:06 +0000r4bbyte(~user@2601:404:ce04:9df0::57d4) (Remote host closed the connection)
2026-05-22 04:48:51 +0000merijn(~merijn@77.242.116.146) merijn
2026-05-22 04:52:15 +0000sprout(~sprout@84-80-106-227.fixed.kpn.net) sprout
2026-05-22 04:53:30 +0000fgarcia(~lei@user/fgarcia) (Ping timeout: 245 seconds)
2026-05-22 04:54:29 +0000 <Inline> 6*AI^2
2026-05-22 04:54:38 +0000 <Inline> lol
2026-05-22 04:55:19 +0000merijn(~merijn@77.242.116.146) (Ping timeout: 245 seconds)
2026-05-22 04:55:37 +0000 <Inst> In actuality, I'm discovering I need to hand refactor the AI codebase anyways
2026-05-22 04:55:51 +0000 <Inst> I need centralized libs, simplified route.ts files, etc
2026-05-22 04:56:01 +0000 <Inst> I don't know frontend, and I have someone hired to help me with the frontend
2026-05-22 04:56:09 +0000 <sm> Inst what's your situation ? Are you doing this as employee, business owner, hobbyist ?
2026-05-22 04:56:15 +0000 <Inst> hobbyist
2026-05-22 04:56:22 +0000 <Inst> i'm building a guild website and a gaming guild
2026-05-22 04:56:27 +0000 <Inst> as a customer acquisition front for a start-up
2026-05-22 04:56:32 +0000 <sm> then it takes as long as it takes, right ? try and you'll find out
2026-05-22 04:56:39 +0000 <sm> we sure don't know :)
2026-05-22 04:56:51 +0000 <Inst> wish i had a budget for you, SM
2026-05-22 04:57:11 +0000 <Inst> you know what you're doing, I'm hiring people who are probably hiding the fact that this is their first Haskell project
2026-05-22 04:57:15 +0000 <sm> especially in the new AIge... timetables are crazy now
2026-05-22 04:57:36 +0000 <Inst> it's just terrible for me because I think up features way faster than I can implement
2026-05-22 04:57:41 +0000 <Inst> took me a week to get the OIDC spoofer up
2026-05-22 04:57:51 +0000 <Inst> 3 weeks for the Authn / Authz
2026-05-22 04:57:54 +0000 <sm> I don't want to advocate AI use, but that's exactly where people are having success with it
2026-05-22 04:58:37 +0000 <Inst> AI project management is giving me ridiculous timetables, albeit I end up estimating completion within 48 hours that usually turns into 168
2026-05-22 04:59:27 +0000 <sm> maybe you need to refine your techniques a little more ? read how successful folks are managing it ?
2026-05-22 04:59:43 +0000 <Inst> ya
2026-05-22 04:59:57 +0000 <sm> I imagine estimating is still going to be hard and usually longer than you think, it always is
2026-05-22 05:00:02 +0000 <Inst> i honestly have no interest in writing servant servers 49382 times to get good at it, the point i'm interested in right now is rapid library pickup
2026-05-22 05:00:14 +0000 <Inst> second derivative skills are what's repeatable
2026-05-22 05:00:14 +0000michalz(~michalz@185.246.207.221)
2026-05-22 05:00:18 +0000res0nat0r0844909(~Fletch@falcon.whatbox.ca)
2026-05-22 05:00:50 +0000 <Inst> I have Parkinson's Law for estimates, if I don't make them aggressive, I waste time, but if I do make them aggressive, I miss targets.
2026-05-22 05:01:12 +0000 <sm> what if you reduce scope, estimate and work on smaller chunks
2026-05-22 05:02:17 +0000 <Inst> I mean I'm already working at the minimum scope
2026-05-22 05:02:24 +0000 <sm> you're not
2026-05-22 05:02:24 +0000 <Inst> I've already decided to plug in off the shelf software for this
2026-05-22 05:02:36 +0000 <sm> you can always reduce scope
2026-05-22 05:02:37 +0000 <Inst> as placeholders
2026-05-22 05:03:30 +0000 <sm> I used to work with the founder of Heroku, a very good programmer, and he was a master at dynamically downsizing his goal in real time until it became easy
2026-05-22 05:04:04 +0000 <Inst> hmmmm
2026-05-22 05:04:12 +0000 <Inst> the problem is, I have a mindset of prototype then iterate
2026-05-22 05:04:15 +0000 <Inst> and I tested it
2026-05-22 05:04:24 +0000 <Inst> I refactored my core authn authz 3 times ;_;
2026-05-22 05:04:53 +0000 <sm> that's a good mindsent
2026-05-22 05:04:57 +0000 <Inst> that is what i worry about minimal scope, if you do minimal scope, you're not future proofing, and you're giving yourself a harder problem of retrofitting features in
2026-05-22 05:04:58 +0000 <sm> mindset