{
  "$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"
}