{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreigukpza7bwcgjqc6kkgatgkqpiofdur5uzv3atxl2hsp5agn535pm",
"uri": "at://did:plc:pi6woz4d47bkuws673w2il2r/app.bsky.feed.post/3mmy7lwwoh3e2"
},
"path": "/t/homomorphic-static-analysis/14146#post_7",
"publishedAt": "2026-05-29T09:19:38.000Z",
"site": "https://discourse.haskell.org",
"tags": [
"“Causal Commutative Arrows”",
"Haskell 2021 - Evaluating Linear Functions to Symmetric Monoidal Categories"
],
"textContent": "maralorn:\n\n> (I looked into this and my impression is that 2. is only really possible for “Causal Commutative Arrows”, which is quite restrictive.)\n\nYeah, that was basically also the premise of this talk:\n\nHaskell 2021 - Evaluating Linear Functions to Symmetric Monoidal Categories\n\nHowever, I don’t understand why you would want this pointfree style and not just use the tried and true approach of (pointful) syntax. You can just define a data type like:\n\n\n data Program\n = Parallel Program Program\n | Sequential Program Program\n | Var String\n | Lambda String Program\n | App Program Program\n | Print String\n -- ... etc\n\n\nIf you want you can even make this intrinsically typed and extensible.\n\nIs it just because arrows have some built-in syntax? In that case it sounds simpler to me to extend GHC with more overloaded syntax (like Conal Elliott did with his work on compiling to categories).",
"title": "Homomorphic static analysis"
}