1. 33
  1. 12

    The star-studded author list should probably be reassuring, but I’m seeing three related problems:

    1. The proposed model requires domains and only works along the same lines as e.g. Haskell, where the model involves associating an infinite extent to every finite value, or adding a new bottom value WRONG to the domain.
    2. But, unlike Haskell, the proposed model doesn’t quite work even by the fast and loose approach; the appendix on denotational semantics has counterexamples.
    3. And at the same time, there is an entire world of languages like miniKanren and Datalog which can be modeled with sets and relations, and these languages have genuine functions. (I think miniKanren could also be given domain-theoretic semantics, but I’ve never needed to think of it that way.)

    Now, there might be a decent answer for this. We should expect that any category of functions has an associated category of relations, and we should further expect that a move from “functional programming” to “functional logic programming” (whatever those phrases might mean) would be a move from some starting category C to a relational category Rel(C). Perhaps there is a domain-theoretic way to build such a category. (The standard approach would start with Span(C), but I don’t immediately see how that would work.)

    This isn’t a bad paper, but I feel like it is Curry-specific and can only really be applied to logic programming which extends Haskell.

    1. 4

      I feel looking at the denotational model too closely misses the thrust of the paper: having a easy-to-reason-with rewrite-based semantics for the language. They write that the denotational semantics is given only as a sketch, and that the full denotational semantics is the subject of another paper.

      I do not think Rel will help here, since Rel gives an analogue of relations, while the semantics that we would need need to have some notion of ordering. If there is some way to generically build a category of combinatoriall species associated to a category C, we could use this to build “list”s and “trees” and so forth, modelling the (ordered) sequence of choices the semantics needs. You know more about this than I do, so I’m curious to hear what you think!

      1. 2

        I think that you may be right. We don’t yet know the full details of how this core language will be compiled, or how its virtual machines will be distributed across multiple machines, so it probably is premature to worry about semantics.

        I don’t mean to be negative – for the Curry community, this seems like a big deal.

    2. 6

      Presentation with SPJ now available: https://www.youtube.com/watch?v=832JF1o7Ck8

        1. 3

          Thank you! This context was useful. It seems like they are extending the ToonTalk approach to shared worlds (concurrent constraints over a logically-described world) instead of the Electric Communities approach (concurrent actors passing messages while embodied in a spatial world).

        2. 1

          I have to keep reminding myself that this is unrelated to the Verse 3D networking protocol.

          1. 1

            I didn’t know SPJ moved from MSR to Epic, that is kinda cool.

            1. 1

              I like that idea of (var:type) to introduce a variable into scope. But I gotta say this makes me feel like a lot of every day devs won’t like this. Already the language is too FP heavy for most… Why not just take a subset of TypeScript or something… (My preference would be to use Standard ML as the basis and build on this)