2026/03/04

Newest at the top

2026-03-04 02:19:11 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-04 02:15:44 +0100nschoe(~nschoe@2a01:e0a:8e:a190:bcc4:c62f:8a83:eae8) (Ping timeout: 245 seconds)
2026-03-04 02:13:48 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds)
2026-03-04 02:10:24 +0100 <yin> Leary: \o/
2026-03-04 02:10:03 +0100 <EvanR> newtype to the rescue
2026-03-04 02:09:18 +0100 <lambdabot> MkT (MkT (MkT (MkT (MkT (MkT (MkT (MkT (MkT (MkT (MkT (MkT (MkT (MkT (MkT (M...
2026-03-04 02:09:17 +0100 <EvanR> it used to actually report something about infinite types
2026-03-04 02:09:17 +0100 <Leary> > let x = MkT (x, x) in x
2026-03-04 02:09:09 +0100 <lambdabot> Defined.
2026-03-04 02:09:08 +0100 <Leary> @let newtype T = MkT (T, T) deriving Show
2026-03-04 02:08:54 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-04 02:08:17 +0100 <EvanR> did you try to make an infinite tuple with an infinite type
2026-03-04 02:07:36 +0100 <yin> shame
2026-03-04 02:07:18 +0100 <lambdabot> the inferred type of x :: (a1, b1)
2026-03-04 02:07:18 +0100 <lambdabot> ‘b1’ is a rigid type variable bound by
2026-03-04 02:07:17 +0100 <lambdabot> Couldn't match expected type ‘b1’ with actual type ‘(a1, b1)’
2026-03-04 02:07:16 +0100 <yin> > let x = (x,x) in x
2026-03-04 02:07:13 +0100 <yin> let x = (x,x) in x
2026-03-04 02:06:34 +0100 <lambdabot> ((), ((), ((), ())))
2026-03-04 02:06:34 +0100 <yin> :t ((), ((), ((), ())))
2026-03-04 02:06:01 +0100 <Leary> Yeah.
2026-03-04 02:03:52 +0100 <EvanR> with nested tuples you can stash a variety of types on the "stack" ?
2026-03-04 02:02:47 +0100 <yin> the little haskeller
2026-03-04 01:59:22 +0100nschoe(~nschoe@2a01:e0a:8e:a190:bcc4:c62f:8a83:eae8) nschoe
2026-03-04 01:57:45 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 248 seconds)
2026-03-04 01:57:39 +0100 <Leary> It's much cooler with tuples than lists. :)
2026-03-04 01:57:30 +0100 <lambdabot> 9
2026-03-04 01:57:29 +0100 <Leary> > let start = \k -> k (); push s x = \k -> k (x, s); apply (f, (x, s)) = \k -> k (f x, s); end (x, ()) = x in start push 1 push 2 push (+) apply apply push 3 push (*) apply apply end
2026-03-04 01:52:30 +0100nschoe(~nschoe@2a01:e0a:8e:a190:bcc4:c62f:8a83:eae8) (Ping timeout: 246 seconds)
2026-03-04 01:51:37 +0100 <geekosaur> (or far too many error messages…)
2026-03-04 01:51:27 +0100 <geekosaur> so, a warning message? 😛
2026-03-04 01:50:52 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-03-04 01:50:04 +0100tmu(~tmu@71.227.230.155) (Ping timeout: 265 seconds)
2026-03-04 01:49:56 +0100xff0x(~xff0x@ai084147.d.east.v6connect.net) (Ping timeout: 268 seconds)
2026-03-04 01:48:55 +0100hakutaku(~textual@user/hakutaku) (Quit: My MacBook has gone to sleep. ZZZzzz…)
2026-03-04 01:48:20 +0100 <chromoblob> oh: "once written, never read"
2026-03-04 01:48:13 +0100 <yin> AI intensifies
2026-03-04 01:47:09 +0100 <chromoblob> introducing a new memory type: writable and executable but not readable :p
2026-03-04 01:46:25 +0100 <chromoblob> write once, read never :)
2026-03-04 01:45:25 +0100 <yin> and parser readers
2026-03-04 01:44:43 +0100 <chromoblob> only torture for parser writers ;)
2026-03-04 01:44:29 +0100 <chromoblob> it's a pleasure
2026-03-04 01:44:25 +0100 <chromoblob> who said it's a torture?
2026-03-04 01:43:46 +0100 <geekosaur> but of we cared that much, we wouldn't thropw parsing torture tests such as Haskell and Perl at them 😛
2026-03-04 01:42:00 +0100nschoe(~nschoe@2a01:e0a:8e:a190:bcc4:c62f:8a83:eae8) nschoe
2026-03-04 01:41:51 +0100jtnuttall(~jeremy@user/jeremyn) (Ping timeout: 255 seconds)
2026-03-04 01:41:49 +0100 <chromoblob> i mean, parse and execute
2026-03-04 01:41:38 +0100fgarcia(~lei@user/fgarcia) fgarcia
2026-03-04 01:40:31 +0100merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds)
2026-03-04 01:38:57 +0100 <chromoblob> geekosaur: if we didn't care about computer reading programs, though, then it couldn't read them :ь