2026/06/20

Newest at the top

2026-06-20 18:02:18 +0000 <newmind> i also feel that TH is not _needed_ as often as you'd think
2026-06-20 18:01:58 +0000 <monochrom> Yeah TH is clumsy.
2026-06-20 18:01:57 +0000 <vms14> :/
2026-06-20 18:01:53 +0000 <int-e> vms14: you will be disappointed :P
2026-06-20 18:01:42 +0000 <vms14> but i will like them anyways i guess
2026-06-20 18:01:28 +0000 <vms14> i'm a bit scared of being disappointed with template haskell since i assume they won't be exactly lisp macros
2026-06-20 18:01:11 +0000 <vms14> monochrom: :D yes
2026-06-20 18:01:01 +0000 <vms14> with haskell they must play well
2026-06-20 18:00:54 +0000 <monochrom> You will be happy to hear that TH gives you both capturable vars and gensym vars.
2026-06-20 18:00:43 +0000 <vms14> i never learned about continuations though, that's something i will eventually have to learn
2026-06-20 17:59:58 +0000 <monochrom> There was only one single time I found dynamic scoping helpful. It's subtle actually. My use case: Explaining what to do with "forall a" in the parametricity theorem.
2026-06-20 17:59:53 +0000 <vms14> you just use gensym and they disappear
2026-06-20 17:59:51 +0000 <probie> R6RS gives you `syntax-case` which allows you to opt-in to horrible variable capture bugs
2026-06-20 17:58:53 +0000 <vms14> muahahahaha
2026-06-20 17:58:48 +0000 <vms14> monochrom: i meant the dirty ones, with those horrible variable capture bugs :D
2026-06-20 17:58:29 +0000 <lambdabot> monochrom says: Time flies like an arrow. Fruit flies like a banana. Syntax rules like a macro.
2026-06-20 17:58:29 +0000 <monochrom> @quote monochrom fruit.flies
2026-06-20 17:58:10 +0000 <monochrom> Scheme macros are better. (If you meant that. cool. :) )
2026-06-20 17:57:52 +0000tzh(~tzh@c-76-115-131-146.hsd1.or.comcast.net)
2026-06-20 17:57:52 +0000 <monochrom> :(
2026-06-20 17:57:41 +0000 <vms14> it's the most interesting part, since i love lisp macros
2026-06-20 17:57:28 +0000 <vms14> i have yet to learn about template haskell
2026-06-20 17:57:06 +0000 <newmind> a pure function, for example, is _trivial_ to test: you just have inputs and outputs... nothing else matters
2026-06-20 17:56:40 +0000tromp(~textual@2001:1c00:340e:2700:44f3:fa83:f05c:ef28)
2026-06-20 17:56:24 +0000 <newmind> and being able to reason about functions in siolation makes scaling a codebase up easier, not harder
2026-06-20 17:56:01 +0000 <newmind> my experience has been the opposite: refactors are a lot easier: you just change what you want changed, and the compiler tells you every place in the remaining codebase that's now out of sync
2026-06-20 17:55:54 +0000 <monochrom> Operator overloading per se is not deep, C++ had been doing that for decades. What Haskell type classes does is tidy it up and say "you can group related operators together and name the group", it doesn't have to be scattered unorganized.
2026-06-20 17:55:22 +0000 <vms14> newmind: when a program grows i have a feeling of unease when it does not longer fit in my mind, will that unease disappear no matter how long the program is as long as it typechecks?
2026-06-20 17:55:22 +0000 <probie> [controversial opinion] The world would be a better place if type classes (primarily those without any "laws") were used a bit less
2026-06-20 17:54:23 +0000 <newmind> vms14: i'm currently working on a coding agent in haskell, and what would not be possible in another language: looking at the agent's type signature and knowing, for certain, what it has access to, what it can do, and what it cannot do. the same applies to tools: you can know, exactly, that a tool cannot access your filesystem, or read your ENV, or send it somewhere
2026-06-20 17:53:42 +0000 <vms14> and ioref is there if i want to, but i will feel guilty every time i use it
2026-06-20 17:52:39 +0000 <monochrom> What I said about pure, good types, laziness. Also type classses; that's outright a gift from Haskell to the world. (It's where C++ concepts came from.)
2026-06-20 17:52:35 +0000 <vms14> i understand that the fp part will also make me a better programmer in some way, or at least give me new tools i will be able to use
2026-06-20 17:51:58 +0000 <vms14> i'm curious about how good it is managing complexity because of purity and the type system
2026-06-20 17:51:17 +0000 <vms14> can't*
2026-06-20 17:51:12 +0000karenw_(~karenw@user/karenw) (Quit: Deep into that darkness peering...)
2026-06-20 17:51:01 +0000 <vms14> or what i win if i make it my main lang
2026-06-20 17:50:46 +0000 <vms14> monochrom: what does haskell give me any other language can?
2026-06-20 17:50:29 +0000 <vms14> :0
2026-06-20 17:50:22 +0000 <lambdabot> monochrom says: I was trying to design a sensible language... then I downloaded ghc.
2026-06-20 17:50:22 +0000 <monochrom> @quote monochrom downloaded
2026-06-20 17:50:18 +0000 <monochrom> err not that one
2026-06-20 17:50:13 +0000 <lambdabot> monochrom says: just add #! /usr/bin/runghc to your haskell file. then type errors occur at runtime only.
2026-06-20 17:50:12 +0000 <monochrom> @quote monochrom ghc
2026-06-20 17:50:08 +0000vgtw_(~vgtw@user/vgtw) (Ping timeout: 265 seconds)
2026-06-20 17:50:08 +0000tromp(~textual@2001:1c00:340e:2700:44f3:fa83:f05c:ef28) (Quit: My iMac has gone to sleep. ZZZzzz…)
2026-06-20 17:50:08 +0000 <monochrom> Ah to answer your question "did it feel like haskell was made for you"...
2026-06-20 17:49:18 +0000 <vms14> and i will try to sandbox the chaos
2026-06-20 17:49:00 +0000 <vms14> i can live in chaos, but i secretly crave control
2026-06-20 17:48:28 +0000 <monochrom> "f(4) gives you different answers at different times" is something I tolerate if I have to use C because the world wants C. But that's just me playing along. Whenever it's up to me entirely, it's either shell scripts for quirky stuff or Haskell for proper stuff.