2026/06/01

Newest at the top

2026-06-01 11:03:36 +0000takuan(~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 265 seconds)
2026-06-01 11:00:54 +0000ninjacato(~Thunderbi@user/ninjacato) ninjacato
2026-06-01 10:59:55 +0000 <yin> OP is reading and answering comments
2026-06-01 10:59:06 +0000ninjacato(~Thunderbi@user/ninjacato) (Remote host closed the connection)
2026-06-01 10:54:05 +0000danz84949(~danza@user/danza) (Remote host closed the connection)
2026-06-01 10:50:15 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 258 seconds)
2026-06-01 10:49:57 +0000xff0x(~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 272 seconds)
2026-06-01 10:48:51 +0000 <danz84949> reddit keeps those tales alive
2026-06-01 10:48:02 +0000 <[exa]> oh, the early internet fairy tales and their OPs who read comments
2026-06-01 10:43:08 +0000 <tomsmeding> oh, hm, no it's the OP that should read those comments, not you, I guess -- sorry
2026-06-01 10:42:22 +0000 <tomsmeding> yin: just read the comments by hanshuttel there in that reddit thread, there's your answer :p
2026-06-01 10:42:03 +0000 <newmind> yeah, you can go full IO and IORefs and basically code C in haskell too.. the question is just: why would you?
2026-06-01 10:40:47 +0000 <newmind> although it helps a lot that a lot of functional patterns (map/filter, iterators) are creeping into mainstream languages
2026-06-01 10:40:44 +0000 <tomsmeding> even though the language technically can let you, but we're not teaching you that part of the language quite yet so that you learn how to solve it the other way
2026-06-01 10:40:20 +0000 <tomsmeding> yes
2026-06-01 10:40:02 +0000 <newmind> i think that's the reason why haskell (or functional programming in general) seems a bit harder if you're already profficient in other paradigms: you _know_ how to solve this problem, yet you're stumped that "the language" isn't letting you
2026-06-01 10:40:01 +0000 <tomsmeding> ("why do I have to learn cmake? make works fine")
2026-06-01 10:39:40 +0000rscastilho2024_(rscastilho@user/rscastilho2024-:23901) (Remote host closed the connection)
2026-06-01 10:39:21 +0000 <tomsmeding> and resistance to learning a new paradigm is, I suspect, nothing more than resistance to learning a new way of doing something if you already know how to do it otherwise
2026-06-01 10:38:47 +0000 <tomsmeding> and 1. that will make you dislike the language because it doesn't seem to bring you much over the languages you already know, and 2. you're kinda missing the point
2026-06-01 10:38:24 +0000 <tomsmeding> if you learn Haskell by writing very imperative code in Haskell, you might be learning the language, but you're not learning the paradigm
2026-06-01 10:38:06 +0000 <tomsmeding> I think the top comment on that reddit post is actually spot-on: "If you want to write C code, use C, not Haskell": learning functional programming is more learning a new programming paradigm than learning a new language
2026-06-01 10:37:41 +0000rscastilho2024_(rscastilho@user/rscastilho2024-:23901) rscastilho2024_
2026-06-01 10:36:31 +0000 <tomsmeding> "you can do imperative programming without too much effort" -- yes, but no: the syntax is much more verbose than you'd have in C, and you have the two-layer system that [exa] mentions
2026-06-01 10:36:18 +0000 <[exa]> so I'm now taking monads from one direction first (with the andThen approach with Maybes and Lists) then IO from the EDSL direction (hey look we have some magic monad instances that make stuff work like imperative!), then we derive State, and then IO is "trivial" (hey look State RealWorld, takes quite some memory right? padmeface)
2026-06-01 10:35:47 +0000 <newmind> dealing with just IO is fine, especially with the syntactic sugar of the do syntax. where it really starts to trip people up is when you start working with more than one monad
2026-06-01 10:34:02 +0000 <[exa]> yeah the main didactic issue is that there's 2 kinda hidden layers (1 realworld and 1 monad abstraction) and that doesn't really help it to click faster
2026-06-01 10:32:50 +0000 <yin> i remember IO taking me a while to understand correctly
2026-06-01 10:32:06 +0000 <[exa]> essentially "okay so we have IO, how do we encode pascal into it"
2026-06-01 10:31:40 +0000 <[exa]> yin: btw I'm doing this on 2nd or 3rd lecture (depending on how much blabla I glue to typeclasses)
2026-06-01 10:28:51 +0000 <[exa]> yin: turns out there isn't much of that effect if students start with more functional approaches (SICP-ish)
2026-06-01 10:27:57 +0000 <[exa]> yin: I wouldn't say there's resistance, it's more of a momentum
2026-06-01 10:27:57 +0000 <jaror> And from the outside that seems like what most people in industry are doing.
2026-06-01 10:27:35 +0000 <jaror> Haskell is essentially a multi-paradigm language, you can use it to do imperative programming without too much effort.
2026-06-01 10:26:58 +0000 <jaror> I don't teach, but I think it is because we still have escape hatches like IO.
2026-06-01 10:26:53 +0000 <yin> and what are efdective ways to convey the right message?
2026-06-01 10:25:35 +0000 <yin> i know some people here teach. where does the resistance to abandon the imperatove paradigm when learning functional programming stem from? i'm getting anxious reading some comments on this post https://www.reddit.com/r/haskellquestions/comments/1tscedu/why_haskell_tutorials_do_not_include_th…
2026-06-01 10:22:35 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-01 10:21:16 +0000aetepe(~aetepe@188.119.22.175) aetepe
2026-06-01 10:18:17 +0000ninjacato(~Thunderbi@user/ninjacato) ninjacato
2026-06-01 10:10:31 +0000vanishingideal(~vanishing@user/vanishingideal) (Ping timeout: 262 seconds)
2026-06-01 10:03:23 +0000gentauro(~gentauro@user/gentauro) (Remote host closed the connection)
2026-06-01 09:32:55 +0000vanishingideal(~vanishing@user/vanishingideal) vanishingideal
2026-06-01 09:27:20 +0000Enrico63(~Enrico63@host-95-247-196-30.retail.telecomitalia.it) Enrico63
2026-06-01 09:18:48 +0000CiaoSen(~Jura@2a02:3031:2e2:74df:4e50:ddff:fe9b:8922) CiaoSen
2026-06-01 09:07:20 +0000wickedjargon(~user@2605:8d80:5431:c7f3:cb6a:c99b:bed8:74f5) (Ping timeout: 256 seconds)
2026-06-01 09:01:44 +0000Googulator31Googulator
2026-06-01 08:50:39 +0000acidjnk(~acidjnk@p200300d6e700e5447240697420104f78.dip0.t-ipconnect.de) acidjnk
2026-06-01 08:50:37 +0000acidjnk_new3(~acidjnk@p200300d6e700e5073b062b09158277c9.dip0.t-ipconnect.de) (Ping timeout: 276 seconds)
2026-06-01 08:49:45 +0000acidjnk(~acidjnk@p200300d6e700e5073b062b09158277c9.dip0.t-ipconnect.de) (Ping timeout: 245 seconds)