Logs on 2026-01-23 (liberachat/#haskell)
| 00:00:06 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 00:10:11 | <EvanR> | the answer the question, certain patterns of recursion can be encapulsated in combinators that magically have the same effect |
| 00:10:13 | <EvanR> | to |
| 00:10:31 | <EvanR> | e.g. map and fold |
| 00:10:42 | <EvanR> | they can't do everything, but the more such tools you have the more you can do |
| 00:10:58 | <EvanR> | but sometimes explicit recursion makes more sense |
| 00:11:28 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 00:16:39 | <probie> | how are imperative languages without goto supposed to be useful? |
| 00:16:39 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 00:25:31 | → | Zemy_ joins (~Zemy@2600:100c:b0ab:ed8b:c474:c7ff:febb:8ed3) |
| 00:27:14 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 00:28:13 | × | Zemy quits (~Zemy@72.178.108.235) (Ping timeout: 246 seconds) |
| 00:32:00 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 00:33:28 | × | trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 00:33:42 | → | trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au) |
| 00:43:02 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 00:48:16 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 00:51:32 | → | Zemy joins (~Zemy@syn-192-154-181-091.biz.spectrum.com) |
| 00:55:54 | × | Zemy_ quits (~Zemy@2600:100c:b0ab:ed8b:c474:c7ff:febb:8ed3) (Ping timeout: 260 seconds) |
| 00:56:13 | × | Square3 quits (~Square4@user/square) (Ping timeout: 246 seconds) |
| 00:58:49 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 01:01:45 | → | Zemy_ joins (~Zemy@2600:100c:b0ab:ed8b:9876:2aff:fe33:1a1d) |
| 01:03:37 | × | Zemy quits (~Zemy@syn-192-154-181-091.biz.spectrum.com) (Ping timeout: 264 seconds) |
| 01:03:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 01:05:55 | <systemfault> | for loops/while/etc... |
| 01:07:45 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 01:08:40 | <jackdk> | I think probie is asking rhetorically, to provide an analogous question/answer pair to chromoblob/EvanR. |
| 01:08:58 | <EvanR> | lol |
| 01:09:57 | <EvanR> | clearly systemfault is answering in such a way intentionally to highlight the irony |
| 01:10:53 | <EvanR> | this is what it's like in the tiplerian omega point simulation where everyone already knows everything anyone could talk about |
| 01:11:35 | <systemfault> | Yeah... that said, I don't know what a tiplerian omega point simulation is... |
| 01:13:14 | <geekosaur> | sounds to me like someone's been tippling on physics 🙂 |
| 01:14:37 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 01:15:37 | × | xff0x quits (~xff0x@2405:6580:b080:900:52f9:378c:6eea:47d5) (Ping timeout: 265 seconds) |
| 01:17:50 | × | Pozyomka_ quits (~pyon@user/pyon) (Ping timeout: 245 seconds) |
| 01:19:41 | → | Pozyomka joins (~pyon@user/pyon) |
| 01:19:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 01:21:54 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Ping timeout: 265 seconds) |
| 01:30:02 | → | Zemy joins (~Zemy@72.178.108.235) |
| 01:30:17 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 01:31:59 | × | Zemy_ quits (~Zemy@2600:100c:b0ab:ed8b:9876:2aff:fe33:1a1d) (Ping timeout: 250 seconds) |
| 01:35:26 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 01:39:37 | × | Square2 quits (~Square@user/square) (Ping timeout: 264 seconds) |
| 01:42:24 | × | Inline quits (~User@2001-4dd7-bc56-0-fdb7-c703-fc72-e0a.ipv6dyn.netcologne.de) (Ping timeout: 252 seconds) |
| 01:43:44 | → | omidmash3 joins (~omidmash@user/omidmash) |
| 01:45:34 | × | omidmash quits (~omidmash@user/omidmash) (Ping timeout: 246 seconds) |
| 01:45:34 | omidmash3 | is now known as omidmash |
| 01:46:04 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 01:50:36 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 01:54:36 | → | Inline joins (~User@2001-4dd7-bc56-0-bf4e-84aa-8c9c-590c.ipv6dyn.netcologne.de) |
| 02:01:29 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 02:08:07 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 02:10:07 | <Leary> | chromoblob: Write all your co/inductive co/data types in greatest/least-fixed-point form, and all your logic in folds. It's not even as bad as it sounds! |
| 02:11:43 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 02:13:51 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 02:19:31 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 02:24:25 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 02:33:01 | <jackdk> | Reminds me of Dhall |
| 02:35:18 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 02:40:12 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 02:41:30 | → | terrorjack joins (~terrorjac@2a01:4f8:c17:9d11::) |
| 02:41:32 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 244 seconds) |
| 02:43:36 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 02:47:59 | <Leary> | It should; Haskell sans recursion ~ System F ~ Dhall. |
| 02:51:54 | × | omidmash quits (~omidmash@user/omidmash) (Quit: The Lounge - https://thelounge.chat) |
| 02:52:25 | × | mange quits (~mange@user/mange) (Quit: Quittin' time!) |
| 02:53:09 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 02:53:09 | trickard_ | is now known as trickard |
| 02:55:29 | → | omidmash joins (~omidmash@user/omidmash) |
| 02:57:25 | × | haskellbridge quits (~hackager@96.28.224.214) (Remote host closed the connection) |
| 02:57:40 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 02:57:59 | → | haskellbridge joins (~hackager@96.28.224.214) |
| 02:57:59 | ChanServ | sets mode +v haskellbridge |
| 03:08:31 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 03:13:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 03:22:02 | → | notzmv joins (~umar@user/notzmv) |
| 03:23:03 | × | haskellbridge quits (~hackager@96.28.224.214) (Remote host closed the connection) |
| 03:24:18 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 03:26:58 | × | foul_owl quits (~kerry@94.156.149.99) (Ping timeout: 260 seconds) |
| 03:29:43 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 03:34:12 | → | haskellbridge joins (~hackager@96.28.224.214) |
| 03:34:12 | ChanServ | sets mode +v haskellbridge |
| 03:38:57 | Googulator26 | is now known as Googulator |
| 03:40:05 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 03:41:09 | → | foul_owl joins (~kerry@94.156.149.91) |
| 03:45:05 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 03:45:26 | <haskellbridge> | <Zemyla> You can even zip lists by folding over both of them. |
| 03:51:58 | × | rotcev quits (~rotcev@user/rotcev) (Quit: Client closed) |
| 03:53:28 | → | chenjf joins (~chenjf@68.64.178.54) |
| 03:55:05 | <monochrom> | Belated: My hot take: How are languages without call/cc or at least shift/reset supposed to be useful? >:) |
| 03:55:07 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 265 seconds) |
| 03:55:34 | × | chenjf quits (~chenjf@68.64.178.54) (Client Quit) |
| 03:55:54 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 03:58:30 | × | leah2 quits (~leah@vuxu.org) (Ping timeout: 265 seconds) |
| 04:00:19 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 04:04:31 | × | notzmv quits (~umar@user/notzmv) (Ping timeout: 264 seconds) |
| 04:11:16 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 04:16:13 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 04:16:35 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 245 seconds) |
| 04:17:51 | <probie> | Zemyla: You don't need to fold over both them, just one |
| 04:23:07 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 04:23:20 | <probie> | > let zip' = foldr (\x k ys -> case ys of { [] -> []; y:ys' -> (x,y):k ys' }) (const []) in zip' "hello" "world!" |
| 04:23:21 | <lambdabot> | [('h','w'),('e','o'),('l','r'),('l','l'),('o','d')] |
| 04:24:15 | × | sp1ff` quits (~user@2601:1c2:4701:900::32d4) (Read error: Connection reset by peer) |
| 04:24:52 | → | sp1ff` joins (~user@2601:1c2:4701:900::32d4) |
| 04:28:08 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 04:29:11 | <ncf> | well, case ys is a fold, just not a recursive one |
| 04:31:54 | × | trickard quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 04:32:05 | <probie> | It's a lesser fold. A crease? :p |
| 04:32:08 | → | trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au) |
| 04:32:22 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 04:33:16 | <ncf> | i will concede 'a ply' |
| 04:38:32 | × | sp1ff` quits (~user@2601:1c2:4701:900::32d4) (Read error: Connection reset by peer) |
| 04:38:54 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 04:39:13 | → | sp1ff` joins (~user@2601:1c2:4701:900::32d4) |
| 04:43:59 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 260 seconds) |
| 04:48:55 | × | dutchie quits (~dutchie@user/dutchie) (Ping timeout: 264 seconds) |
| 04:50:14 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 256 seconds) |
| 04:50:48 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 256 seconds) |
| 04:51:25 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 04:54:42 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 04:54:50 | <haskellbridge> | <Zemyla> @let newtype Z a b = Z { runZ :: a -> (Z a b -> b) -> b } |
| 04:55:20 | <haskellbridge> | <Zemyla> Apparently lambdabot doesn't like the bridge. |
| 04:58:31 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 05:00:29 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 05:01:49 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 265 seconds) |
| 05:10:50 | <probie> | Zemyla: try putting a blank line before what you want to feed to lambdabot |
| 05:12:44 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 05:15:11 | <chromoblob> | Leary: could you elaborate, maybe give an example? |
| 05:15:51 | <probie> | If you send "foo\nbar" it should come through as "<haskellbridge> <Zemyla> foo\n<haskellbridge> bar", so the second line should come through as a separate message, without your username in front and will be picked up by lambdabot or yahb2 |
| 05:16:33 | × | Googulator quits (~Googulato@2a01-036d-0106-030a-8d41-f550-2a4f-1a91.pool6.digikabel.hu) (Quit: Client closed) |
| 05:16:44 | → | Googulator joins (~Googulato@2a01-036d-0106-030a-8d41-f550-2a4f-1a91.pool6.digikabel.hu) |
| 05:17:25 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 05:18:03 | → | dutchie joins (~dutchie@user/dutchie) |
| 05:22:44 | → | lewisbrown joins (~user@user/lewisbrown) |
| 05:25:16 | → | leah2 joins (~leah@vuxu.org) |
| 05:28:33 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 05:33:25 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 05:36:43 | → | michalz joins (~michalz@185.246.207.203) |
| 05:44:22 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 05:45:15 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 05:48:56 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 05:49:46 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 05:57:25 | × | housemate quits (~housemate@202.7.248.67) (Quit: https://ineedsomeacidtocalmmedown.space/) |
| 05:58:54 | → | takuan joins (~takuan@d8D86B9E9.access.telenet.be) |
| 06:00:07 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 06:03:25 | → | housemate joins (~housemate@202.7.248.67) |
| 06:03:54 | × | Googulator quits (~Googulato@2a01-036d-0106-030a-8d41-f550-2a4f-1a91.pool6.digikabel.hu) (Quit: Client closed) |
| 06:04:06 | → | Googulator joins (~Googulato@2a01-036d-0106-030a-8d41-f550-2a4f-1a91.pool6.digikabel.hu) |
| 06:05:25 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 06:07:29 | → | weary-traveler joins (~user@user/user363627) |
| 06:14:00 | → | notzmv joins (~umar@user/notzmv) |
| 06:15:55 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 06:18:07 | × | jmcantrell quits (~weechat@user/jmcantrell) (Ping timeout: 240 seconds) |
| 06:20:35 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 06:22:59 | <Leary> | chromoblob: https://gist.github.com/LSLeary/0247b813ad063409d4d09eccc5b077e0 |
| 06:24:11 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 06:25:14 | trickard_ | is now known as trickard |
| 06:28:56 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 240 seconds) |
| 06:31:30 | <haskellbridge> | <Bowuigi> Related https://github.com/sellout/no-recursion |
| 06:39:55 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 06:46:34 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 06:47:43 | <probie> | recursion-schemes gives you general recursion anyway |
| 06:49:49 | × | trickard quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 06:50:02 | → | trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au) |
| 06:50:10 | <Leary> | "recursion schemes" /= "recursion-schemes" |
| 06:57:57 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 07:02:50 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 245 seconds) |
| 07:06:24 | × | tzh quits (~tzh@c-76-115-131-146.hsd1.or.comcast.net) (Quit: zzz) |
| 07:12:54 | × | trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 07:13:07 | → | trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au) |
| 07:13:44 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 07:18:32 | × | trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 07:18:39 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 250 seconds) |
| 07:21:45 | × | tomboy64 quits (~tomboy64@user/tomboy64) (Ping timeout: 252 seconds) |
| 07:23:24 | → | trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au) |
| 07:23:28 | <ncf> | if you're not allergic to general recursion you can do the exact same thing using just one data type and no impredicative encodings https://gist.github.com/ncfavier/d42d077745c73dfb2e2c58592b1cd7e1 |
| 07:24:04 | → | tomboy64 joins (~tomboy64@user/tomboy64) |
| 07:24:51 | <ncf> | (note that general recursion is used rather controlledly here, in `fold` and `unfold`, so you could make those abstract and pretend they are primitives) |
| 07:25:07 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 07:29:58 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 246 seconds) |
| 07:40:55 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 07:44:06 | → | danza joins (~danza@user/danza) |
| 07:45:54 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds) |
| 07:48:32 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 240 seconds) |
| 07:53:02 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Quit: Leaving...) |
| 07:56:21 | × | Googulator quits (~Googulato@2a01-036d-0106-030a-8d41-f550-2a4f-1a91.pool6.digikabel.hu) (Ping timeout: 272 seconds) |
| 07:56:42 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 07:56:46 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 08:01:27 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 08:03:40 | → | oskarw joins (~user@user/oskarw) |
| 08:06:01 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 246 seconds) |
| 08:08:04 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 08:08:39 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 08:10:49 | × | FANTOM quits (~fantom@87.75.185.177) (Read error: Connection reset by peer) |
| 08:13:20 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 244 seconds) |
| 08:21:24 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 08:24:26 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 08:31:13 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 264 seconds) |
| 08:35:27 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 08:40:57 | × | AlexZenon quits (~alzenon@94.233.241.51) (Ping timeout: 252 seconds) |
| 08:42:04 | <Leary> | ncf: That fails to encapsulate general recursion since it's easily recoverable in the form of `fix :: (a -> a) -> a`, though perhaps if we also disallowed bottoms that wouldn't be the case. |
| 08:42:25 | × | AlexNoo quits (~AlexNoo@94.233.241.51) (Ping timeout: 246 seconds) |
| 08:42:36 | × | Alex_delenda_est quits (~al_test@94.233.241.51) (Ping timeout: 252 seconds) |
| 08:43:43 | trickard_ | is now known as trickard |
| 08:50:04 | <gentauro> | jackdk: thx for links and info. It's a bit sad that `eXchange` lost all their IP when they went bankrupt and now the few surviving videos look like they were recorded with a toaster :'( |
| 08:50:34 | <jackdk> | Yeah it's such a shame. Though I don't think that particular talk ever had a good recording |
| 08:50:55 | <gentauro> | I actually tried to "re-spawn" the hole concept of `eXchange` again as they were bought by Trifork. I made slides and stuff and provided all the "nice" names |
| 08:51:16 | <gentauro> | then suddently, you see all those names at "GOTO Conferences" (yeah Trifork also own them) |
| 08:51:46 | <int-e> | I know it was a typo, but "hole concept" is pretty accurate (think "memory hole") |
| 08:51:48 | <gentauro> | never EVER trust `corpos`. It's just a matter of if, but when, they will screw you :( |
| 08:53:04 | × | haritz quits (~hrtz@user/haritz) (Quit: ZNC 1.8.2+deb3.1+deb12u1 - https://znc.in) |
| 08:53:08 | <gentauro> | the good thing? At least they bring "the names" to mainstream -> https://www.youtube.com/watch?v=lg0RYLlmjJM |
| 08:53:13 | <gentauro> | ;) |
| 08:53:54 | <gentauro> | and good old Kris -> https://www.youtube.com/watch?v=SOz66dcsuT8 |
| 08:54:54 | <gentauro> | Elm Evan -> https://www.youtube.com/watch?v=TklYhw0Kl58 (btw, does anybody know if that `lang` is `dead`?) |
| 09:01:16 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 252 seconds) |
| 09:02:18 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 09:02:56 | × | acidjnk quits (~acidjnk@p200300d6e7171963e9342c1b23054bda.dip0.t-ipconnect.de) (Ping timeout: 244 seconds) |
| 09:16:08 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 09:19:22 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 244 seconds) |
| 09:21:17 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 09:23:48 | × | housemate quits (~housemate@202.7.248.67) (Remote host closed the connection) |
| 09:24:40 | → | housemate joins (~housemate@202.7.248.67) |
| 09:25:19 | × | housemate quits (~housemate@202.7.248.67) (Remote host closed the connection) |
| 09:25:25 | → | Googulator joins (~Googulato@team.broadbit.hu) |
| 09:25:38 | → | chele joins (~chele@user/chele) |
| 09:26:31 | → | housemate joins (~housemate@202.7.248.67) |
| 09:26:58 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 09:27:17 | × | housemate quits (~housemate@202.7.248.67) (Max SendQ exceeded) |
| 09:27:18 | → | skum joins (~skum@user/skum) |
| 09:29:30 | → | housemate joins (~housemate@202.7.248.67) |
| 09:30:01 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 09:30:11 | × | housemate quits (~housemate@202.7.248.67) (Max SendQ exceeded) |
| 09:30:37 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 264 seconds) |
| 09:30:41 | → | housemate joins (~housemate@202.7.248.67) |
| 09:31:09 | × | housemate quits (~housemate@202.7.248.67) (Remote host closed the connection) |
| 09:31:38 | → | housemate joins (~housemate@202.7.248.67) |
| 09:31:43 | × | housemate quits (~housemate@202.7.248.67) (Remote host closed the connection) |
| 09:32:29 | → | xff0x joins (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) |
| 09:33:37 | <bwe> | How can I let wai / warp update an internal data cache regularly by querying some database (no, I don’t mean response cache)? |
| 09:33:41 | → | XZDX joins (~xzdx@2601:404:ce00:b795:214:51ff:fe83:9855) |
| 09:35:33 | × | XZDX quits (~xzdx@2601:404:ce00:b795:214:51ff:fe83:9855) (Changing host) |
| 09:35:33 | → | XZDX joins (~xzdx@user/XZDX) |
| 09:48:07 | × | Googulator quits (~Googulato@team.broadbit.hu) (Quit: Client closed) |
| 09:50:47 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 10:04:00 | × | fp quits (~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) (Ping timeout: 252 seconds) |
| 10:05:10 | <danza> | are you sure that is the right level of abstraction? Wai/warp sound too close to the server for a cache that has to query a database |
| 10:05:50 | × | xff0x quits (~xff0x@fsb6a9491c.tkyc517.ap.nuro.jp) (Ping timeout: 265 seconds) |
| 10:06:32 | → | __monty__ joins (~toonn@user/toonn) |
| 10:07:29 | <[exa]> | bwe: can you be more specific on "internal data cache"? (does wai have a cache?) |
| 10:12:56 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 240 seconds) |
| 10:13:49 | <danza> | data-based contents would be provided at application level, but it's tricky to cache because database contents can change |
| 10:14:20 | × | trickard quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 10:14:32 | → | trickard joins (~trickard@cpe-93-98-47-163.wireline.com.au) |
| 10:17:09 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 10:25:39 | → | Googulator joins (~Googulato@team.broadbit.hu) |
| 10:28:03 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Read error: Connection reset by peer) |
| 10:28:10 | → | merijn joins (~merijn@77.242.116.146) |
| 10:30:55 | × | hellwolf quits (~user@4cde-2438-8978-87b1-0f00-4d40-07d0-2001.sta.estpak.ee) (Ping timeout: 264 seconds) |
| 10:30:59 | → | Square2 joins (~Square@user/square) |
| 10:34:47 | <bwe> | [exa]: I currently load data when the web server starts. It hands over the data to hyperbole web framework in a Reader context through Effectful. What I want is that it loads it all 3 minutes for example without reloading the web server altogether. |
| 10:35:52 | → | Googulator23 joins (~Googulato@team.broadbit.hu) |
| 10:35:58 | <[exa]> | bwe: you can have a MVar in the Reader that points to data, and replace it every now and then from a completely independent thread? |
| 10:35:59 | <bwe> | danza: So, the internal data cache actually lies in the hyperbole framework. But I pull it only in on start of warp. |
| 10:36:34 | <[exa]> | (I'm not very sure how hyperbole works but if you use Reader, pushing in the MVar shouldn't be a big issue.) |
| 10:37:16 | <bwe> | [exa]: Well, if I get you right, that is similar to what I thought. "How can I update some thing in a different thread from another (that just sleeps between updates)?" |
| 10:38:43 | <bwe> | danza: I am quite tolerant for outdated database states within a range of up to 3 minutes (update time of my internal cache). |
| 10:39:00 | <[exa]> | bwe: yeah MVars are great for that, loading them doesn't cost anything and you can atomically flip to the new state |
| 10:39:45 | × | Googulator quits (~Googulato@team.broadbit.hu) (Ping timeout: 272 seconds) |
| 10:40:33 | <danza> | but they should have one MVar per query? Anyway yes, sounds like something better solved in hyperbole |
| 10:41:14 | → | hellwolf joins (~user@e7d0-28a4-0ea3-c496-0f00-4d40-07d0-2001.sta.estpak.ee) |
| 10:46:35 | → | fp joins (~Thunderbi@2001:708:20:1406::10c5) |
| 10:47:20 | <bwe> | ...and I thought data stored in Reader doesn't change (once loaded). |
| 10:49:11 | <bwe> | Then MVar is nothing but a (changeable) State across different threads, does that mean different binaries? How do they find them each other, then? |
| 10:50:48 | <__monty__> | Threads don't imply different binaries. They don't even imply different processes. Rather the reverse. |
| 10:54:04 | <mauke> | :t forkIO |
| 10:54:05 | <lambdabot> | error: [GHC-88464] Variable not in scope: forkIO |
| 10:54:18 | <[exa]> | bwe: yeah technically the "variable" reference doesn't change, but you're allowed to rewrite what's it pointing to |
| 10:57:02 | <bwe> | __monty__: So, when I start the web server, I need to fork from that the runner that updates the MVar. That would work while different binary doesn't, right? |
| 10:57:11 | × | trickard quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 10:57:20 | × | XZDX quits (~xzdx@user/XZDX) (Remote host closed the connection) |
| 10:57:25 | → | trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au) |
| 10:59:39 | × | thenightmail quits (~thenightm@user/thenightmail) (Ping timeout: 260 seconds) |
| 11:00:04 | → | thenightmail joins (~thenightm@user/thenightmail) |
| 11:00:20 | × | oskarw quits (~user@user/oskarw) (Remote host closed the connection) |
| 11:01:05 | → | lantti joins (~lantti@xcalibur.cc.tut.fi) |
| 11:01:43 | → | oskarw joins (~user@user/oskarw) |
| 11:04:01 | <__monty__> | I'm not sure. mauke seems to suggest using forkIO. |
| 11:04:48 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 11:06:19 | <mauke> | if we're just updating a data structure that someone else reads from and no other interaction, wouldn't an IORef suffice? |
| 11:07:39 | <mauke> | https://hackage-content.haskell.org/package/base-4.22.0.0/docs/Data-IORef.html#v:atomicModifyIORef |
| 11:08:38 | <__monty__> | Does an MVar have that much more overhead that the footgun factor is worth it? |
| 11:08:55 | <tomsmeding> | an MVar definitely has much more overhead than an IORef |
| 11:09:04 | <mauke> | footgun how? |
| 11:09:19 | <tomsmeding> | it's a lock with an explicit queue attached (a list of threads waiting to take the lock) for fairness |
| 11:09:33 | <tomsmeding> | atomicModifyIORef is little more than a single CPU instruction (compare-and-swap) |
| 11:09:49 | <tomsmeding> | whether this is important in the application depends on how often you do this, of course |
| 11:13:15 | <tomsmeding> | in return for the overhead, an MVar gives you 1. fairness (if you're blocking on the MVar and no one holds the MVar indefinitely, you're guaranteed to get it eventually), 2. the ability to do IO while holding the lock |
| 11:13:27 | → | housemate joins (~housemate@2405:6e00:2457:9d18:a3e8:cd50:91c3:2f91) |
| 11:15:59 | <tomsmeding> | also 3. an MVar can also function as a one-place channel instead of a lock |
| 11:16:25 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 11:18:55 | <danza> | well that sounds saner to me for the goal |
| 11:27:28 | × | Square2 quits (~Square@user/square) (Ping timeout: 256 seconds) |
| 11:28:06 | × | housemate quits (~housemate@2405:6e00:2457:9d18:a3e8:cd50:91c3:2f91) (Quit: https://ineedsomeacidtocalmmedown.space/) |
| 11:29:21 | <__monty__> | mauke: The footgun is thinking you'll be able to just add another IORef later and not run into trouble. |
| 11:30:26 | <mauke> | applies to MVar, too |
| 11:30:30 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 11:31:45 | <__monty__> | So the doc suggesting MVars instead is misleading? |
| 11:32:46 | <mauke> | well, it only talks about atomicity |
| 11:32:56 | <mauke> | with MVars you can deadlock instead |
| 11:33:06 | <int-e> | "Extending the atomicity to multiple IORefs is problematic, so it is recommended that if you need to do anything more complicated then using MVar instead is a good idea." |
| 11:33:19 | <int-e> | If that's what you mean I don't know how it's misleading. |
| 11:34:47 | × | Inline quits (~User@2001-4dd7-bc56-0-bf4e-84aa-8c9c-590c.ipv6dyn.netcologne.de) (Quit: KVIrc 5.2.6 Quasar http://www.kvirc.net/) |
| 11:34:48 | → | danz20169 joins (~danza@user/danza) |
| 11:35:37 | <__monty__> | Well, it suggests you can extend atomicity across multiple, no? So if you can't do that easily without deadlocking it's not a great suggestion. |
| 11:36:31 | <Axman6> | you just have to be careful about the order you access things |
| 11:36:36 | <int-e> | You can't atomically update two IORefs at the same time. |
| 11:36:43 | trickard_ | is now known as trickard |
| 11:36:44 | <Axman6> | IIRC MVar has a consistent Ord instance? |
| 11:37:06 | × | danza quits (~danza@user/danza) (Ping timeout: 256 seconds) |
| 11:37:25 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 255 seconds) |
| 11:37:42 | <Axman6> | IORefs with atomicModifyIORef are amazing, if you can store all your state in pure data structures that can always be changed without doing any other IO. if you can't guarantee those properties, other options are much safer |
| 11:37:47 | <int-e> | (But you can have a single IORef that stores a tuple or a record.) |
| 11:39:04 | <Axman6> | I've been reading a lot of the Cardano code recently, and they make a lot of use of STM, as well as pure data structures. |
| 11:39:05 | <mauke> | or a Map |
| 11:39:57 | <Axman6> | they can store an arbitrarily complicated record too, and aMIOref can be used to update as much or as little of that structure as you like |
| 11:40:19 | <mauke> | I had a server that would answer client queries from a central data structure (a Map stored in an IORef) |
| 11:40:41 | <mauke> | there was a writer thread that would occasionally update the structure by just overwriting the Map |
| 11:41:08 | <mauke> | worked great |
| 11:41:34 | <Axman6> | I have also done that - it needed to serve images of some live-ish data, and generating the images was pretty slow, so with each new piece of data it'd just make new PNGs and update the map in the IORef. Meant all the HTTP requests were instant |
| 11:43:10 | <danz20169> | seems a solution suited to server-side data vis |
| 11:44:39 | <danz20169> | did you use any library to encode PNGs as types? |
| 11:45:34 | <danz20169> | maybe just passed them as black boxes |
| 11:48:20 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 11:49:47 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Read error: Connection reset by peer) |
| 11:50:41 | × | Googulator23 quits (~Googulato@team.broadbit.hu) (Ping timeout: 272 seconds) |
| 11:51:27 | <tomsmeding> | __monty__: while yes, adding another IORef later means you can't update both in the same atomic transaction, I'm not sure what part of the API would lead one to assume that you can |
| 11:52:03 | <tomsmeding> | if anything, having to order locks to avoid deadlock is a more insidious risk that you may not see coming if you haven't studied concurrent programming |
| 11:52:41 | <__monty__> | You may be right. |
| 11:53:01 | <tomsmeding> | (for completeness: you have two locks, A and B, and two threads, 1 and 2. 1 locks A and then B, and 2 locks B and then A. If the two executions interleave, 1 has A locked and 2 has B locked and they both wait on the other, indefinitely) |
| 11:53:20 | → | merijn joins (~merijn@77.242.116.146) |
| 11:53:23 | <tomsmeding> | (if you only ever lock such locks in a particular global order, this problem cannot arise) |
| 11:53:26 | <int-e> | You can perhaps criticize the IORef docs for not mentioning STM, but the reason for that is probably historical, and you'll find out about STM when you read the MVar docs. |
| 11:56:14 | <tomsmeding> | and if you are worried about performance implications of using an MVar over an IORef, you should also be worried about STM, as it similar (?) overhead, and also has starvation issues if you have very long and also very short transactions that update the same TVars |
| 11:56:28 | <tomsmeding> | *as it has similar |
| 11:56:51 | → | fp1 joins (~Thunderbi@2001:708:150:10::9d7e) |
| 11:57:16 | <int-e> | Do we have any canonical STM horror story (along the lines of "it worked great until we ran it in production with 50 simultaneous threads and then it spent 90% of its time retrying STM transactions"?) |
| 11:57:22 | <tomsmeding> | concurrent programming: correct, fast, convenient; pick 2 |
| 11:57:27 | <ncf> | Leary: i didn't mean to encapsulate general recursion tbh, only to point out that the clarity of expressing things in terms of (co)algebras needn't come at the price of general recursion |
| 11:57:29 | × | fp quits (~Thunderbi@2001:708:20:1406::10c5) (Ping timeout: 265 seconds) |
| 11:57:29 | fp1 | is now known as fp |
| 11:57:54 | <tomsmeding> | int-e: I'm not aware of any, I'm an academic |
| 12:00:51 | <tomsmeding> | Axman6: MVar doesn't implement Ord, only Eq |
| 12:01:37 | → | Googulator23 joins (~Googulato@team.broadbit.hu) |
| 12:03:09 | <tomsmeding> | (you may be thinking of ForeignPtr, which does implement Ord) |
| 12:05:33 | × | comonad quits (~comonad@p200300d02722ae00dce4ce9451b59974.dip0.t-ipconnect.de) (Ping timeout: 260 seconds) |
| 12:10:54 | → | Googulator25 joins (~Googulato@team.broadbit.hu) |
| 12:10:54 | × | Googulator23 quits (~Googulato@team.broadbit.hu) (Quit: Client closed) |
| 12:17:59 | <merijn> | int-e: Almost surely |
| 12:18:10 | <merijn> | int-e: Bad STM design can easily cause that |
| 12:20:35 | <merijn> | tomsmeding: MVar doesn't have to ever lock and queue if you don't want to, though |
| 12:25:13 | <tomsmeding> | merijn: what do you mean? |
| 12:25:28 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 12:26:02 | <bwe> | Axman6, mauke: that's exactly what I want to do, I know when I've got new data and only then want to update the IORef / MVar. -- So if I only want to swap something out, I'd be fine with an IORef? |
| 12:26:18 | → | xff0x joins (~xff0x@2405:6580:b080:900:3b58:3b23:6c7:a174) |
| 12:26:37 | <tomsmeding> | bwe: if the type of atomicModifyIORef' (mind the ') is good enough for you, it's almost guaranteed to be the fastest option |
| 12:26:38 | <bwe> | tomsmeding: how would we categorize MVar, TVar, STM, IORef into two out of three of: correct, fast, convenient? |
| 12:27:31 | <tomsmeding> | bwe: it's more how you use them, although neither MVar nor TVar are particularly fast (STM is just the framework around TVar so not a separate thing) |
| 12:27:49 | <tomsmeding> | IORefs are plenty convenient if all you need is atomicModifyIORef', but they are rather limited otherwise |
| 12:28:28 | <tomsmeding> | TVar is convenient and correct across the board (programming with STM is great!), but depending on your application's behaviour it may not be very fast |
| 12:31:20 | <tomsmeding> | (you can get correct + fast + convenient if you never need to communicate between threads! Read-only shared data works very well ;p) |
| 12:31:31 | <bwe> | tomsmeding: I simply need to update a state from db. Effectively swapping the old data for the new data. I am not sure how can I tell right now whether the type of atomicModifyIORef' fits my use case, though. |
| 12:31:53 | <tomsmeding> | bwe: it kind of sounds like atomicModifyIORef' is good enough; if it isn't, come back |
| 12:36:14 | → | DetourNe- joins (~DetourNet@user/DetourNetworkUK) |
| 12:36:47 | × | DetourNetworkUK quits (~DetourNet@user/DetourNetworkUK) (Read error: Connection reset by peer) |
| 12:38:11 | <bwe> | tomsmeding: ok, thanks. |
| 12:38:31 | DetourNe- | is now known as DetourNetworkUK |
| 12:39:25 | × | fp quits (~Thunderbi@2001:708:150:10::9d7e) (Ping timeout: 244 seconds) |
| 12:39:37 | × | danz20169 quits (~danza@user/danza) (Quit: got to go) |
| 12:42:00 | → | fp joins (~Thunderbi@2001:708:150:10::9d7e) |
| 12:47:25 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 264 seconds) |
| 12:52:35 | × | CiaoSen quits (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) (Ping timeout: 265 seconds) |
| 12:53:51 | <merijn> | tomsmeding: readMVar is non blocking on full MVars |
| 12:54:20 | <merijn> | bwe: tbh, "not very fast" here still means "pretty goddamn fast" |
| 12:55:13 | <tomsmeding> | merijn: as I said: if you only ever need to read, yes, life is easy :p |
| 12:55:25 | <merijn> | If your update frequencies is measures in "once every few seconds" (or less frequent) the performance difference between any of the solutions is essentially irrelevant |
| 12:55:31 | <tomsmeding> | ^ |
| 12:55:43 | <merijn> | if it's sub-second then it *might* matter |
| 12:56:24 | <merijn> | once you're planning to update every N milliseconds, that's when I'd consider thinking about performance implications |
| 12:56:30 | <tomsmeding> | I recommended atomicModifyIORef' more because it does what it does well, and doesn't suggest it can do any more than it does :p |
| 13:00:41 | × | img quits (~img@user/img) (Quit: ZNC 1.10.1 - https://znc.in) |
| 13:01:55 | → | img joins (~img@user/img) |
| 13:07:35 | → | karenw joins (~karenw@user/karenw) |
| 13:10:39 | → | Googulator63 joins (~Googulato@team.broadbit.hu) |
| 13:14:17 | × | Googulator25 quits (~Googulato@team.broadbit.hu) (Ping timeout: 272 seconds) |
| 13:19:04 | × | bggd_ quits (~bgg@2a01:e0a:fd5:f510:5241:8daa:4da4:a780) (Ping timeout: 260 seconds) |
| 13:21:31 | <haskellbridge> | <Zemyla> So you need a newtype to fold over both lists. @let newtype Z a b = Z { runZ :: a -> (Z a b -> b) -> b } @let zipF :: [a] -> [b] -> [(a, b)]; zipF xs ys = foldr (\a ak bk -> runZ bk a ak) (const []) xs $ foldr (\b bk -> Z $ \a ak -> (a, b):ak bk) (Z $ _ _ -> []) ys |
| 13:21:46 | <haskellbridge> | <Zemyla> I used newlines, and it still didn't work. D: |
| 13:27:05 | × | trickard quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 13:27:19 | → | trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au) |
| 13:28:54 | → | qqq joins (~qqq@185.54.21.105) |
| 13:30:57 | → | Zemy_ joins (~Zemy@2600:100c:b0a7:500d:4426:a6ff:feb6:d198) |
| 13:30:57 | × | Zemy quits (~Zemy@72.178.108.235) (Read error: Connection reset by peer) |
| 13:31:54 | → | Zemy joins (~Zemy@72.178.108.235) |
| 13:35:36 | × | Zemy_ quits (~Zemy@2600:100c:b0a7:500d:4426:a6ff:feb6:d198) (Ping timeout: 265 seconds) |
| 13:37:46 | <haskellbridge> | <geekosaur> . |
| 13:37:46 | <haskellbridge> | @botsnack |
| 13:38:11 | <haskellbridge> | <geekosaur> got the newline, inserted a space as well ☹️ |
| 13:38:14 | × | wennefer0 quits (~wennefer0@user/wennefer0) (Read error: Connection reset by peer) |
| 13:38:49 | <geekosaur> | also you used too many lines, it would have been pastebinned |
| 13:38:57 | <geekosaur> | (if the newlines had gone through) |
| 13:40:48 | × | trickard_ quits (~trickard@cpe-93-98-47-163.wireline.com.au) (Read error: Connection reset by peer) |
| 13:41:01 | → | trickard_ joins (~trickard@cpe-93-98-47-163.wireline.com.au) |
| 13:41:44 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 240 seconds) |
| 13:44:08 | → | comonad joins (~comonad@p200300d02722ae00dce4ce9451b59974.dip0.t-ipconnect.de) |
| 13:51:20 | <haskellbridge> | <Zemyla> But what this does is fold the lists into a pair of coroutines which interleave. |
| 13:56:04 | → | Zemy_ joins (~Zemy@2600:100c:b0a7:500d:6465:32ff:febf:6476) |
| 13:58:18 | × | Zemy quits (~Zemy@72.178.108.235) (Ping timeout: 252 seconds) |
| 14:02:25 | × | fp quits (~Thunderbi@2001:708:150:10::9d7e) (Ping timeout: 245 seconds) |
| 14:03:11 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 14:04:22 | → | fp joins (~Thunderbi@2001:708:20:1406::1370) |
| 14:09:24 | → | Zemy joins (~Zemy@mobile-107-80-206-40.mycingular.net) |
| 14:12:09 | × | Zemy_ quits (~Zemy@2600:100c:b0a7:500d:6465:32ff:febf:6476) (Ping timeout: 260 seconds) |
| 14:12:25 | → | Zemy_ joins (~Zemy@mobile-107-80-206-40.mycingular.net) |
| 14:15:57 | × | Zemy quits (~Zemy@mobile-107-80-206-40.mycingular.net) (Ping timeout: 250 seconds) |
| 14:18:27 | → | Zemy joins (~Zemy@mobile-107-80-206-40.mycingular.net) |
| 14:21:09 | × | Zemy_ quits (~Zemy@mobile-107-80-206-40.mycingular.net) (Ping timeout: 250 seconds) |
| 14:22:29 | → | Zemy_ joins (~Zemy@mobile-107-80-206-40.mycingular.net) |
| 14:22:37 | → | Core6390 joins (~Zemy@2600:100c:b0a7:500d:444d:5bff:fe79:c99d) |
| 14:23:17 | → | Core8830 joins (~Zemy@12.50.228.210) |
| 14:25:03 | × | Zemy quits (~Zemy@mobile-107-80-206-40.mycingular.net) (Ping timeout: 250 seconds) |
| 14:26:09 | × | ZLima12 quits (~zlima12@user/meow/ZLima12) (Ping timeout: 260 seconds) |
| 14:26:49 | × | Core6390 quits (~Zemy@2600:100c:b0a7:500d:444d:5bff:fe79:c99d) (Ping timeout: 246 seconds) |
| 14:26:49 | × | Zemy_ quits (~Zemy@mobile-107-80-206-40.mycingular.net) (Ping timeout: 246 seconds) |
| 14:28:48 | → | ZLima12 joins (~zlima12@user/meow/ZLima12) |
| 14:32:13 | × | Core8830 quits (~Zemy@12.50.228.210) (Read error: Connection reset by peer) |
| 14:32:23 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:9c2b:5aff:fe6b:6dd6) |
| 14:32:52 | → | Zemy_ joins (~Zemy@syn-192-198-252-043.biz.spectrum.com) |
| 14:34:51 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:9c2b:5aff:fe6b:6dd6) (Read error: Connection reset by peer) |
| 14:35:02 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:9051:50ff:fef4:1dd3) |
| 14:36:35 | × | Zemy_ quits (~Zemy@syn-192-198-252-043.biz.spectrum.com) (Read error: Connection reset by peer) |
| 14:37:01 | → | Zemy_ joins (~Zemy@syn-192-198-252-043.biz.spectrum.com) |
| 14:39:33 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:9051:50ff:fef4:1dd3) (Ping timeout: 252 seconds) |
| 14:40:16 | × | Zemy_ quits (~Zemy@syn-192-198-252-043.biz.spectrum.com) (Read error: Connection reset by peer) |
| 14:40:22 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:c49:b7ff:fe30:b590) |
| 14:40:52 | → | Zemy_ joins (~Zemy@12.50.228.210) |
| 14:41:43 | × | karenw quits (~karenw@user/karenw) (Quit: Deep into that darkness peering...) |
| 14:43:51 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:c49:b7ff:fe30:b590) (Read error: Connection reset by peer) |
| 14:44:24 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:e02b:53ff:fe18:58a7) |
| 14:44:24 | × | Zemy_ quits (~Zemy@12.50.228.210) (Read error: Connection reset by peer) |
| 14:44:43 | × | fp quits (~Thunderbi@2001:708:20:1406::1370) (Ping timeout: 264 seconds) |
| 14:44:47 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 14:44:59 | → | Zemy_ joins (~Zemy@12.50.228.210) |
| 14:45:13 | × | nek0 quits (~nek0@user/nek0) (Quit: The Lounge - https://thelounge.chat) |
| 14:46:19 | → | Core7076 joins (~Zemy@mobile-107-80-206-16.mycingular.net) |
| 14:48:54 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:e02b:53ff:fe18:58a7) (Ping timeout: 260 seconds) |
| 14:49:33 | × | Zemy_ quits (~Zemy@12.50.228.210) (Ping timeout: 265 seconds) |
| 14:51:05 | → | nek0 joins (~nek0@user/nek0) |
| 14:55:57 | → | st_aldini joins (~Thunderbi@136.48.46.187) |
| 14:56:25 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:a4b2:14ff:fe15:3e1e) |
| 14:56:39 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
| 14:57:47 | → | danza joins (~danza@user/danza) |
| 15:00:40 | × | Core7076 quits (~Zemy@mobile-107-80-206-16.mycingular.net) (Ping timeout: 265 seconds) |
| 15:04:40 | → | Zemy_ joins (~Zemy@72.178.108.235) |
| 15:04:43 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 15:04:56 | × | gmg quits (~user@user/gehmehgeh) (Remote host closed the connection) |
| 15:05:40 | → | gmg joins (~user@user/gehmehgeh) |
| 15:08:09 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:a4b2:14ff:fe15:3e1e) (Ping timeout: 260 seconds) |
| 15:17:29 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:40a4:72ff:fef0:aeb0) |
| 15:17:43 | × | Zemy_ quits (~Zemy@72.178.108.235) (Read error: Connection reset by peer) |
| 15:18:08 | Googulator63 | is now known as Googulator |
| 15:18:23 | → | Zemy_ joins (~Zemy@72.178.108.235) |
| 15:21:46 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:40a4:72ff:fef0:aeb0) (Ping timeout: 246 seconds) |
| 15:25:15 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 15:28:06 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 15:35:27 | → | danz33286 joins (~danza@user/danza) |
| 15:35:58 | → | absence joins (torgeihe@hildring.pvv.ntnu.no) |
| 15:37:44 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:1c6f:88ff:fed8:ebd3) |
| 15:37:45 | × | Zemy_ quits (~Zemy@72.178.108.235) (Read error: Connection reset by peer) |
| 15:37:54 | × | danza quits (~danza@user/danza) (Ping timeout: 260 seconds) |
| 15:38:19 | → | Zemy_ joins (~Zemy@72.178.108.235) |
| 15:42:04 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:1c6f:88ff:fed8:ebd3) (Ping timeout: 246 seconds) |
| 15:46:48 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Ping timeout: 252 seconds) |
| 15:47:37 | → | sord937 joins (~sord937@gateway/tor-sasl/sord937) |
| 15:53:34 | → | AndreiDuma joins (~AndreiDum@user/AndreiDuma) |
| 15:54:37 | → | AndreiDuma_ joins (~AndreiDum@user/AndreiDuma) |
| 15:55:36 | ← | AndreiDuma_ parts (~AndreiDum@user/AndreiDuma) () |
| 15:56:28 | ← | AndreiDuma parts (~AndreiDum@user/AndreiDuma) () |
| 15:58:54 | × | weary-traveler quits (~user@user/user363627) (Remote host closed the connection) |
| 15:59:56 | <mauke> | bwe: you might not even need the "modify" part. atomicWriteIORef is also an option, then |
| 16:02:15 | <mauke> | for the "modify" version, you supply a function of type `a -> (a, b)` where the argument is the old value stored in the IORef, the first component of the result is the new value to be stored in the IORef, and the second component of the result is the value to return from the whole operation |
| 16:03:59 | <mauke> | so if you can compute the new value without access to the old value, you can ignore the argument: atomicModifyIORef' myref (\_ -> (newvalue, ())) |
| 16:04:33 | <mauke> | which is roughly equivalent to atomicWriteIORef myref newvalue (modulo strictness) |
| 16:05:07 | → | Digitteknohippie joins (~user@user/digit) |
| 16:05:21 | × | Digit quits (~user@user/digit) (Ping timeout: 252 seconds) |
| 16:20:02 | × | st_aldini quits (~Thunderbi@136.48.46.187) (Quit: st_aldini) |
| 16:29:51 | <chromoblob> | Leary: i like your indentation, but code is hard to undersrand |
| 16:31:15 | × | Googulator quits (~Googulato@team.broadbit.hu) (Ping timeout: 272 seconds) |
| 16:32:43 | × | Zemy_ quits (~Zemy@72.178.108.235) (Remote host closed the connection) |
| 16:32:57 | → | Zemy joins (~Zemy@72.178.108.235) |
| 16:33:45 | <geekosaur> | that's normal 🙂 |
| 16:39:08 | × | qqq quits (~qqq@185.54.21.105) (Quit: Lost terminal) |
| 16:47:15 | × | ljdarj quits (~Thunderbi@user/ljdarj) (Quit: ljdarj) |
| 16:47:36 | → | ljdarj joins (~Thunderbi@user/ljdarj) |
| 16:48:01 | × | merijn quits (~merijn@77.242.116.146) (Ping timeout: 264 seconds) |
| 16:50:11 | → | Psychotic1 joins (~Psychotic@2600:1007:b0a4:acff:921e:44c6:4ad9:edda) |
| 16:54:35 | × | skum quits (~skum@user/skum) (Quit: WeeChat 4.8.1) |
| 17:00:08 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Quit: My MacBook has gone to sleep. ZZZzzz…) |
| 17:00:25 | → | merijn joins (~merijn@host-cl.cgnat-g.v4.dfn.nl) |
| 17:01:35 | → | Zemy_ joins (~Zemy@2600:100c:b0a7:500d:ace7:8eff:fe84:f696) |
| 17:03:57 | × | Zemy quits (~Zemy@72.178.108.235) (Ping timeout: 244 seconds) |
| 17:04:12 | × | sord937 quits (~sord937@gateway/tor-sasl/sord937) (Quit: sord937) |
| 17:07:00 | Digitteknohippie | is now known as Digit |
| 17:07:50 | → | Zemy joins (~Zemy@mobile-107-80-206-40.mycingular.net) |
| 17:09:06 | → | comerijn joins (~merijn@77.242.116.146) |
| 17:09:34 | × | merijn quits (~merijn@host-cl.cgnat-g.v4.dfn.nl) (Read error: Connection reset by peer) |
| 17:09:55 | × | Zemy_ quits (~Zemy@2600:100c:b0a7:500d:ace7:8eff:fe84:f696) (Ping timeout: 246 seconds) |
| 17:10:10 | <gentauro> | oskarw: how did the interview go? |
| 17:10:12 | <gentauro> | :) |
| 17:17:00 | → | Zemy_ joins (~Zemy@2600:100c:b0a7:500d:2c0a:a9ff:fe19:34cb) |
| 17:17:06 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 17:17:58 | → | jmcantrell_ joins (~weechat@user/jmcantrell) |
| 17:20:25 | × | Zemy quits (~Zemy@mobile-107-80-206-40.mycingular.net) (Ping timeout: 246 seconds) |
| 17:20:46 | × | comerijn quits (~merijn@77.242.116.146) (Ping timeout: 246 seconds) |
| 17:21:44 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Ping timeout: 260 seconds) |
| 17:30:01 | → | Zemy joins (~Zemy@mobile-107-80-206-24.mycingular.net) |
| 17:32:51 | <oskarw> | gentauro: Hi, unfortunately after getting my CV to HR today I get email that they will not proceed with my application and I didn't have interview |
| 17:32:53 | <oskarw> | :( |
| 17:33:23 | <oskarw> | I will have more time with finishing SICP I guess |
| 17:33:24 | × | Zemy_ quits (~Zemy@2600:100c:b0a7:500d:2c0a:a9ff:fe19:34cb) (Ping timeout: 260 seconds) |
| 17:34:16 | × | Zemy quits (~Zemy@mobile-107-80-206-24.mycingular.net) (Read error: Connection reset by peer) |
| 17:34:28 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:1407:a3ff:fee3:4a48) |
| 17:34:31 | trickard_ | is now known as trickard |
| 17:35:00 | → | Zemy_ joins (~Zemy@mobile-107-80-206-24.mycingular.net) |
| 17:35:11 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 17:35:52 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:1407:a3ff:fee3:4a48) (Read error: Connection reset by peer) |
| 17:36:01 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:387b:fdff:feb0:4a62) |
| 17:38:55 | × | Zemy_ quits (~Zemy@mobile-107-80-206-24.mycingular.net) (Ping timeout: 240 seconds) |
| 17:39:37 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Ping timeout: 250 seconds) |
| 17:48:53 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
| 17:53:06 | → | housemate joins (~housemate@202.7.248.67) |
| 17:53:51 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 17:53:52 | → | Square2 joins (~Square@user/square) |
| 17:54:42 | → | tzh joins (~tzh@c-76-115-131-146.hsd1.or.comcast.net) |
| 18:04:54 | <bwe> | mauke: that way I could actually union the delta from the new entries of the new state of the db with the old. |
| 18:06:07 | <bwe> | tomsmeding, mauke: is there some minimum working example with IORef (and forkIO) that you can recommend? |
| 18:06:34 | <bwe> | Axman6, mauke: is any code of your examples you mentioned online by any chance? |
| 18:07:52 | → | wennefer0 joins (~wennefer0@user/wennefer0) |
| 18:14:53 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 18:16:52 | → | Zemy_ joins (~Zemy@mobile-107-80-206-24.mycingular.net) |
| 18:17:46 | → | Core9513 joins (~Zemy@mobile-107-80-206-24.mycingular.net) |
| 18:19:52 | → | Core1640 joins (~Zemy@mobile-107-80-206-24.mycingular.net) |
| 18:20:16 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:387b:fdff:feb0:4a62) (Ping timeout: 246 seconds) |
| 18:20:55 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:1cb1:d0ff:fe86:a54c) |
| 18:21:14 | × | Zemy_ quits (~Zemy@mobile-107-80-206-24.mycingular.net) (Ping timeout: 260 seconds) |
| 18:21:18 | × | Core9513 quits (~Zemy@mobile-107-80-206-24.mycingular.net) (Read error: Connection reset by peer) |
| 18:21:29 | → | Zemy_ joins (~Zemy@mobile-107-80-206-24.mycingular.net) |
| 18:22:42 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:1cb1:d0ff:fe86:a54c) (Read error: Connection reset by peer) |
| 18:22:50 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:1855:c9ff:fec3:4df3) |
| 18:23:00 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Ping timeout: 244 seconds) |
| 18:24:09 | × | Core1640 quits (~Zemy@mobile-107-80-206-24.mycingular.net) (Ping timeout: 260 seconds) |
| 18:25:54 | × | Zemy_ quits (~Zemy@mobile-107-80-206-24.mycingular.net) (Ping timeout: 260 seconds) |
| 18:27:40 | <dolio> | Does anyone here use the inspection-testing library? |
| 18:28:23 | × | divlamir quits (~divlamir@user/divlamir) (Read error: Connection reset by peer) |
| 18:28:43 | → | divlamir joins (~divlamir@user/divlamir) |
| 18:30:40 | → | qqq joins (~qqq@185.54.21.105) |
| 18:36:41 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 18:41:10 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Ping timeout: 245 seconds) |
| 18:45:55 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 18:48:18 | × | housemate quits (~housemate@202.7.248.67) (Quit: https://ineedsomeacidtocalmmedown.space/) |
| 18:48:52 | → | Zemy_ joins (~Zemy@mobile-107-80-206-40.mycingular.net) |
| 18:49:39 | × | wennefer0 quits (~wennefer0@user/wennefer0) (Read error: Connection reset by peer) |
| 18:50:43 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Ping timeout: 264 seconds) |
| 18:50:50 | → | housemate joins (~housemate@202.7.248.67) |
| 18:50:59 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:1855:c9ff:fec3:4df3) (Ping timeout: 260 seconds) |
| 18:53:59 | → | fp joins (~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) |
| 18:55:30 | × | chele quits (~chele@user/chele) (Remote host closed the connection) |
| 19:04:20 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 19:06:21 | <mauke> | bwe: https://paste.tomsmeding.com/7nIkll4c |
| 19:08:53 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Ping timeout: 250 seconds) |
| 19:10:32 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 19:11:46 | → | Tuplanolla joins (~Tuplanoll@85-156-32-207.elisa-laajakaista.fi) |
| 19:14:24 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 19:17:39 | → | Zemy joins (~Zemy@2600:100c:b0a7:500d:945c:5ff:fe60:ddeb) |
| 19:20:07 | × | Zemy_ quits (~Zemy@mobile-107-80-206-40.mycingular.net) (Ping timeout: 264 seconds) |
| 19:22:09 | → | Zemy_ joins (~Zemy@72.178.108.235) |
| 19:24:36 | × | Zemy quits (~Zemy@2600:100c:b0a7:500d:945c:5ff:fe60:ddeb) (Ping timeout: 256 seconds) |
| 19:30:05 | <gentauro> | oskarw: sad to hear :( |
| 19:34:51 | × | wootehfoot quits (~wootehfoo@user/wootehfoot) (Read error: Connection reset by peer) |
| 19:35:07 | → | danza joins (~danza@user/danza) |
| 19:37:22 | × | danz33286 quits (~danza@user/danza) (Read error: Connection reset by peer) |
| 19:38:22 | → | oskarw` joins (~user@176.106.33.171) |
| 19:39:48 | → | Lord_of_Life_ joins (~Lord@user/lord-of-life/x-2819915) |
| 19:40:13 | × | oskarw quits (~user@user/oskarw) (Read error: Connection reset by peer) |
| 19:40:49 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 264 seconds) |
| 19:42:33 | Lord_of_Life_ | is now known as Lord_of_Life |
| 19:42:54 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 260 seconds) |
| 19:47:44 | × | qqq quits (~qqq@185.54.21.105) (Quit: Lost terminal) |
| 19:56:14 | → | target_i joins (~target_i@user/target-i/x-6023099) |
| 20:01:08 | <bwe> | mauke: Perfect! Thanks. |
| 20:15:36 | × | hakutaku quits (~textual@chen.yukari.eu.org) (Ping timeout: 256 seconds) |
| 20:16:43 | × | ringo_ quits (~ringo@157.230.117.128) (Ping timeout: 260 seconds) |
| 20:21:33 | → | ringo_ joins (~ringo@157.230.117.128) |
| 20:22:09 | → | hakutaku joins (~textual@chen.yukari.eu.org) |
| 20:22:52 | × | Square2 quits (~Square@user/square) (Ping timeout: 244 seconds) |
| 20:36:35 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 20:36:38 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 20:38:44 | → | pavonia joins (~user@user/siracusa) |
| 20:39:55 | × | fp quits (~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) (Ping timeout: 246 seconds) |
| 20:44:35 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 20:45:50 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 20:47:35 | → | fp joins (~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) |
| 20:47:47 | → | humasect joins (~humasect@dyn-192-249-132-90.nexicom.net) |
| 20:55:09 | <oskarw`> | gentauro: I just hope other haskeller get this job |
| 20:55:50 | <davean> | What job is this? |
| 20:55:52 | <gentauro> | oskarw`: hopefully |
| 20:56:05 | <gentauro> | it was Standard Charterd right? |
| 20:56:07 | <oskarw`> | Yes |
| 20:56:42 | <oskarw`> | https://jobs.standardchartered.com/job/Quantitative-Developer(Poland%2C-India)/43718-en_GB/?&feedid=363857 |
| 20:56:44 | <gentauro> | we can only hope they don't do a Jane Street, which is "silently" moving from OCaml to Python :'( |
| 20:56:56 | <oskarw`> | Why I have ` in nickname? |
| 20:57:17 | <gentauro> | oskarw`: is your `backup` nickname |
| 20:57:34 | ← | oskarw` parts (~user@176.106.33.171) (ERC 5.6.1 (IRC client for GNU Emacs 30.2)) |
| 20:57:41 | → | oskarw` joins (~user@176.106.33.171) |
| 20:57:52 | <oskarw`> | Why do I have backup nickname? |
| 20:58:01 | <gentauro> | you should just re-login again to libera with your real nickname |
| 20:58:07 | <oskarw`> | Ok |
| 20:58:21 | × | oskarw` quits (~user@176.106.33.171) (Remote host closed the connection) |
| 20:58:28 | → | oskarw joins (~user@user/oskarw) |
| 20:58:38 | <oskarw> | Here I am |
| 20:59:01 | <gentauro> | oskarw: nice, no more tick ;) |
| 20:59:14 | <oskarw> | Yes ^^ |
| 20:59:31 | → | karenw joins (~karenw@user/karenw) |
| 21:01:36 | <oskarw> | What is general consensus about lisp in this channel? |
| 21:02:04 | <oskarw> | Personally, I prefer lisp syntax to haskell, but I also love haskell typing |
| 21:03:58 | <gentauro> | oskarw: I would say, way to many parenthesis. However, I'm an `emacs` user since 2005 ish, so, I'm kind of used to it |
| 21:06:12 | <oskarw> | gentauro: I have also been using Emacs, but only for 2 years. |
| 21:06:19 | → | skum joins (~skum@user/skum) |
| 21:06:53 | × | machinedgod quits (~machinedg@d75-159-126-101.abhsia.telus.net) (Ping timeout: 260 seconds) |
| 21:07:08 | <oskarw> | I stared using emacs because I had course about agda, and agda manual recommended Emacs. |
| 21:11:11 | × | danza quits (~danza@user/danza) (Read error: Connection reset by peer) |
| 21:13:43 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 21:15:07 | → | peterbecich joins (~Thunderbi@71.84.33.135) |
| 21:15:50 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: alsoknownas.renjuan.org ( juan@acm.org )) |
| 21:25:12 | <monochrom> | I prefer both Haskell syntax and types. |
| 21:26:24 | × | michalz quits (~michalz@185.246.207.203) (Remote host closed the connection) |
| 21:28:41 | × | target_i quits (~target_i@user/target-i/x-6023099) (Quit: leaving) |
| 21:28:52 | <EvanR> | a consensus about lisp sounds ominous AF |
| 21:28:54 | <monochrom> | Someone wrote a "Liskell" for Lisp syntax but Haskell semantics. :) |
| 21:29:08 | → | haritz joins (~hrtz@140.228.70.141) |
| 21:29:08 | × | haritz quits (~hrtz@140.228.70.141) (Changing host) |
| 21:29:08 | → | haritz joins (~hrtz@user/haritz) |
| 21:31:29 | <EvanR> | I'm fascinated by the one or two APLs implemented in haskell |
| 21:31:52 | <EvanR> | because of how much it can be decomplected |
| 21:32:14 | <EvanR> | (not that they ended up optimized in any way) |
| 21:36:19 | jmcantrell_ | is now known as jmcantrell |
| 21:41:57 | <haskellbridge> | <sm> did you see that APL video I linked EvanR ? |
| 21:42:12 | <EvanR> | I'm not sure |
| 21:43:59 | × | humasect quits (~humasect@dyn-192-249-132-90.nexicom.net) (Remote host closed the connection) |
| 21:46:03 | <haskellbridge> | <sm> ah, it was in the matrix Haskell room. "random: this talk on APL teaching and style (https://youtu.be/9xCJ3BCIudI) was really interesting. Contrasts (and similarities) with Haskell came up a few times." |
| 21:54:54 | → | acidjnk joins (~acidjnk@p200300d6e71719732cd814db2eedd90f.dip0.t-ipconnect.de) |
| 21:55:13 | × | takuan quits (~takuan@d8D86B9E9.access.telenet.be) (Ping timeout: 264 seconds) |
| 22:01:35 | <gentauro> | oh Dialog, Swedish company that was purchased by SimCorp iirc |
| 22:01:54 | <gentauro> | I guess now SimCorp "owns" APL |
| 22:01:55 | <gentauro> | :( |
| 22:12:12 | → | Googulator joins (~Googulato@2a01-036d-0106-030a-3891-da7f-f3f3-f997.pool6.digikabel.hu) |
| 22:14:49 | × | Psychotic1 quits (~Psychotic@2600:1007:b0a4:acff:921e:44c6:4ad9:edda) (Quit: Leaving) |
| 22:15:14 | → | Psychotic1 joins (~Psychotic@2600:1007:b0a4:acff:921e:44c6:4ad9:edda) |
| 22:16:09 | × | oskarw quits (~user@user/oskarw) (Remote host closed the connection) |
| 22:25:21 | × | Psychotic1 quits (~Psychotic@2600:1007:b0a4:acff:921e:44c6:4ad9:edda) (Remote host closed the connection) |
| 22:40:01 | <haskellbridge> | <Liamzee> is it better or worse than for is a function in Haskell, vs being a macro in Lisp or syntax in a traditional language? |
| 22:40:38 | <geekosaur> | does it have to be one or the other? |
| 22:40:48 | × | vanishingideal quits (~vanishing@user/vanishingideal) (Ping timeout: 252 seconds) |
| 22:41:15 | → | Gravifer joins (~Gravifer@user/Gravifer) |
| 22:41:26 | <haskellbridge> | <Liamzee> well, i was wondering if for/for_ being functions in Haskell were advantages, HOF zoo has the issue that you'd actually need to know what the HOFs used are |
| 22:41:38 | <geekosaur> | Haskell's laziness lets you define some things that must be built-in control structures in other languages as functions. But the same can be said of Tcl and Ruby, in their own ways |
| 22:42:03 | × | Gravifer quits (~Gravifer@user/Gravifer) (Client Quit) |
| 22:42:15 | <haskellbridge> | <Liamzee> i mean any language with strong macros can define custom control structures |
| 22:42:15 | × | peterbecich quits (~Thunderbi@71.84.33.135) (Ping timeout: 265 seconds) |
| 22:42:23 | → | Gravifer joins (~Gravifer@user/Gravifer) |
| 22:42:31 | <haskellbridge> | <Liamzee> well, runtime macros |
| 22:43:09 | <geekosaur> | what I was getting at is that I consider them just different mechanisms. each may have advantages in some situations and disadvantages in others |
| 22:43:55 | <monochrom> | Haskell does not have a good macro story, so lazy function is usually better in Haskell. (Try implementing "for" as a TH macro, then try using it.) |
| 22:44:29 | <monochrom> | Conversely, Lisp doesn't have a good laziness story, so macro is better! |
| 22:45:02 | <monochrom> | And like geekosaur said, there is also a symmetric difference. |
| 22:46:24 | <haskellbridge> | <Liamzee> i guess macros vs functions is more of a smaller difference, macros tend to be untyped, functions tend to be typed |
| 22:46:35 | <monochrom> | What I don't like about Lisp/Scheme macros is that if you write so much as "(f x)" then I have no idea what's its evaluation order because I can't remember whether f is a function or a macro. |
| 22:46:38 | <haskellbridge> | <Liamzee> the real question is whether hof zoo is a key advantage |
| 22:47:04 | <monochrom> | (Sure, I can look up the docs. Now add the empirical fact that programmers don't write docs.) |
| 22:47:30 | <geekosaur> | functions aren't typed in scheme, amnd as monochrom says, there's no way to tell just from looking at code using it whether it's even a function |
| 22:47:51 | <haskellbridge> | <Liamzee> i love my traverse abuse, turning control flow into data is fun |
| 22:47:54 | → | vanishingideal joins (~vanishing@user/vanishingideal) |
| 22:48:19 | <geekosaur> | and macros can be typed (see typed TH, granting that TH is not very usable as macro systems go) |
| 22:49:43 | <haskellbridge> | <Liamzee> but i guess the real point is that there's no real advantage to let (@) = (,) in traverse (uncurry when) [ cond @ action...] |
| 22:54:05 | × | fp quits (~Thunderbi@2001-14ba-6e24-3000--198.rev.dnainternet.fi) (Ping timeout: 245 seconds) |
| 23:00:41 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 23:05:49 | × | Gravifer quits (~Gravifer@user/Gravifer) (Ping timeout: 272 seconds) |
| 23:08:14 | → | fp joins (~Thunderbi@89-27-10-140.bb.dnainternet.fi) |
| 23:10:34 | → | Googulator63 joins (~Googulato@2a01-036d-0106-030a-3891-da7f-f3f3-f997.pool6.digikabel.hu) |
| 23:10:34 | × | Googulator quits (~Googulato@2a01-036d-0106-030a-3891-da7f-f3f3-f997.pool6.digikabel.hu) (Quit: Client closed) |
| 23:14:28 | × | mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (Quit: .) |
| 23:15:59 | → | mrmonday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es) |
| 23:30:59 | → | tydes joins (~tydes@user/ttydes) |
| 23:31:39 | × | timide_ quits (~timide@user/timide) (Quit: WeeChat 4.7.2) |
| 23:31:43 | × | fp quits (~Thunderbi@89-27-10-140.bb.dnainternet.fi) (Ping timeout: 240 seconds) |
| 23:42:55 | → | Inline joins (~User@2001-4dd7-bc56-0-9df6-8597-3530-1076.ipv6dyn.netcologne.de) |
| 23:51:21 | → | Zemy joins (~Zemy@72.178.108.235) |
| 23:51:21 | × | Zemy_ quits (~Zemy@72.178.108.235) (Read error: Connection reset by peer) |
| 23:57:11 | → | machinedgod joins (~machinedg@d75-159-126-101.abhsia.telus.net) |
All times are in UTC on 2026-01-23.