[ I'll answer the other questions, but here is a technical problem that needs to be solved before using Genifer for real tasks... ]
I think we can integrate Genifer as a logic programming language with another industrial-grade (possibly functional) programming language. Some candidates are Lisp, Scheme, Clojure, Haskell, ...etc. (I'm also looking into SmallTalk and Squeak though they're OO rather than functional -- just for exploration).
The essence of a functional language is that it evaluates functions.
The Genifer logic programming language offers this:
1. Composition of concepts returns a logical object. For example,
"linked ◦ lists"
"recursive ◦ functions"
"binary ◦ operator"
are objects. Another way is to think about them as logic terms that are not yet propositions.
2. In a Genifer program, a bare proposition is automatically added to the KB. It can be a simple fact such as:
"3 is an odd integer."
or an implication statement such as:
"X is divisible by 2 <- X is even."
3. A Genifer program can ask queries such as:
"17 is even ?"
And also generalize from examples using inductive learning.
So, what I need is a way to integrate the logical and functional languages.
In Genifer's logic, there is no notion of functions, only composition. But we can regard
sine ◦ x
as the function application
sin(x)
provided that "sin" is registered as a special atom, ie, that it is a function symbol. Then Genifer logic can emulate functions.
This provides the link to mix Genifer logic with functional programming.
Whether Genifer language is part of functional language, or the functional language is part of Genifer language, is unimportant -- what is important is the end result: that Genifer logic can be mixed with functional programming. It's just a question of whose parentheses are wrapping around whom, ie, mere syntax.
Now the question is, how to implement this extension of a functional language? Which language / platform is easiest to do that? ( Notice that Haskell's type system can be compatible with Genifer logic, as I explained before. )
Maybe we build a Genifer interpreter that accepts Genifer logic statements, but also accepts functional program constructs (ie, both function definitions and function calls). Then Genifer interpreter can invoke the functional language to "eval" things, whenever it recognizes function symbols.
That seems very close to writing programs in English... =)
KY