thinking a lot about selective applicative functors these days

they’re very delicate objects because they’re all about “liberties constrain, constraints liberate” and navigating the interplay of producer vs consumer, interface vs implementation

in particular, they make the opposite tradeoff of most contracts: implementations get a lot of freedom, while users of the interface don’t get to assume as much about behavior of the implementations

this also means that for a given type, there are likely to be many more selective instances you would consider, than monad or applicative instances!

anyways my main things are:

  • I want to think about what selective parsers look like (they’re not context-free, but their choices are limited – can they be integrated with LR parsing techniques? I think so!)
  • I want to make compiler implementations using the language of selective applicatives, in particular with compiler state being a semilattice
  • enhanced API to encode exclusive branching, not just optional branching

You must log in to comment.