Talk:Relational programming

Yeah I am not happy with the references either. Will work on it.

Discussion
The major streams are
 * Logic programming
 * Narrowing
 * miniKaren
 * binary relation

I dont think it is right to have relational programming just link through to logic programming. Logic programming appears to me to be one of the less important forms of relational programming.

I will work on the references, but one possibility is to move the stuff on narrowing elsewhere. But have a short description and link here.

Let me know what you think.

Thepigdog (talk) 03:04, 3 November 2014 (UTC)


 * How is it "less important" than the other variants? Looking at some bibliometrics on GScholar, we have 37 citations for The Reasoned Schemer, making it the most widely-cited of the references cited at miniKanren, in fact endangering the notability of that topic. By contrast, The Art of Prolog has 2594 citations (and a few more because GScholar didn't deduplicate properly, but the order of magnitude difference is clear). The references cited by Narrowing of algebraic value sets have low citation counts as well, except the book Programming with Constraints, but that's not only about narrowing. Q VVERTYVS (hm?) 10:16, 3 November 2014 (UTC)


 * Aside, miniKanren is called "an embedded Domain Specific Language for logic programming" on its own website. Q VVERTYVS (hm?) 10:19, 3 November 2014 (UTC)


 * Hmmm, I am not going to argue with you. If I did I would point out that logic programming is great for academics but is not good for most practical purposes, because it is simply not flexible enough.
 * But you win. What do you want?
 * Complete roll back.
 * Further discussion.
 * More citations.
 * Indicate your wish and I will make it so.
 * Thepigdog (talk) 10:39, 3 November 2014 (UTC)


 * Not flexible enough? Seriously, point out any industrial uses of miniKanren or narrowing or other "non-logical" relational programming (apart from SQL, which apparently is not included in the present definition (?)). Logic programming is not exactly mainstream, but I can point out some applications (current and past) at IBM, Boeing, Microsoft and elsewhere.
 * As for what "I wish", I'm not the boss around here. If you have further references, by all means, cite them or post them here. Q VVERTYVS (hm?) 12:48, 3 November 2014 (UTC)


 * No I don't care about miniKanren, although it is interesting in some ways. I only care about narrowing. Narrowing has hardly got started I know. But the potential is there. I have not found all the references I want.
 * I know logic programming is powerful and constraint logic programming even more so. In specific situations they are powerful.
 * But as for being useful to the average hack programmer, never. They are not flexible enough, or easy enough to understand in a particular way. Hack programmers work by modifying code, without understanding the broader context.
 * If you want me to move the narrowing stuff to another page that can be done, either now or later. I give you the power to decide. I wont dispute it. This is your article. Say what you want and I will agree and it is done.
 * If you want to roll it back let us do it. Otherwise I suggest we work together to make it better.
 * Thepigdog (talk) 13:27, 3 November 2014 (UTC)
 * SQL is OK in some ways. But it is not my main focus.
 * Thepigdog (talk) 13:46, 3 November 2014 (UTC)


 * Nothing is "my article". I'm just worried that this page goes against WP:OR (in particular, WP:SYN). For starters, I'm confused as to the definition of relational programming: from what I've read so far, there doesn't seem to be much of a consensus on this. Byrd (p. 6) defines it as "a discipline of logic programming in which every goal is written as a pure relation". LIBRA-style "binary relation programming" (?) seems to be one of the attempts to create functional logic programming (alongside LambdaProlog and other projects, but with less success). Q VVERTYVS (hm?) 15:22, 3 November 2014 (UTC)


 * Hmmm, my definition is where the inputs and outputs are constrained in a way that is symmetric. That is the output or inputs may be determined by the known values.
 * The mathematical idea of a relation is involved. A relation is regarded as a table of values where there is no limitations on the cardinality of values in columns.
 * So a function is in general a (1 or many) to one relation. So inverses of functions may not be functions but are relations.
 * Logic programming deals with relations but the outputs are Boolean and asserted true. But any input can be given a value by a relation.
 * CLP adds to this the idea of constraints that Stuckey and others worked on but added on top of LP.
 * Laziness is a key feature for making recursion useful, but LP is based on resolution and is not lazy.
 * I think true relational programming is implemented by narrowing of value sets. The order of evaluation is based on working backwards from the known values. The order should also minimize combinatorial explosion, which means choosing deductions first with smaller value sets.
 * Thats the way I see it.


 * Resolution is a particular technique related to a normal form of boolean expressions. This is a powerful and and important technique but for me it seems wrongly applied in LP.

Relational model of state.

 * “the theory of arrays”
 * from SAT modulo theories and earlier verification
 * McCarthy, J. Towards a mathematical science of computation. In IFIP Congress 62 (1962).

Thepigdog (talk) 03:45, 6 November 2014 (UTC)