Home liberachat/#haskell: Logs Calendar

Logs: liberachat/#haskell

←Prev  Next→ 1,804,496 events total
2025-08-20 02:23:28 <geekosaur> and wasm is still fairly early even in ghc, much less tooling support
2025-08-20 02:26:22 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 02:28:35 × peterbecich quits (~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 256 seconds)
2025-08-20 02:28:51 sajenim joins (~sajenim@user/sajenim)
2025-08-20 02:29:05 <geekosaur> (tbh I think most of us have been waiting for ghc wasm to settle down a bit before trying to support it properly. but see for example https://github.com/haskell/cabal/issues/10923
2025-08-20 02:31:00 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-08-20 02:38:34 × tv quits (~tv@user/tv) (Server closed connection)
2025-08-20 02:38:57 tv joins (~tv@user/tv)
2025-08-20 02:41:45 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 02:46:33 Guest6229 joins (~Guest6229@8.211.128.144)
2025-08-20 02:46:44 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-08-20 02:46:57 <Guest6229> what is a combinator?
2025-08-20 02:50:50 <geekosaur> a function designed to be combined with other functions in some fashion
2025-08-20 02:51:10 <geekosaur> as a parameter applied to something, in a chain of function applications, etc.
2025-08-20 02:51:19 <geekosaur> it's pretty loose
2025-08-20 02:51:45 <haskellbridge> <iqubic (she/her)> Like (.) or on
2025-08-20 02:53:32 <Leary> There is a strict definition, but it's more often used loosely. "A combinator is a higher-order function that uses only function application and earlier defined combinators to define a result from its arguments."
2025-08-20 02:56:02 <geekosaur> you can define combinators in other languages, but FP languages generally make them a lot more convenient, so they get used widely
2025-08-20 02:57:15 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 02:57:26 × ackthet quits (~ackthet@user/ackthet) (Server closed connection)
2025-08-20 02:57:44 ackthet joins (~ackthet@user/ackthet)
2025-08-20 02:58:15 <Guest6229> Control.Monad.fix is Y combinator?
2025-08-20 02:58:34 <geekosaur> a special purpose combinator, but yes
2025-08-20 02:59:17 <geekosaur> well, it's as close as we can get to it; strictly speaking, the Y combinator can't be typed and only exists in itsd purest form within the untyped lambda calculus
2025-08-20 02:59:20 <geekosaur> *its
2025-08-20 02:59:30 <Leary> Not really. `Data.Function.fix` is Haskell's equivalent of the Y combinator, but it's not actually implemented as such.
2025-08-20 02:59:46 <Leary> And you can type Y with newtypes.
2025-08-20 03:00:41 <Leary> The real issue with it is runaway "simplification" (and non-sharing).
2025-08-20 03:02:01 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-08-20 03:02:57 <jreicher> Guest6229: In the formalisms it is a function that has its own reduction rule
2025-08-20 03:03:21 <jreicher> But in the translation to lambda calculus it's usually used to mean a lambda abstraction of a certain form
2025-08-20 03:03:33 <Guest6229> Y = λf. (λx.f (x x)) (λx.f (x x))  turn this to haskell is Y = \f -> (\x -> f (x x)) (\x -> f (x x))?
2025-08-20 03:04:17 <jreicher> That's a lambda "equivalent" of the Y combinator. In combinator calculus it is no more and no less than Y f -> f (Y f). It has that reduction rule.
2025-08-20 03:04:19 <Guest6229> but in haskell fix f = let x = f x in x
2025-08-20 03:12:38 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 03:13:58 <geekosaur> let is recursive, so it incorporates the recursion in the combinator calculus version automatically. (That is, the `x` on both sides of the `=` are the same, so Haskell keeps solving for that `x`)
2025-08-20 03:17:20 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-08-20 03:18:21 <jreicher> I haven't looked, but I'm pretty sure Haskell would be building a circular data structure for it too.
2025-08-20 03:18:53 tinjamin47 joins (~tinjamin@banshee.h4x0r.space)
2025-08-20 03:19:43 <haskellbridge> <iqubic (she/her)> fix is useful
2025-08-20 03:19:58 <Guest6229> examples?
2025-08-20 03:20:21 × tinjamin4 quits (~tinjamin@banshee.h4x0r.space) (Ping timeout: 248 seconds)
2025-08-20 03:20:21 tinjamin47 is now known as tinjamin4
2025-08-20 03:20:45 <haskellbridge> <iqubic (she/her)> factorial n = fix (\f -> if n == 0 then 1 else f (n - 1) * n)
2025-08-20 03:21:54 <haskellbridge> <iqubic (she/her)> I'm sure there are other examples out there. But much like Haskell itself, I'm a lazy lady
2025-08-20 03:22:50 <haskellbridge> <iqubic (she/her)> I also like doing dumb things like:
2025-08-20 03:23:26 <haskellbridge> <iqubic (she/her)> ones = fix (\x -> cycle (1 : x))
2025-08-20 03:23:58 <haskellbridge> <iqubic (she/her)> > fix (\x -> cycle (1 : x))
2025-08-20 03:24:12 <haskellbridge> <iqubic (she/her)> Looks like lambdabot doesn't like bridged messages.
2025-08-20 03:24:33 <Leary> > fix (1:)
2025-08-20 03:24:35 <lambdabot> [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1...
2025-08-20 03:26:12 <haskellbridge> <iqubic (she/her)> fibs = fix (scanl (+) 0 . (1:))
2025-08-20 03:26:28 <haskellbridge> <iqubic (she/her)> Don't ask me why that works. I don't know.
2025-08-20 03:27:06 × connrs quits (~connrs@user/connrs) (Server closed connection)
2025-08-20 03:27:13 connrs joins (~connrs@user/connrs)
2025-08-20 03:27:41 Guest43 joins (~Guest6229@8.211.128.144)
2025-08-20 03:28:01 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 03:30:21 × Guest6229 quits (~Guest6229@8.211.128.144) (Ping timeout: 250 seconds)
2025-08-20 03:32:05 × Guest43 quits (~Guest6229@8.211.128.144) (Ping timeout: 250 seconds)
2025-08-20 03:32:37 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-08-20 03:37:35 aforemny joins (~aforemny@2001:9e8:6ce5:a500:3aae:62bd:8c6e:65de)
2025-08-20 03:38:40 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 03:38:51 × aforemny_ quits (~aforemny@i577B1287.versanet.de) (Ping timeout: 256 seconds)
2025-08-20 03:38:54 Guest6229 joins (~Guest6229@8.211.128.144)
2025-08-20 03:43:24 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-08-20 03:48:59 × Guest6229 quits (~Guest6229@8.211.128.144) (Ping timeout: 250 seconds)
2025-08-20 03:53:55 <jcarpenter2> I'm going to try out ghcprofview-hs
2025-08-20 03:54:10 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 03:56:03 <jcarpenter2> well heck, it didn't build lol
2025-08-20 03:56:20 <jcarpenter2> hmmmmmmmm
2025-08-20 03:56:38 <jcarpenter2> I wonder how long it would take me to write a GUI utility.
2025-08-20 04:00:57 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-08-20 04:12:13 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 04:16:30 × rekahsoft quits (~rekahsoft@bras-base-orllon1103w-grc-15-174-95-4-83.dsl.bell.ca) (Remote host closed the connection)
2025-08-20 04:16:39 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds)
2025-08-20 04:22:54 peterbecich joins (~Thunderbi@syn-047-229-123-186.res.spectrum.com)
2025-08-20 04:25:00 × chymera quits (~chymera@ns1000526.ip-51-81-46.us) (Server closed connection)
2025-08-20 04:25:18 chymera joins (~chymera@ns1000526.ip-51-81-46.us)
2025-08-20 04:27:35 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 04:27:55 × fgarcia quits (~lei@user/fgarcia) (Quit: Remote host closed the connection)
2025-08-20 04:29:57 fgarcia joins (~lei@user/fgarcia)
2025-08-20 04:32:07 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-08-20 04:39:40 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 04:41:17 × urdh quits (~urdh@user/urdh) (Server closed connection)
2025-08-20 04:41:32 urdh joins (~urdh@user/urdh)
2025-08-20 04:42:56 mange joins (~mange@user/mange)
2025-08-20 04:43:07 × tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 260 seconds)
2025-08-20 04:44:08 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds)
2025-08-20 04:47:13 tomboy64 joins (~tomboy64@user/tomboy64)
2025-08-20 04:50:59 Square joins (~Square4@user/square)
2025-08-20 04:51:52 × Philonous quits (~Philonous@user/philonous) (Server closed connection)
2025-08-20 04:52:12 Philonous joins (~Philonous@user/philonous)
2025-08-20 04:54:08 × Square2 quits (~Square@user/square) (Ping timeout: 245 seconds)
2025-08-20 04:55:10 merijn joins (~merijn@host-vr.cgnat-g.v4.dfn.nl)
2025-08-20 04:55:14 × mikko quits (~mikko@user/mikko) (Server closed connection)
2025-08-20 04:55:37 mikko joins (~mikko@2a01:4f9:c012:ac71::1)
2025-08-20 04:55:37 × mikko quits (~mikko@2a01:4f9:c012:ac71::1) (Changing host)
2025-08-20 04:55:37 mikko joins (~mikko@user/mikko)
2025-08-20 04:59:54 × merijn quits (~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2025-08-20 05:03:10 machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net)

All times are in UTC.