Logs: liberachat/#haskell
| 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.